-         

Ergebnis 1 bis 7 von 7

Thema: AtMega32 erwacht nicht mehr aus sleep-mode

  1. #1
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    23
    Beiträge
    656

    AtMega32 erwacht nicht mehr aus sleep-mode

    Anzeige

    Hallo,

    ich habe ein kleines Problem: Ich habe hier einen AtMega32, den ich wenn mein Programm gerade nichts macht in einen sleep-mode (ich habe Power-down und Idle probiert) versetzen möchte. Das klappt auch, nur leider erwacht er weder bei einem externen Interrupt an INT0 noch bei einem an INT1. Ich betreibe ihn mit dem internen Oszillator und benutze die Funktionen aus avr/sleep.h (programmiere in C).

    Ich hoffe ihr könnt mir helfen,
    mfg _R2D2

  2. #2
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Der Interrupt muß auch zugelassen sein (SEI) und aus dem Power down Mode sollte nur der Level interrupt gehen, keiner auf Flanken. Aus dem Idle Mode sollte eigentlich jeder Interrupt reichen.

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    23
    Beiträge
    656
    Der Interrupt muß auch zugelassen sein (SEI) und aus dem Power down Mode sollte nur der Level interrupt gehen, keiner auf Flanken. Aus dem Idle Mode sollte eigentlich jeder Interrupt reichen.
    sei(); ist klar, aber was soll ein Level-Interrupt sein?

  4. #4
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Bei den externen Interrupts kann man im Register MCUCR einstellen wann der Interrupt ausgelöst werden soll. Da kann man wählen zwischen: low level, jede Veränderung, steigende oder fallende Flanke. Nur der erste Fall reicht aus um aus dem Power down mde aufzuwachen. Im Datenbaltt des M32 ab Seite 66.

  5. #5
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    23
    Beiträge
    656
    Ich betreibe den µC mit 3 AA Batterien und möchte, dass er nicht alzu viel Strom verbraucht, damit die Batterien einige Zeit halten. Spart man denn mit Idle schon viel Strom? Bei dieser Betriebsart sind doch noch die meisten internen Clocks aktiv.
    Welcher Mode würde sich denn am besten eignen, wenn ich möglichst viel Strom sparen möchte und den µC durch eine Zustandsänderung an INT1 oder durch eine fallende Flanke an INT0 oder INT2 aufwecken will?

  6. #6
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Wenn man auf die fallende Flanke (Int0 oder Int1) reagieren will geht das mit dem Power down modus. Es ist dann zwar nicht die Flanke selber, sonder der low Zustand danach, aber das sollte einem Egal sein. Man wird nur dann den Interrupt erst einmal wieder deaktivieren müssen bis man wieder in den power down modus wechslen will. Sonst kreigt man wohl dauernd eine Interrupt nach dem anderen, solange der Pin auf low ist.


    Es hängt vom Takt ab, aber Idle braucht schon etwas mehr Strom. Wenn man nur 32 kHz Takt nimmt, würde aber auch der Idle Mode noch ganz gut gehen. Der Mega32L würde wohl auch mit nur 2 Battereien (3 V) klarkommen.

  7. #7
    Erfahrener Benutzer Roboter Experte Avatar von BurningWave
    Registriert seit
    22.12.2007
    Ort
    nahe Stuttgart
    Alter
    23
    Beiträge
    656
    Lohnt es sich denn überhaupt den µC in Idle zu versetzen oder verändert sich dadurch der Stromverbrauch nur gering? Ich brauche 4,5V, da ich mit den Batterien auch noch ein LCD-Display betreibe, das ich aber während der µC im Idle-Modus ist ausschalten würde. Der Takt beträgt momentan 1MHz (interner Oszillator), aber später baue ich noch einen Quarz mit 3,6864MHz ein.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •