Autor Tema: duda con temporizador para generar señal de alta frecuencia en pic32  (Leído 3082 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
Hla:

Acuda ahora con una duda sobre interrupciones de un temporizador:
El codigo es el siguiente, esta programado en c32 en pic32 starter kit:

Código: [Seleccionar]
#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

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: duda con temporizador para generar señal de alta frecuencia en pic32
« Respuesta #1 en: 13 de Febrero de 2011, 20:29:07 »
Piensa que, una señal de 3.96 MHz tiene un periodo de 252.5 ns. Si utilizas el microcontrolador a la máxima velocidad posible (80 MIPS), cada ciclo ocupa 12.5ns, entonces en el periodo que realizas solo puedes ejecutar 20 ciclos o su equivalente, 20 instrucciones.

Acuérdate que hay que guardar el contexto y devolverlo al salir de la interrupción, es casi imposible lograrlo en tan pocas instrucciones  ;-)


Saludos1
No contesto mensajes privados, las consultas en el foro

Desconectado fram_22

  • PIC18
  • ****
  • Mensajes: 316
Re: duda con temporizador para generar señal de alta frecuencia en pic32
« Respuesta #2 en: 14 de Febrero de 2011, 02:42:43 »
Hoa suky gracias por tu respuesta. era algo de esperarse pero nunca esta de mas preguntar a quienes tienen mas conocimiento.
Eso explica la presencia de las salidas por comparacion.

Saludos!!