Martes 5 de Noviembre de 2024, 11:35
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación Específica
»
Microcontroladores
(Moderador:
© Jonathan ©
) »
Registro "rcon" Del 16f876
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Registro "rcon" Del 16f876 (Leído 5715 veces)
Pegasux
Miembro MUY activo
Mensajes: 130
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.
Tweet
Alternative
Miembro MUY activo
Mensajes: 176
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
Pegasux
Miembro MUY activo
Mensajes: 130
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
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
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
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
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
Pegasux
Miembro MUY activo
Mensajes: 130
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
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
Pegasux
Miembro MUY activo
Mensajes: 130
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
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
Muchas gracias y un saludo.
Pegasux
Miembro MUY activo
Mensajes: 130
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!!
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación Específica
»
Microcontroladores
(Moderador:
© Jonathan ©
) »
Registro "rcon" Del 16f876