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
Nein, Pollen ist das kürzeste. Du kannst nur mit dem Input-Capture den Zeitpunkt der Flanke exakt feststellen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.