Estoy usando PIC32MX795F512L
. Uso de la biblioteca de periféricos para generar la interrupción del temporizador. A continuación está el código que estoy usando:
//PIC32 is running at 72MHZ
#define FCY 72000000UL
#define FPB (FCY/2)
#define BAUDRATE 9600
#define PB_DIV 2
#define PRESCALE 256
#define TICKS_PER_SEC 4
#define T1_TICK_RATE (FCY/PB_DIV/PRESCALE/TICKS_PER_SEC)
#pragma config POSCMOD=HS,FNOSC=PRIPLL //FNOSC=PRIPLL
#pragma config FPLLIDIV=DIV_2, FPLLMUL=MUL_18, FPLLODIV=DIV_1
#pragma config FPBDIV=DIV_2, FWDTEN=OFF//, CP=OFF, BWP=OFF
#include <stdio.h>
#include <stdlib.h>
#include <plib.h>
int main(int argc, char** argv)
{
TRISDbits.TRISD9 = 0;
OpenTimer1(T1_ON | T1_SOURCE_INT | T1_PS_1_256, T1_TICK_RATE);
ConfigIntTimer1(T1_INT_ON | T1_INT_PRIOR_3);
INTEnableSystemMultiVectoredInt();
while(1)
{
}
return (EXIT_SUCCESS);
}
void __ISR(_TIMER_1_VECTOR, ipl3) Timer1Handler(void)
{
mT1ClearIntFlag();
LATDbits.LATD9 = 1;
}
Este temporizador se ejecuta a una velocidad de 250ms
pero no estoy seguro. Como soy principiante en temporizadores, no sé cómo calcular valores. Digamos que si quiero ejecutar el temporizador en 100ms
, ¿qué valores debo usar para PRESCALE
y TICKS_PER_SEC
?
Por favor ayuda
gracias.!