Estoy usando PIC32 y estoy haciendo un ejemplo de temporizador. Estoy utilizando el ejemplo de Timer1 proporcionado en documentos de microchip. Mi entendimiento con los temporizadores es cuando nuestro programa principal se inicia, el temporizador también comienza con un tiempo determinado. Entonces su ISR comienza a funcionar con el tiempo dado. ¿Es posible iniciar el ISR cuando queramos? Por ejemplo, si se presiona un botón, se debe llamar al temporizador ISR.
#include <plib.h>
#pragma config FNOSC = FRCPLL, FPLLMUL = MUL_20
#pragma config FPLLODIV = DIV_1, FPBDIV = DIV_8
#pragma config POSCMOD = OFF, FWDTEN = OFF
#define FOSC 80000000
#define PB_DIV 8
#define PRESCALE 256
#define TICKS_PER_SEC 4
#define T1_TICK_RATE (FOSC/PB_DIV/PRESCALE/TICKS_PER_SEC)
int main(void)
{
OpenTimer1(T1_ON | T1_SOURCE_INT | T1_PS_1_256, T1_TICK_RATE);
ConfigIntTimer1(T1_INT_ON | T1_INT_PRIOR_3);
INTEnableSystemMultiVectoredInt();
while(1)
{
//... do something useful here ...
};
}
void __ISR(_TIMER_1_VECTOR, ipl3) Timer1Handler(void)
{
mT1ClearIntFlag();
}
Cómo llamar a __ISR(_TIMER_1_VECTOR, ipl3) Timer1Handler(void)
cuando queremos en nuestro programa.