Unsere Waschmaschine streikt mal wieder, laut Service-Manual gibt es eine serielle Ausgabe von Fehlercodes, um zu sehen was defekt ist. Es kommt jedoch ein sehr eigenartiges Protokoll zum Einsatz: OpenCollector 1 schaltet durch, OpenCollector 2 überträgt den Fehlercode als vorzeichenlosen 5-Bit-Binärwert mit einer Bitdauer von 10ms und einer Pause von 70ms, OpenCollector 1 sperrt wieder. Ich möchte die Übertragung nun mit einem AVR & Bascom auswerten, dabei sollte die Übertragung von OC2 in eine Byte-Variable geschrieben werden, leider scheitere jedoch immer an dem eigensinnigen Protokoll. Kann mir jemand erklären, wie ich das am Besten löse? Das Timing scheint laut Oszi um etwa 20% zu schwanken. Hier das Protokoll für Fehlernummer 18, so wie es im Manual dargestellt wird: OC1 01001 OC1
>Hier das Protokoll für Fehlernummer 18, so wie es im Manual dargestellt >wird: >OC1 01001 OC1 Bäh! Auch noch umgekehrte Bitreihenfolge. Zum Einlesen: Den OC1 auf einen flankengetriggerten Interrupt-Eingang legen. Wenn der Interrupt ausgelöst wird, einen Timer starten, der nach 5ms auslöst. In der ISR den Pegel an OC2 festsellen und diesen speichern. Den Timer-Vergleichswert dann auf 10ms setzen, damit in der Mitte des zweiten und der folgenden Bits der Interrupt ausgelöst wird. Beim Timer-Interrupt dann den Pegel des OC2 speichern. Das macht man dann, bis alle Bits eingelesen wurden. Sowas nennt sich auch Soft-UART...
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.