• Martes 5 de Noviembre de 2024, 10:30

Autor Tema:  Registro "rcon" Del 16f876  (Leído 5714 veces)

Pegasux

  • Miembro MUY activo
  • ***
  • Mensajes: 130
    • Ver Perfil
Registro "rcon" Del 16f876
« en: Domingo 4 de Noviembre de 2007, 21:37 »
0
Muy buenas. Tengo un problema con la interrupcion del timer1 en un programa básico. Todo esta bien aparentemente, solo que no salta al vector de interrupcion (0x04h).
Tengo un libro de los pic 16F87X y 18FXXX, en el cual, en el capitulo de interrupciones, me habla de un registro "RCON" que contiene el bit "IPEN" que sirve para permitir las interrupciones. Sorprendentemente, en el mapa de registros este "RCON" no aparece en ningun banco y el MPLAB tampoco lo reconoce. Al principio pensé que por culpa de no configurar este registro no me funciona el programa, pero ahora creo que o bien es de la serie 18, o bien es un gazapo en el libro. El caso es que el programilla no me funciona en la simulación y no se porque. ¿Alguien me puede ayudar?
Gracias y un saludo.

Alternative

  • Miembro MUY activo
  • ***
  • Mensajes: 176
    • Ver Perfil
Re: Registro "rcon" Del 16f876
« Respuesta #1 en: Lunes 5 de Noviembre de 2007, 06:00 »
0
SAludos..
Mira nose que manual estas checando pero para TMR1  selo se utilizan los registros

INTCON
PIR1
PIE1
TMR1L
TMR1H
T1CON

no existe ningun registro que dices que utilizas
asi que te recomiendo que cheques el DataSheet
descargalo de la pagina de microchip  :hola:

Pegasux

  • Miembro MUY activo
  • ***
  • Mensajes: 130
    • Ver Perfil
Re: Registro "rcon" Del 16f876
« Respuesta #2 en: Lunes 5 de Noviembre de 2007, 08:38 »
0
Gracias por la respuesta. Bueno, ahora que ya sabemos que ese registro no existe, no se porque no me funciona el programa, las interrupciones del timer1 y la general estan habilitadas, el timer cuenta y se produce el bit de aviso al sobrepasar el contador, pero no salta al vector de interrupción. El codigo es muy sencillo, solo hay una rutina de retardos. ¿Alguien puede echarle un vistazo?
Gracisa de nuevo y un saludo.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Alternative

  • Miembro MUY activo
  • ***
  • Mensajes: 176
    • Ver Perfil
Re: Registro "rcon" Del 16f876
« Respuesta #3 en: Miércoles 7 de Noviembre de 2007, 01:45 »
0
SAludos Pegasux
Esta bueno eso de que para una pregunta que sabes respondes.
Bueno me alegrastes el dia  :D
Rapido en tu programa te estas equivocando de
bancos checa que el PIR1 y PIE1 esta uno en
banco 1 y otro en banco 2
al simularlo en MPLAB puedes ver que cuando hay
un desbordamiento se activa TMR1F, es decir tu bandera

Saludos

Pegasux

  • Miembro MUY activo
  • ***
  • Mensajes: 130
    • Ver Perfil
Re: Registro "rcon" Del 16f876
« Respuesta #4 en: Miércoles 7 de Noviembre de 2007, 14:12 »
0
Hola Alternative. Gracias por contestar. No se a que te refieres exactamente, en el datasheet viene el PIR1 en el banco 0 y el PIE1 en el banco 1, yo programo el PIE1 con el banco 1 seleccionado y en la simulación lo hace bien, el PIR1 no tengo que programarlo, creo que sirve para implementar la rutina general de atencion a la interrupcion cuando esta salta, pero no salta al vector de interrupción, asi que no entiendo bien lo que ocurre.

Saludos y gracias!!

Alternative

  • Miembro MUY activo
  • ***
  • Mensajes: 176
    • Ver Perfil
Re: Registro "rcon" Del 16f876
« Respuesta #5 en: Miércoles 7 de Noviembre de 2007, 23:58 »
0
SAludos
perdon era uno en el banco 0 y otro en el banco1
con eso de las apuraciones no escribi bien los numeros
pero cheque rapido que los estas manipulando en el
banco erroneo, dele un vistazo al manejo de tus bancos

saludos
 :hola:

Pegasux

  • Miembro MUY activo
  • ***
  • Mensajes: 130
    • Ver Perfil
Re: Registro "rcon" Del 16f876
« Respuesta #6 en: Jueves 8 de Noviembre de 2007, 14:14 »
0
Muy buenas de nuevo. Pues la verdad es que sigo sin entender lo que me quieres decir, el registro PIE1 esta en el banco 1, y yo habilito la interrupción del  en el banco uno:

                bsf   STATUS,RP0   ;Banco 1
      bcf   STATUS,RP1

      movlw b'00000001'   ; habilita solo irq del timer1
      movwf   PIE1

El registro INTCON esta en todos los bancos, asi que habilito interrupciones sin mas:

                movlw b'10000000'   ; habilita bit IE
      movwf   INTCON

Para comenzar la cuenta hemos de pasar al banco 0 y programar el T1CON:

                bcf   STATUS,RP0   ; banco 0
      movlw   b'11111001'   ; encendemos timer
      movwf   T1CON

Finalmente, el registro PIR1 si que esta en el banco 0, pero solamente nos indica la causa de la interrupción, no veo que haya que programar nada en el hasta que salte a la rutina general de atencion a la interrupción, pero precisamente el problema que tengo es que no salta y por tanto el registro PIR1 no tengo la oportunidad de usarlo.
¿Quizas esta mal el orden de programar los registros?

Saludos y gracias de nuevo.

Alternative

  • Miembro MUY activo
  • ***
  • Mensajes: 176
    • Ver Perfil
Re: Registro "rcon" Del 16f876
« Respuesta #7 en: Viernes 9 de Noviembre de 2007, 00:19 »
0
SAludos
me puse achecar el datasheet y encontre l solucion y el error que estas cometiendo al interpretrar mal el uso del TMR1, te explico

TMR0
Temporizador, te genera una interrupcion por desbordamiento
asi que cuando pasa TMR0=0xFF a TMR0=0x00 te produce
una interrupcion y salta a ORG 4 y posteriormente realizas
tu programa retornando con retfie y limpiando tu bandera

TMR1 y TMR2
Son temporizadores como contadores, cuando ocurre un desbordamiento
es decir cuando pasa de 0xFF a 0x00 los registros TRM1H y TMR1L
solo te genera 1 su bandera (TMR1IF) y no te genera una interrupcion
por desbordamiento sino un abido por desbordamiento en el registro TMR1IF

Saludos y suerte  :hola:

Pegasux

  • Miembro MUY activo
  • ***
  • Mensajes: 130
    • Ver Perfil
Re: Registro "rcon" Del 16f876
« Respuesta #8 en: Viernes 9 de Noviembre de 2007, 14:50 »
0
Muchas gracias por la respuesta, ahora ya parece que sabemos porque no funciona, pero tengo un lio enorme, porque tanto en el datasheet que tengo  (16F87XA)como en el libro que tengo, dice que provocan interrupción, aunque lo que tambien es cierto, que  el mio es 16F876 sin A (el viejo), es posible que esa sea la causa del error, no se. Esta tarde me pasare a consultarlo por la biblioteca de la universidad, tienen unos cuantos libros de PIC's.
En cualquier caso no hay problema con la interrupción, como no es crítico y tengo que usar tambien el timer 0, comprobare el flag del timer 1 con la rutina de atencion del timer 0, y aproximadamente 1 de cada 10 veces que salte la irq del timer 0 me hará lo que queria hacer con el timer 1 y asunto solucionado.

Muchas gracias y un saludo!!

Pegasux

  • Miembro MUY activo
  • ***
  • Mensajes: 130
    • Ver Perfil
Re: Registro "rcon" Del 16f876
« Respuesta #9 en: Sábado 10 de Noviembre de 2007, 13:50 »
0
Ya he cambiado al tmr0 y ahora hace bien lo de los 2 timers en la simulacion, tal y como esperaba, aunque no he llegado a encontrar lo de la interrupcion del tmr1, solo falta montarlo a ver que pasa  :D
Muchas gracias y un saludo.

Pegasux

  • Miembro MUY activo
  • ***
  • Mensajes: 130
    • Ver Perfil
Re: Registro "rcon" Del 16f876
« Respuesta #10 en: Sábado 17 de Noviembre de 2007, 20:30 »
0
Solucionado!! Hay que activar el bit PEIE del registro INTCON a la vez que se habilita el GIE, ya que este bit permite las interrupciones de perifericos y el timer1, timer2 y otros recursos son considerados como perifericos.
Saludos y gracias de nuevo!! :D