Philipp J. schrieb:
> und ja der prof wollte den interrupt über die Flanken, Timer wäre zwar
> ehr richtig aber ich muss mich ja an die richtlinien meines Prof
> halten...
Unsinn. Du dünkst dich schlauer als dein Professor, aber du bist es
nicht.
Du solltest eher darüber nachdenken, was eigentlich dir zu begreifen
ansteht.
Das Öffnen und Schließen eines der beiden Drehgeberkontakte ist ein
Ereignis, was dir sagt, daß der Drehgeber bewegt wurde. Die
Richtungs-Information hingegen bekommt man aus dem Zustand des anderen
Signals zum Änderungszeitpunkt des ersteren Signals. Normalerweise
ändert dieses zweite Signal seinen Zustand direkt im Rastpunkt (also
möglicht weit weg von den Umschaltpunkten des ersteren Signals),
weswegen das simple Abtasten im festen Timer-Raster eben grundfalsch
ist, da man dann zwar das Ereignis als solches erkennen kann (wie bei
einem Taster), aber nicht mehr die Richtungsinformation bekommt, da
diese nur eine gewisse Zeit nach dem Ereignis zur Verfügung steht. Man
müßte sehr häufig pollen, um das Abtasttheorem zu beachten und keinen
Unfug zu dekodieren.
Kapiert?
Was tut man also?
1. die Signale konditionieren, also vom Rauschen befreien, was hier
heißt, sie vom Prellen zu befreien - und zwar analog, da du ja wohl
gelernt hast, daß man eine digitale Signalverarbeitung nur dann sauber
praktizieren kann, wenn höhere Frequenzen als 1/2 Abtastrate nicht mehr
vorkommen.
2. die zuvor analog konditionierten Signale ins Digitale übersetzen
(sprich an einen Eingang legen, der signaltheoretisch als 1 Bit Wandler
daherkommt)
3. diese digitalen signale auswerten. Da man den Zustand des zweiten
Signals direkt nach dem Zustandwechsel des ersten Signals benötigt,
kommt da eben nur der Interrupt auf den Zustandwechsel des ersten
Signals in Frage. Alles Andere ist Pfusch, weil es sinnlos Rechenzeit
verbraucht.
Hast du auch dieses jetzt verstanden?
Nochmal zum Mitschreiben: zuerst konditionieren, dann wandeln, dann
auswerten.
W.S.