Continuamos avanzando ....
Como nunca había trabajado con ningún PIC de la serie 18F estoy intentando quemar etapas una a una y no querer saltar directamente del punto de salida hasta la meta, por que si así lo hiciese solo estaría abocado a darme una soberana torta con cualquier problemilla que me encuentre por el camino. Así que ....
1º He adaptado, programado y probado el universal
Wink.c (parpadeo de un led). Todo Ok.
2º He adaptado, programado y probado el no menos universal
Echo.c (Eco mediante la RS232). Todo Ok.
3º He adaptado, programado y probado mi propio test para la
Interrupción Externa por RB0. Todo Ok.
y 4º He jugado con este último programa para empezar a probar cómo detectar un único
tren de pulsos por esta misma RB0.
La entrada que utilizo tiene conectada una
pull-up externa por lo que inicialmente configuro la interrupción externa para detectar el
flanco de bajada.
Cuando aparece el primer flanco
inicializo a 0 el Timer_1 y habilito la interrupción por desbordamiento de este mismo Timer_1.
Cada vez que me llega un flanco
conmuto al flanco contrario la configuración de la interrupción para detectar convenientemente cada flanco que me llegue.
Cada vez que me llega un flanco
guardo el valor del Timer_1 en ese momento y el número de veces que se ha
desbordado dicho Timer 1.
Si el flanco es de subida lo guardo en la
tabla de Flancos de Subida, si el flanco es de bajada lo guardo en la
tabla de Flancos de Bajada.
Si le envío por la RS232 cualquier caracter me
vuelca en la misma el contenido de
ambas tablas ....
Como puede verse en la imagen que os muestro a cada entrada de una tabla corresponde una en la otra tabla, con lo que tengo perfectamente
definido el pulso. Como sé cuanto dura cada interrupción por desbordamiento, y cada incremento del Timer tengo perfectamente delimitado tanto la
duración de cada pulso como la
separación entre ellos ...
El siguiente paso ha de ser lógicamente ampliar estas tablas, construidas para una única interrupción, para las correspondientes interrupciones de los pines
RB1 y RB2. Y
transmitir las tres detecciones hasta el
programa del PC para que realice la oportuna
representación gráfica ....
Esto va por buen camino ....
Os mantendré informados.