mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Attiny44 Sleep-Modus


Autor: Stefan E. (stefan_e)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich brauche mal einen Hinweis wie ich folgendes Problem lösen kann:

Ich überwache die Spannung an zwei Pins per asynchr. Level-Interrupt: 
PB2 und PA2. In der ISR wird dann überprüft, ob nach einer 
SPannungsänderung beide Pins gleichzeitig low sind. Ist dies der FAll, 
legt sich der µC schlafen. Soweit funktioniert es. Nur wie soll ich den 
Kerl wieder über die gleichen Interrupts wecken? Ich bin ja schon in der 
ISR drinnen! Deshalb kann ja kein weitere Interrupt ausgelöst werden.

Polling der Pins ist zu langsam. Gibt es hier irgendeine Patentlösung?

Vielen Dank,
Stefan

Autor: 1.8T-Passat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Setz in der ISR ein Flag, werte es in der Main-Schleife aus, und leite 
dann den Sleep-Modus ein. Dann bist Du außerhalb der ISR, und kannst den 
Controller per Interrupt wecken.

Autor: Dominik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stefan,

darf ich dich etwas Offtopic fragen?
Ich wollte auch einen Attiny44 programmieren, bekomme allerdings keinen 
Zugriff auf den Chip.
Ponyprog und Bascom erkennen diesen beide bei mir nicht. Habe die 
neusten Softwares davon, aber beide haben diesen nicht in der Auswahl 
(obwohl laut Ponyprog HP das gehen müsste).
Verwende einen LPT ISP Programmer, wie er im Tutorial hier auf der Seite 
beschrieben ist. Pins des Attiny sind auf jedenfall richtig mit dem 
Programmer verbunden.
Daher meine Frage, welchen Programmer nimmst du und welche Software?

Danke.

Grüßle
Stefan

Autor: Stefan E. (stefan_e)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ 1.8T-Passat

Die Idee hatte ich auch schon. Allerdings geht es mir hier um jede µs. 
Und bis der Chip mal wieder an der Abfrage in der Hauptschleife 
vorbeikommt kann es im ungünstigsten Fall schon zu lange sein.

@Dominik

Ich verwende den Amadeus-Programmer. Funktioniert wunderbar. (Leider 
nicht unter Linux ;-( )
Wenn dein Programmer mit anderen Chips funktioniert, sollte der Attiny 
keine Probleme bereiten.
Allerdings kann ich ihn nicht auf der Homepage von PonyProg finden. 
Verwende doch einfach mal in PonyProg einen anderen. Z.B. den Attiny45

Autor: Fabian B. (fabs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst nur dafür sorgen, dass der sleep Befehl der letzte in der ISR 
ist. dann wird vorher nämlich noch das sei ausgeführt...da hat 
tatsächlich mal ein Designer drüber nachgedacht. ;-)

Schau dir mal die Beschreibung zu Sleep Modes genau an.

Gruß
Fabian

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan E. schrieb:
> Nur wie soll ich den
> Kerl wieder über die gleichen Interrupts wecken?

Garnicht.
Ein Level-Interrupt kann nicht Schlafen und Wecken zugleich, das kann 
nur ein Flankeninterrupt (PCIxx).

Und ein Interrupt kann nur den Sleepmode setzen, das Schlafen muß immer 
in der Mainloop erfolgen.

Und beim WINAVR drauf achten, nicht das kreuzgefährliche sleep-mode() 
nehmen, sondern das zuverlässige sleep_cpu()!


Peter

Autor: Stefan E. (stefan_e)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
danke für die Antworten.

Dann muss ich wohl doch auf polling umsteigen und den Schlaf auslösen.

Gruß,
Stefan

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.