Forum: Mikrocontroller und Digitale Elektronik Manchester: Beste implementierung


von Dave (Gast)


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.

von Siegfried (Gast)


Lesenswert?

Du kannst dir eine aussuchen - entweder die "Manchester United"- oder 
die "Manchester City"-Implementierung. Beide laufen bei mir seit Jahren 
ohne Probleme.

von Dave (Gast)


Lesenswert?

>Du kannst dir eine aussuchen - entweder die "Manchester United"- oder
>die "Manchester City"-Implementierung. Beide laufen bei mir seit Jahren
>ohne Probleme.

Cool, danke!

von Dave (Gast)


Angehängte Dateien:

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

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.