Forum: Mikrocontroller und Digitale Elektronik AVR ATtiny: ist ein resume from idle ohne Interrupt möglich?


von Richard P. aus W. (Gast)


Lesenswert?

Hallo zusammen,

ich möchte meinen AVR ATtiny24A möglichst schnell auf eine fallende 
Flanke eines Eingangssignals reagieren lassen. Dieses kann allerdings 
mit bis zu 1MHz takten. Da der ATtiny24 nur mit 16MHz läuft stehen also 
nur 16 Takte zur Verfügung. 5 Takte davon gehen schon für die 
eigentliche Reaktion drauf. Es bleiben also 11 Takte zur Erkennung der 
Flanke.

Bisher läuft der AVR in einer Programmschleife und pollt kontinuierlich 
den Pin. Aufgrund des nötigen Rücksprungbefehls (SPIS, JMP) lässt sich 
der Pin aber nur alle 3 Prozessortakte lesen. Die Reaktionszeit des AVR 
variiert daher um 3 Takte was mit nicht passt.

Um die Reaktionszeit konstant kurz zu halten, dachte ich es könnte 
hilfreich sein, den Idle-Mode zu nutzen. Allerdings muss höchstens 7 
Takte nach der Flanke das Ausgangssignal erzeugt werden, besser kürzer.
Nun suche ich mir im Datenblatt die Augen wund und finde keinen Weg ohne 
den Sprung zu einem Interruptvaktor das Programm nach einem Sleep-Befehl 
fortlaufen zu lassen. Bevor ich meinen Plan mit dem interruptfreien 
sleep allerdings über den Haufen werfe wollte ich sicherheitshalber noch 
einmal nachgefragt haben. Vielleicht kennt ja jemand einen kleinen hack.

Vielen Dank

von Peter D. (peda)


Lesenswert?

Nein, Pollen ist das kürzeste.
Du kannst nur mit dem Input-Capture den Zeitpunkt der Flanke exakt 
feststellen.

von c-hater (Gast)


Lesenswert?

Richard P. aus W. schrieb:

> Bisher läuft der AVR in einer Programmschleife und pollt kontinuierlich
> den Pin. Aufgrund des nötigen Rücksprungbefehls (SPIS, JMP) lässt sich
> der Pin aber nur alle 3 Prozessortakte lesen. Die Reaktionszeit des AVR
> variiert daher um 3 Takte was mit nicht passt.

Wenn man eine allgemeine Erhöhung der Reaktionszeit in Kauf nimmt, kann 
man eine konstante Reaktionszeit erreichen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.