Autor Tema: Se puede cambiar el contador de programa manualmente?  (Leído 2125 veces)

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

Desconectado jaldales

  • PIC10
  • *
  • Mensajes: 6
Se puede cambiar el contador de programa manualmente?
« 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

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7918
RE: Se puede cambiar el contador de programa manualmente?
« Respuesta #1 en: 28 de Octubre de 2003, 12:13:00 »
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....
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.


 

anything