i main() ligger jag i en evighetsloop och väntar på avbrott och de kommer men jag kan inte släcka avbrottsflaggorna, varken för TMR1IF eller CCP1IF. Jag har även provat att skriva direkt till hela PIR1 men ingen skillnad. Vad kan det vara för fel??
MVH Robert
Kod: Markera allt
#pragma origin 4
extern interrupt isr (void)
{
clrwdt();
char save_FSR;
int_save_registers //Spara viktiga register
save_FSR = FSR;
byte i, a; //ändrat från char till byte (byte = unsigned char).
if(TMR1IF)
{
TMR1IF = 0;
overflow = ++overflow;
if(overflow > 100)
{
main(); //Starta om
}
}
if(CCP1IF)
{
PIR1 = (0b11111011 & PIR1);
tidh[period] = CCPR1H; //Spara räknarens höga register.
tidl[period] = CCPR1L; //Spara räknarens låga register.
uti = 1; //Flagga för UTI-avbrott.
CCP1IF = 0; //Viktig! Annars kan avbrott ligga och vänta och genereras osynkront med flanken.
}
FSR = save_FSR;
int_restore_registers //Hämta sparade register
}