väcka PIC från SLEEP-mode med INT0
Postat: 23 mars 2007, 13:55:57
INT0 och Timer1 interrupt är aktiverade.
PICen är en 16F88 som ligger och sover mestadels. Men som vaknar när timer1 slår runt och gör avbrott. Dock vaknar den inte när jag gör interrupt med INT0.
Däremot så ser den när den har vaknat av Timer1 att den har fått ett avbrott på INT0.
Vad är det som gör så att det inte vaknar på INT0 men Timer1?
PICen är en 16F88 som ligger och sover mestadels. Men som vaknar när timer1 slår runt och gör avbrott. Dock vaknar den inte när jag gör interrupt med INT0.
Däremot så ser den när den har vaknat av Timer1 att den har fått ett avbrott på INT0.
Vad är det som gör så att det inte vaknar på INT0 men Timer1?
Kod: Markera allt
void interrupt() {
if (PIR1.TMR1IF) {
if(counter>=tidslucka)
action=GET_TEMP;
else {
counter++;
}
PIR1.TMR1IF = 0; // clear TMR1IF
}
if (INTCON.F1) {
action = LEARN;
INTCON.F1 = 0;
}
}
void init() {
OSCCON = 0x60; // 4 Mhz
ANSEL = 0x00;
TRISA = 0xFE;
PORTA = 0x00;
T1CON = 0x0F;
PIR1.TMR1IF = 0; // clear TMR1IF
PIE1.TMR1IE = 1; // enable interrupts
INTCON = 0xC0;
Usart_Init(19200);
counter=1;
tidslucka=2;
}