mal wieder Sleep beim Atmega8

OP #1532182
Hallo AVR-Begeisterte,

ich bin Anfänger und wollte mich heute den Interrupts und dem Sleep 
Modus zuwenden.
Das ist mein Code:
1
#define F_CPU 8000000L
2

3
#include <stdlib.h>
4
#include <avr/io.h>
5
#include <util/delay.h>
6
#include <avr/interrupt.h>
7
#include <avr/sleep.h>
8

9
ISR(INT0_vect) {
10
  sleep_disable();
11
}
12

13
int main(void)
14
{
15
  //interrupts deaktivieren
16
  cli();
17

18
  //DDRs setzen
19
  DDRB = 0x00; 
20
  DDRD = 0xFF; 
21

22
  //interrupts aktivieren
23
  sei();
24

25
     while(1)
26
  {
27

28
    // binaeres hochzaehlen
29
    PORTD++;
30
    _delay_ms(10);
31

32
    // wenn PB2 low, Sleep Modus aktivieren
33
    if( !(PINB & (1 << PB1)) )
34
    {
35
      set_sleep_mode(SLEEP_MODE_PWR_DOWN);
36
      sleep_mode();
37
    }
38
  }
39
}

Im Normalfall blinken die LEDs am Port D. Sobald ich den Taster an PB1 
drücke, stoppt das Blinken und die CPU fährt in den Power Down Modus.

Solbald ein H-Signal an PD6 (AIN0; Pin 12) anliegt, möchte ich, dass die 
CPU wieder hochfährt und das Blinken an alter Stelle fortsetzt. Und 
genau an dieser Stelle hänge ich fest, die CPU möchte einfach nicht 
weiter zählen.
Weiß jemand Rat? Was mache ich falsch?

(Ich weiß allerdings nicht, ob es auch möglich ist einen x-beliebigen 
Taster als Interrupt zu verwenden (?).)


Vielen Dank schon im Voraus.
Schönen (restlichen) Feiertag noch.


Grüße

mateit
OP
Hallo,

vielen Dank für die wirklich sehr schnelle Antwort.
Gut, dass du es sagst. Ich hatte den AIN0 im Sinn.
Ich müsste also PD2 als Eingang deklarieren, dort ist bloß blöderweise 
eine meiner LEDs angeschlossen.

Aber das ist alles eh nur eine Notlösung. Denn eigentlich möchte ich PB2 
(einen beliebigen Taster) als Interrupt verwenden - ist das möglich?


Gruß

mateit

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.