No consigo que me funcione una simple interrupción RB0 con flanco descendente utilizando proton IDE en un 18f4520.
Se trata de un contador de vueltas de rueda que debe incrementar su valor cada vez de la puerta RB0 se cambia de 1 a 0 mediante un sensor inductivo.
el código (solo parte de interrupción) es el siguiente:
El caso es que por cada paso del sensor me debería computar una sola vuelta. Sin embargo computa dos 2 vueltas ignorando la instrucción de flanco de bajada.
Me podría alguien orientar sobre cual puede ser el problema?
Muchas gracias de antemano.
Se trata de un contador de vueltas de rueda que debe incrementar su valor cada vez de la puerta RB0 se cambia de 1 a 0 mediante un sensor inductivo.
el código (solo parte de interrupción) es el siguiente:
Código:
Device = 18F4520
XTAL = 20
Cls
REMINDERS = 1
ALL_DIGITAL=true
Symbol INTF = INTCON.1 ' RB0 External Interrupt Flag
Symbol INTE = INTCON.4 ' RB0 External Interrupt Enable
Symbol GIE = INTCON.7 ' Global Interrupt Enable
Symbol INTEDG = INTCON2.4 ' Flag = 0 int. por flanco bajada. Flag = 1 int. por flanco subida.
GIE = 1 ' Activa interrupciones generales.
INTE = 1 ' Activa la interrupción externa RB0/INT.
INTEDG = 0 ' Hace que inicialmente la interrupción se habilite por flanco de bajada
...
On_INTERRUPT GoTo Interrupcion 'IR A INTERRUPCION
....
inicio:
.....
goto inicio
.....
Interrupcion: '-------- Decodificador de Encoder --------------
Context SAVE
vueltas = vueltas+1
vueltas2 = vueltas2 + 1
INTF = 0 .
Context Restore
El caso es que por cada paso del sensor me debería computar una sola vuelta. Sin embargo computa dos 2 vueltas ignorando la instrucción de flanco de bajada.
Me podría alguien orientar sobre cual puede ser el problema?
Muchas gracias de antemano.
Última edición por un moderador: