Manchester: Beste implementierung

Gast #1215248
Lesenswert?

Hi,

ich arbeite mit einem IR-Empfänger und möchte ein paar Byte übertragen, 
danach eine Sendepause einlegen, und beim Start wieder synchronisieren. 
Im Prinzip ein RC5, nur dass ich keine Fernbedienung zum senden nehmen 
und auch nicht nur die paar Bits der Fernbedienung übertragen möchte, 
sondern fünf Byte.

Welche Implementierung ist die eleganteste? Die mit dem monostabilen 
3/4-Kippglied?

Ich freue mich auf Anregungen und Code! :)

Achja: µC ist ein ATtiny13.
Gast #1215330
Lesenswert?

Im Anhang ist meine nicht funktionierende Implementierung.

Zur Info: Zu Beginn der Übertragung wird immer erst eine LH- und eine 
HL-Flanke gesendet.

Erklärung zum Code:

Ich stelle Timer0 auf einen Prescaler von 64.

* ich warte auf die erste Flanke und starte den Timer.
* ich warte auch die zweite Flanke und stoppe den Timer.
* ich lese den Wert von TCNT0 aus und stelle OCR0A auf das 1,5-fache.
* ich stelle OCR0B auf das 2,5-fache von TCNT0.
* ich starte den Timer.
* Bei Compare-Match-A wird das der aktuelle Zustand (eventuell 
invertiert) der Leitung gespeichert.
* Bei Compare-Match-B wird das Invertier-Flag umgeschaltet und der 
aktuelle Zustand der Leitung (eventuell invertiert) gespeichert.
* Bei Timer-Overflow ist die Sync-Pause erreicht. Der Timer wird 
abgeschaltet.
* Neustart von vorne
Angehängte Dateien:

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