TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: jaldales en 28 de Octubre de 2003, 10:30:00
-
Pues como dije en un post anterior tengo problemas al salir de la interrupción. Mi pregunta es si puedo leer y escribir el contador de programa para que cuando salga de la interrupción le cambie el lugar desde donde saltó.
¿Se puede hacer?¿Como?
GRACIAS
-
Se puede modificar el CP, pero no es muy aconsejable hacerlo porque si nomas.
De hecho cuando haces una tabla de saltos le estas cambiando el valor CP, pero aun conservas el control porque lo llamaste con un Call.
Yo te diria que si estas necesitando contar desde un evento deberias hacer dos tipos de interrupcion juntas, una utilizando el timer0, por ejemplo, y generando una base de tiempo muy estable, por ejemplo del milisegundo.
Cada vez que cae la interrupcion incrementas el conteo de tiempo y repones la interrupcion.
La otra interrupcion podrias hacerla por RB0 y generar alli el flag para detectar el evento externo de llegada de señal.
Con ello el programa principal es sencillo, ya que pones en marcha la interrupcion del timer0, envias el pulso hacia donde quieres medir, habilitas le interrupcion por RB0 y pones a cero el contador de tiempo de llegada (todo esto junto).
Luego esperas dos tipos de interrupcion, uno del Tmr0, que incremente el conteo y reponga, y la otra por entrada de señal en RB0, donde inmediatamente guardas la cuenta acumulada.
Mientras tanto afuera haces un loop esperando las interrupciones, por ejemplo con goto $, que te lleva un solo lugar mas arriba....



