Ho modificato la MCU nel conf.oil, e a ricontrollare la sezione dei timer non mi sembra esserci incorrettezze. Ho provato a riprogrammare a 40 MHz, come da manuale, ma le frequenze continuano a non tornare.
Riporto di seguito la sezione dei timer e quella del conf:
| Code: : |
void configureTimers(void)
{
T2CON = 0x0100; //0000000100000000 @ 16bit
PR2 = 0xFFFE;
IEC0bits.T2IE = 0;
T1CON = 0x0100; //0000000100000000
TMR1 = 0;
//setto il perio register di timer 1
//voglio avere 2500 interrupt al secondo in modo da settare il relAlarm //del
//task motori con 50 in modo che mi generi 50 allarmi al secondo
// 80 MHz
// PR1 = 0x3E80;
// 60 MHz
PR1 = 0x2EE0;
IPC0bits.T1IP = 5;
IFS0bits.T1IF = 0;
IEC0bits.T1IE = 1;
T1CONbits.TON = 1;
}
void configureClock(void){
/* Clock setup */
CLKDIVbits.DOZEN = 0;
CLKDIVbits.PLLPRE = 0;
CLKDIVbits.PLLPOST = 0;
PLLFBDbits.PLLDIV = 58; //multiply for 60 (4 / 2 * 60 / 2 = 60MHz)
// PLLFBDbits.PLLDIV = 78; //multiply for 80 (4 / 2 * 80 / 2 = 80MHz)
/* Wait for PLL to lock */
while(OSCCONbits.LOCK!=1);
}
CPU mySystem {
OS myOs {
EE_OPT = "DEBUG";
CPU_DATA = PIC30 {
APP_SRC = "code.c";
MULTI_STACK = FALSE;
ICD2 = TRUE;
};
MCU_DATA = PIC30 {
MODEL = PIC33FJ256MC710;
};
BOARD_DATA = EE_FLEX {
USELEDS = FALSE;
};
KERNEL_TYPE = FP;
};
TASK PWM {
PRIORITY = 1;
STACK = SHARED;
SCHEDULE = FULL;
};
TASK calculate {
PRIORITY = 2;
STACK = SHARED;
SCHEDULE = FULL;
};
COUNTER myCounter;
ALARM alarmPWM {
COUNTER = "myCounter";
ACTION = ACTIVATETASK { TASK = "PWM"; };
};
};
|
Nel main infine viene aggiunto "SetRelAlarm(alarmPWM, 10, 50);" per iniziare gli interrupt.
Volevo sapere quindi se dal prototipo alla versione definitiva non ci siano stati dei cambiamenti nel range delle frequenze o nel codice esecutivo.
Grazie per l'attenzione.