spezielles serielles Protokoll in Bascom

Gast #1727210
Lesenswert?

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
Gast #1727280
Lesenswert?

>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...

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