Autor Tema: Dudas con tiempos en C18  (Leído 1506 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado RSC

  • PIC10
  • *
  • Mensajes: 23
Dudas con tiempos en C18
« en: 28 de Enero de 2015, 11:19:55 »
Hola a todos,(soy nuevo, saludos a todos  :-/ ) tengo 2 dudas en C18, uso un 18f4550 y un cristal de 8Mhz
1) como hago para poner mas de 1 segundo de retardo con la libreria delay.h? usando el maximo rango que es Delay1oKTCYx(i); (Retardos en múltiplos de 10000) donde i tiene que tomar valores hasta 255
usando mi cristal de 8Mhz llego al calculo de 1 segundo con i=200, si yo quiero poner mas segundos, por ejemplo 3 segundos, tengo que poner 3 veces Delay10KTCYx(200);?
2) otra duda, no se si esto es multihilos pero no se como resolverlo, imagínense que quiero hacer parpadear un led y a la vez hacer funcionar un motor paso a paso(al mismo tiempo) el codigo quedaria algo asi

void main(){
while(1){
parpadear led
}
while(1){
girar continuamente paso a paso
}
}
el codigo ejecuta de arriba a abajo y ese es mi problema, yo no encuentro la forma de que los codigos se ejecuten simultáneamente, que parpadee el led y que tambien gire el paso a paso a tiempos distintos,el problema es que hay 1 solo timer que es el delay, como hago para agregar mas timers en C? en delphi(pascal) los timers pueden ejecutarse al mismo tiempo, como lo hago aca? tendria que ser algo como esto?

desde ya gracias, saludos

Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: Dudas con tiempos en C18
« Respuesta #1 en: 28 de Enero de 2015, 11:47:17 »
Si necesitas que tu programa se maneje en base a tiempos necesitas trabajar con interrupciones.

Para hacer un programa multitarea debes usar banderas (flags) que indiquen un estado de alguna entrada para cambiar el estado de por ejemplo el motor.

Espero no te moleste mi sugerencia, pero quizas podrias iniciarte a programar con algun ejemplo ya funcionando y de esa formas puedes ir conociendo la forma de programar.

Te dejo un link de un cursillo
http://www.todopic.com.ar/foros/index.php?topic=17017.msg114250#msg114250
Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.

Desconectado RSC

  • PIC10
  • *
  • Mensajes: 23
Re: Dudas con tiempos en C18
« Respuesta #2 en: 28 de Enero de 2015, 12:13:48 »
Si necesitas que tu programa se maneje en base a tiempos necesitas trabajar con interrupciones.

Para hacer un programa multitarea debes usar banderas (flags) que indiquen un estado de alguna entrada para cambiar el estado de por ejemplo el motor.

Espero no te moleste mi sugerencia, pero quizas podrias iniciarte a programar con algun ejemplo ya funcionando y de esa formas puedes ir conociendo la forma de programar.

Te dejo un link de un cursillo
http://www.todopic.com.ar/foros/index.php?topic=17017.msg114250#msg114250

al contrario, muchas gracias por el curso ^^ , tengo una duda, los flags son equivalentes a los bool? osea, lo unico que te devuelve es un estado logico true o false que definis segun el programa, mis proyectos funcionando en c son parpadeo de led, motor pap, l293, lcd y lo basico de adc y pwm, pero me surgio esa duda de multitarea, me voy a sumergir en interripciones, gracias!!

Desconectado willynovi

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 546
Re: Dudas con tiempos en C18
« Respuesta #3 en: 28 de Enero de 2015, 15:08:51 »
Los flags yo los uso tanto como valores digitales o analogicos, depende del programa.

Por ejemplo a veces uso un registro de 8 bits y uso cada bit para conocer el estado digital de 8 variables.
Intento enseñarte a pescar, si solo quieres pescados, espera que un pescador te regale los suyos.