väcka PIC från SLEEP-mode med INT0

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
ankan
Inlägg: 1091
Blev medlem: 12 november 2004, 01:50:35

väcka PIC från SLEEP-mode med INT0

Inlägg av ankan »

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 »

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 »

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 »

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 »

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 »

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 »

> 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 »

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.
Skriv svar