mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mega164 - Idle Sleep Mode richtig mit PWM?


Autor: Elias R. (e-ra)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wie schon im Betreff beschrieben möchte ich meinen Mega164 effizient 
betreiben und wenn nichts zutun ist schlafen legen.

Das Programm ist recht einfach und wartet nur ob an INT0 ein "Rising 
Edge Interrupt" ausgelöst wird und reagiert dann entsprechend. Sobald 
alles abgearbeitet worden ist soll er wieder schlafen gehen.

Die Einschränkung liegt hier wohl am Timer1 der im FastPWM Mode 
betrieben wird und niemals abgeschalten werden soll!

Laut Datenblatt (Full, S.43 Table7-1) kommt hier wohl nur der Idle Mode 
in Frage? Bei allen anderen kann ich nicht auf "Rising Edge" triggern 
bzw. wird sogar der Clock für den Timer abgeschaltet.

Jetzt stellt sich mir noch die Frage wie das mit den WakeUp Sources 
aussieht? Wacht er durch irgendwelche Interrupts durch Timer1 (FastPWM) 
auf, oder kann ich das auf INT0 begrenzen? Bzw. läuft PWM weiter wenn er 
sich aktiv im Idle-Mode befindet?

Vielen Dank

e-Ra

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Elias R. (e-ra)

>Laut Datenblatt (Full, S.43 Table7-1) kommt hier wohl nur der Idle Mode
>in Frage?

Ja.

>Jetzt stellt sich mir noch die Frage wie das mit den WakeUp Sources
>aussieht?

Siehe Interrupt.

>Wacht er durch irgendwelche Interrupts durch Timer1 (FastPWM)
>auf,

Kann man einstellen.

> oder kann ich das auf INT0 begrenzen?

Ja.

> Bzw. läuft PWM weiter wenn er
>sich aktiv im Idle-Mode befindet?

Sicher, siehe Sleep Mode.

MfG
Falk

Autor: Elias R. (e-ra)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

und wie kann ich das genau auf INT0 begrenzen?

Reicht es einfach keine andere ISR als meine "Rising Edge Interrupt" 
(INT0_vect) ISR im Code zu verwenden? Oder muss ich irgendwelche 
Register beschreiben aus denen dann folgt bei welchem Event er aufwachen 
soll.

Vielen Dank

e-Ra

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Elias R. (e-ra)

>Reicht es einfach keine andere ISR als meine "Rising Edge Interrupt"
>(INT0_vect) ISR im Code zu verwenden?

ja.

MFg
Falk

Autor: Elias R. (e-ra)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

funktioniert soweit alles, danke!

Rein aus Interesse:

Was passiert wenn ich zwei oder mehrere ISR's verwende? Aus Idle Mode 
kann er ja nich nur durch INT0 aufwachen. In welche ISR wird dann 
gesprungen?

Gruß

e-Ra

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Elias R. (e-ra)

>kann er ja nich nur durch INT0 aufwachen. In welche ISR wird dann
>gesprungen?

ISR0?
Nach dem Aufwachen wird der Interrupt bearbeitet, welcher das Aufwachen 
ausgelöst hat. Danach geht es normal im Hauptprogramm weiter.

MfG
Falk

Autor: Elias R. (e-ra)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich dachte das ist komplexer....aber das ist ja nun wirklich schön 
gelöst.

Vielen Dank für die Antworten, schönes Bergfest!

e-Ra

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.