Hola hironakamura2009, de momento puedo ver un par de errores en tu programa. Primero debes cambiar el fuse XT por HS y luego debes quitar la instrucción set_TIMER0(67); del bucle while y colocarla dentro de la interrupción. Te quedarían las instrucciónes así:Código: C
#fuses HS,NOWDT,NOPROTECT,NOLVP //Configuramos los fuses . . . #int_TIMER0 void TIMER0_isr(void) { output_toggle(LED1); //Cambiamos el estado del Led1 set_TIMER0(67); //inicializa el timer0 }
Saludos!
Hola hironakamura2009, de momento puedo ver un par de errores en tu programa. Primero debes cambiar el fuse XT por HS y luego debes quitar la instrucción set_TIMER0(67); del bucle while y colocarla dentro de la interrupción. Te quedarían las instrucciónes así:Código: C
#fuses HS,NOWDT,NOPROTECT,NOLVP //Configuramos los fuses . . . #int_TIMER0 void TIMER0_isr(void) { output_toggle(LED1); //Cambiamos el estado del Led1 set_TIMER0(67); //inicializa el timer0 }
Saludos!
Gracias por responder, lo tomare en cuenta, lo simulare haber si reacciona :-/....
Lo de HS ya lo había cambiado, solo faltaba lo del while, pero gracias por tu consejo, ya funciona bien, no exacto supongo por el tiempo de las instrucciones y no se hasta que frecuencia podría sacar con el timer 0, porque quise sacar 1us y no me los daba, ¿como podría saber el limite?Tengo entendido que puedo utilizar el modulo PWM del PIC.
Gracias...
Lo de HS ya lo había cambiado, solo faltaba lo del while, pero gracias por tu consejo, ya funciona bien, no exacto supongo por el tiempo de las instrucciones y no se hasta que frecuencia podría sacar con el timer 0, porque quise sacar 1us y no me los daba, ¿como podría saber el limite?Tengo entendido que puedo utilizar el modulo PWM del PIC.
Gracias...
El tiempo que puedes contar dependerá de la frecuencia de trabajo, de si utilizas o no presscaler. En algunos pic18F el timer0 puede trabajar en 8 o 16 bits, por lo tanto la cuenta también dependerá de ello (aunque afectaría al máximo tiempo que pueda contar y no al mínimo).
Por lo general, la entrada del timer puede seleccionarse entre un pin o la frecuencia de trabajo (que no es la misma que la del cristal).
Para saber el tiempo mínimo se puede recurrir a lo siguiente.... T = 1/((frecuencia de entrada/prescaler)/cantidad de cuentas) o T = 1/frecuencia * prescaler * (cantidad de cuentas) . Siendo cantidad de cuentas, el valor total que puede contar el timer0 - (menos) el valor preseteado.
Obviamente ello será un estimativo, ya que hay que agregarle el tiempo que consuman las instrucciones.