Forum: Mikrocontroller und Digitale Elektronik spezielles serielles Protokoll in Bascom


von hmm (Gast)


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

von STK500-Besitzer (Gast)


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

von hmm (Gast)


Lesenswert?

Danke, werde ich mal versuchen.

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
Noch kein Account? Hier anmelden.