Manchester: Beste implementierung

Gast #1215248
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 #1215253
Du kannst dir eine aussuchen - entweder die "Manchester United"- oder 
die "Manchester City"-Implementierung. Beide laufen bei mir seit Jahren 
ohne Probleme.
Gast #1215255
>Du kannst dir eine aussuchen - entweder die "Manchester United"- oder
>die "Manchester City"-Implementierung. Beide laufen bei mir seit Jahren
>ohne Probleme.

Cool, danke!
Gast #1215330
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.