Dass du a gleichzeitig als temporäre Variable in der ISR und auch als
Übergabevariable verwendest ist schlecht. Je nachdem, wie schnell dein
Signal ist, kanns sein, dass du mit /a = 0/ nach send_string dir einen
Teil des ankommenden Signals löscht. Shiftest nun doch per Variable,
nagut, von mir aus.
Hab mir PS2 noch nie angeschaut aber du empfängst 11 Bit, verundest mit
Bits 9:1, shiftest dann um 1 nach rechts und hast dann Bits 9:1 des
Signals in den untersten 8 Bit von a. Schaut merkwürdig aus, aber
wenns passt, dann gut.
Was geht jetzt nicht?
cygar schrieb:
> Mein Code funktioniert jetzt soweit wie er soll. Shifte aber immer noch
> immer jedesmal wieder von vorne.
Den zweiten Satz kapier ich nicht.
PS: Übrigens wäre es besser, mit dem Input Capture eines Timers
zusätzlich zu den Signalflanken auch noch die Zeit zwischen 2 Flanken zu
messen. Somit kannst du schauen, ob das Signal von der Zeit her gültig
ist.