Forum: Mikrocontroller und Digitale Elektronik Atmega8 geht nicht in Sleep wenn INT0 und INT1 aktiv


von Matthias (matthiasm)


Lesenswert?

Hi,

ich werde noch verrückt.

Ich möchte an meinem ATMEGA8 zwei externe Interrupts verwenden. An einem 
hängt ein Taster (INT0), am anderen findet ein Levelchange von 0->1 bzw. 
von 1->0 statt wenn was passiert.

INT0 läuft wunderbar. µC braucht etwa 2mA, geht dann in Sleep und 
braucht nur noch 3µA.

Mit INT1 funktoiniert das nicht. Egal wie, was oder womit ich es 
versuche, es geht nicht. Der Controller geht nicht in den Sleep.

INT1 Pin hab ich schon mit Oszi überwacht, alles ruhig und stets auf 
GND. Hab den Pin sogar schon mal mit GND kurzgeschlossen.

Bis darauf dass ich den INT1 nicht durch den int. Pullup sondern mit 
einem externen versorge ist alles identisch.

Bitte helft mir...
1
ISR(INT0_vect) {
2
3
    
4
}
5
6
ISR(INT1_vect) {
7
  
8
9
}
10
int main(void)
11
{
12
  DDRD &= ~((1<<PWR) | (1<<VMODE)); // PWR und VMODE als Eingang festlegen
13
  
14
  PORTD |= (1<<PWR);      // Pull Up für Taster aktivieren.
15
16
// PWR und VMODE sind INT0 und INT1
17
18
   MCUCR &= ~((1<<ISC10) | (1<<ISC00));
19
   sei();
20
21
   while(1)
22
   {
23
24
       GICR  |= ((1<<INT0) | (1<<INT1));
25
       set_sleep_mode(SLEEP_MODE_PWR_DOWN);
26
       sleep_mode();
27
       GICR  &= ~((1<<INT0) | (1<<INT1));
28
       if (debounce(&PIND, PD2))
29
       {
30
     system_enable();
31
       }  
32
    } return 0;
33
}

Reduziere ich es nur auf INT0 geht es.

INT1 funktioniert nicht.

Danke :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.