Hla:
Acuda ahora con una duda sobre interrupciones de un temporizador:
El codigo es el siguiente, esta programado en c32 en pic32 starter kit:
#include <plib.h>
// Configuration Bit settings
#pragma config FWDTEN = OFF
#pragma config POSCMOD = XT, FNOSC = PRIPLL, FPBDIV = DIV_1
#pragma FPLLIDIV = DIV_2, FPLLMUL = MUL_20, FPLLODIV = DIV_2
//
int main(void){
SYSTEMConfigPerformance(80000000L);
// temporizador:
OpenTimer3(T3_ON|T3_SOURCE_INT|T3_PS_1_1,0x014);
ConfigIntTimer3(T3_INT_ON | T3_INT_PRIOR_7|T3_INT_SUB_PRIOR_3);
//interrupcciones multivector
INTEnableSystemMultiVectoredInt();
mPORTDDirection(0x0000); //todo d salida
while(1){
}
}
//
void __ISR(_TIMER_3_VECTOR, ipl7) Timer3Handler(void)
{
PORTD^=1;
// clear the interrupt flag
mT3ClearIntFlag();
}
El problema es que este código funciona muy bien para las interrupciones de baja frecuencia, he ajustado el temporizador para cambiar la señal cada mS y funciona bien.
Pero si lo intento con una frecuencia mayor (3,96 MHz), este mismo código, simplemente deja de funcionar y la patilla ya no dara ninguna señal de salida. ¿Por qué sucede esto? ¿Está relacionado con el tiempo consumido por el llamado de la ISR? Espero que me puedan ayudar con esto que me parece muy confuso.
Gracias