PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
ankan
Inlägg: 1091 Blev medlem: 12 november 2004, 01:50:35
Inlägg
av ankan » 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?
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;
}
sodjan
EF Sponsor
Inlägg: 43251 Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Inlägg
av sodjan » 23 mars 2007, 14:05:43
Var är sleep instruktioner ?
> INTCON.F1 = 0;
I databladet heter den INTCON.INT0IF, men den kanske har
ett annat namn i ditt verktyg...
ankan
Inlägg: 1091 Blev medlem: 12 november 2004, 01:50:35
Inlägg
av ankan » 23 mars 2007, 14:06:23
Hade missat en bit på INTCON.
När jag ändå har startat en tråd. Varför fungerar inte
if (INTCON.INT0IF) men if (INTCON.F1) och if (PIR1.TMR1IF) fungerar. Kör MikroC.
ankan
Inlägg: 1091 Blev medlem: 12 november 2004, 01:50:35
Inlägg
av ankan » 23 mars 2007, 14:08:52
Sleep-anropen sker i main eftersom man ska ju ha så lite som möjligt i interrupt.
F1 betyer bit 1 i MikroC men av någon anledning fungerar det inte med INT0IF vilket borde vara standard.
sodjan
EF Sponsor
Inlägg: 43251 Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Inlägg
av sodjan » 23 mars 2007, 14:10:11
Tja, det beror väl på vad den som skrev MikroC valde att kalla dom.
Varför man skulle välja något *annat* namn än det som Microchip
har valt, förstår jag dock inte...
Sen misstänker jag att "F1" är en generell definition för "bit 1", alltså
med samma värde som INT0IF borde ha om den fanns/finns.
ankan
Inlägg: 1091 Blev medlem: 12 november 2004, 01:50:35
Inlägg
av ankan » 23 mars 2007, 14:17:14
Du har så rätt så. Det vardet jag menade.
sodjan
EF Sponsor
Inlägg: 43251 Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Inlägg
av sodjan » 23 mars 2007, 14:20:56
> Hade missat en bit på INTCON.
Jaha, och ?
Vaknar den nu ?
ankan
Inlägg: 1091 Blev medlem: 12 november 2004, 01:50:35
Inlägg
av ankan » 23 mars 2007, 14:26:14
Ja nu vaknar den som den ska. Har man inte enablat INT0 vilket jag trodde jag hade gjort så händer det inte så mycket.