www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Externer Interrupt und Power-Down


Autor: Ernestus Pastell (malzeit) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine komplizierte Frage aus reinem Interesse:

Beim Atmel AVR funktioniert die Flankenerkennung bei externen 
Interrupten nicht, wenn der Controller in den Schlafmodus Power-Down 
geht. Allerdings gibt es seit einer Weile den Pin-Change-Interrupt 
(PCI), bei der der Controller nach jeglichem Wackeln an den Eingängen 
selbst noch aus Power-Down aufwacht. Nun habe ich die Problemstellung, 
das ich den Schlafmodus Power-Down wegen Batteriebetrieb nutzen möchte 
aber die Software-mäßige Flankenerkennung in der PCI-ISR aus 
zeitkritischen Gründen eher vermeiden möchte.

Daher meine Frage, ob der externe Interrupt als fallende Flanke auslöst, 
wenn vor dem Schlafengehen der Eingang auf Highpegel lag und nach dem 
aufwachen selbiger sich auf Lowpegel befindet?

Soweit sei verraten das der Interrupt ausgelöst wird, jedoch bin ich mir 
nicht sicher, ob es eventuell durch das Schalterprellen geschieht und 
dann je nach Fertigungsstreuung mal geht und mal nicht. (Obwohl das auch 
nicht soviel macht, denn dann muss man halt den Drehimpulsgeber zwei 
ticks bewegen)

Bin mal gespannt, ob da jemand eine Antwort darauf kennt.

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Beim Atmel AVR funktioniert die Flankenerkennung bei externen
> Interrupten nicht, wenn der Controller in den Schlafmodus Power-Down
> geht.

Das stimmt so allgemein (z.B. für den 644) nicht.  Um welchen Typ geht 
es?

Autor: Ernestus Pastell (malzeit) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um die ATmega48/88/168 Reihe

Autor: Ernestus Pastell (malzeit) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Datenplatt steht das aber anderst, nämlich mit Fußnote und dem 
Hinweis auf Level-Auslösung also keine Flankenerkennung.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehe Sleep Mode

Autor: M. H. (bambel2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja der kann bloß auf low oder high level reagieren....

aber achtung: konfigurierst du den interrupt auf low und schliesst einen 
schalter an der den pin auf low zieht und der interrupt sehr schnelll 
zuende ist, dann löst er noch mal aus du solltest also am ende warten 
bis der pin wieder high ist und dann den interrupt "beenden"

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ernestus Pastell schrieb:
> Nun habe ich die Problemstellung,
> das ich den Schlafmodus Power-Down wegen Batteriebetrieb nutzen möchte
> aber die Software-mäßige Flankenerkennung in der PCI-ISR aus
> zeitkritischen Gründen eher vermeiden möchte.

Hä ???

Aus dem Power-Down braucht der AVR je nach Taktquelle eh ne ganze Weile, 
um den CPU-Takt zu stabilisieren.
Da fallen die popeligen 2/3 Zyklen, um nen Pin zu testen (SBIS+RJMP) 
überhaupt nicht auf.


Peter

Autor: Ernestus Pastell (malzeit) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hä ???
>
> Aus dem Power-Down braucht der AVR je nach Taktquelle eh ne ganze Weile,
> um den CPU-Takt zu stabilisieren.
> Da fallen die popeligen 2/3 Zyklen, um nen Pin zu testen (SBIS+RJMP)
> überhaupt nicht auf.
>
>
> Peter

Jetzt ist mir nicht ganz klar worauf du hinaus willst. Das zeitkritisch 
bezieht sich auf die Abarbeitung des Interrupt in Normalbetrieb.

Ein Drehimpulsgeber kann auf Low hängen, denn dann funktioniert die 
Sache mit dem Level-Interrupt mit Power-Down nicht mehr und die Batterie 
ist nach einigen Wochen leer.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Jetzt ist mir nicht ganz klar worauf du hinaus willst.

Er meint den PIN-Change-Interrupt.

>Das zeitkritisch bezieht sich auf die Abarbeitung des Interrupt in 
>Normalbetrieb.

Drehgeber und Interrupt?

MfG Spess

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ernestus Pastell schrieb:
> Jetzt ist mir nicht ganz klar worauf du hinaus willst. Das zeitkritisch
> bezieht sich auf die Abarbeitung des Interrupt in Normalbetrieb.

Auch für nen normalen Interrupt sind 2/3 Zyklen nur Pinats. Schon ein 
leerer Interrupt kostet 10 Zyklen, mit Prolog,Epilog 30 Zyklen 
(AVR-GCC).

Außerdem kann man beide Aufgaben trennen:
Pinchange zum Aufwachen, externer Interrupt im Betrieb.


Peter

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.