Forum: Compiler & IDEs AVR erwacht nicht mehr aus Sleepmode


von Flo (Gast)


Lesenswert?

Hallo

Ich habe ein Problem mit dem Sleep-Modus.

Ich habe folgenden Code:
1
int main(void)
2
{
3
  unsigned char i;
4
5
  sei();
6
7
  DDRD  &= ~(1<<PD3);  // configure PD2 as input
8
  MCUCR |= (1<<ISC10);  // Interrupt is generated on any logic 
9
  GICR |= (1<<INT1);  // enable external interrupt 6    
10
11
12
  for (;;)
13
  {
14
    unsigned char i;
15
16
    for(i=0;i<10;i++)
17
    {
18
      PORTC |= (1<<PC2);
19
      _delay_ms(50);
20
      PORTC &= ~(1<<PC2);
21
      _delay_ms(50);
22
    }
23
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
24
      _delay_ms(500);
25
      sleep_mode();
26
  }
27
}
28
29
ISR(INT1_vect)
30
{
31
  PORTC |= (1<<PC2);
32
}

An PC2 ist eine LED. Der AVR blinkt mit der LED einige Male bevor er in 
den Schlafmodus fällt. Jedoch wacht er nicht mehr aus dem Schlafmodus 
aus. Was ich auch mit dem INT1-Pin mache, der AVR bleibt "tot".

Hat jemand eine Idee was ich falsch mache?

von Flo (Gast)


Lesenswert?

Ähm ups, bei der main-Funktion habe ich die schließende Klammer und das 
return vergessen. Aber tut nicht so viel zur Sache.

von Dennis B. (higret)


Lesenswert?

Hi

ein ext. INT kann den µC nur bei LOW LEVEL aus dem SLEEP-Mode aufwecken

von Flo (Gast)


Lesenswert?

Funktioniert, danke ;-)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Dennis B. wrote:

> ein ext. INT kann den µC nur bei LOW LEVEL aus dem SLEEP-Mode aufwecken

Zumindest bei einigen (älteren) AVRs.  Es ist also immer sinnvoll,
den exakten AVR-Typ mit dazu zu schreiben.

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.