Ein oder zwei Timer nehmen?

OP #872358
Lesenswert?
• ▲
▼
Ich lese mit einem ATmega 6 Drehgeber (Gray-Code) aus. Das Auslesen 
dieser 12 Bits muss absolut zuverlässig funktionieren, es darf kein 
count ausgelassen werden. Soll ich das besser mit einem oder mit zwei 
Timer realiseren?

Ein Timer wäre natürlich einfacher zu realisieren, aber dieser Interrupt 
steuert ja noch das übrige "Housekeeping" wie RS-232 und 
Display-Ausgabe. Deshalb könnte es passieren, dass ein Interrupt 
verloren geht, wenn der Handler noch mit der Abarbeitung beschäftigt 
ist, oder irre ich mich da?

Wenn ich zwei Timer nehme, und einen Timer nur mit Auslesen und Zählen 
beaufschlage, habe ich dann die Garantie, dass dieser immer ausgelöst 
wird, auch wenn der andere Timer-Handler noch beschäftigt ist?

Ich tendiere zu zwei Timern, aber ich habe hier jetzt schon oft gelesen, 
dass man nur einen Timer verwenden soll. Deshalb frage ich, wie würdet 
Ihr das realisieren?

Gruß,
Michael
Gast #872393
Lesenswert?
• ▲
▼
Nimm zwei Timer.
Ein Timer bearbeitet in seiner Interruptroutine die encoder und der 
andere arbeitet ohne Interrupts und du frögst das Overflow bzw 
comparematch flag in deiner main ab. Dann sind die Prioritäten klar 
verteilt und kein "Klick" kann dir verloren gehen.
OP #872679
Lesenswert?
• ▲
▼
Ulrich, das ist ne gute Idee, den zweiten Timer garnicht über den 
Interrupt-Handler laufen zu lassen. <andiestirnklatsch> Mensch, da hätt 
ich auch selbst draufkommen können. ;) Danke für den nötigen 
Denkanstoss.

Jens, das Problem ist dabei aber doch, dass der ATmega32 nur zwei 
Interrupt-Leitungen hat, ich aber 12 benötigen würde. Oder hab ich da 
was falsch verstanden? (Ist mein erste AVR Projekt...)

Micha
Gast #872688
Lesenswert?
• ▲
▼
mann könnte die signale zusammenfasse,
zb könnte man alle signale über jeweils einen c an ein r legen und über 
dem r messen, gib es dort eine positive flanke, so muss man jetzt nur 
noch schauen welcher pin sich geändert hat. vieleicht geht das auch mit 
einem ic, mir fällter aber spontan keins ein


Dennis
Gast #872701
Lesenswert?
• ▲
▼
@ Michael R. (miras)

>Jens, das Problem ist dabei aber doch, dass der ATmega32 nur zwei
>Interrupt-Leitungen hat, ich aber 12 benötigen würde. Oder hab ich da
>was falsch verstanden? (Ist mein erste AVR Projekt...)

Da hast Du leider recht ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren