Forum: Mikrocontroller und Digitale Elektronik 4Bytes per Infrarot übertragen (36Khz)


von Sascha D. (plutoonline)


Lesenswert?

Hallo, ich möchte 4Bytes per Infrarot (36Khz) übertragen.
Ich möchte 2 Atmega8 für die Übertragung verwenden.
Also einer sendet der andere empfängt.
Das senden und empfangen mit RC5-Code funktioniert auch wunderbar.
Mein Problem liegt jetzt auf der Empfangsseite, ich benutze den Source
von Peter Dannegger zum empfange, aber irgendwie steige ich nicht so
recht durch wie ich das ganze jetzt von 14Bit auf 32Bit aufbohren
kann.
Ich bräuchte die 4 Bytes nach dem Empfang in 4 Variablen zum
weiterverarbeiten.
Wenn mir jemand einen Denkanstoß geben könnte wäre das echt SUPER!!
Ich hab schon rumprogrammiert wie ein Irrer aber igendwo hakt es dann
immer, Ich habe leider auch kein Oszi sonst könnte ich das ganze besser
Analysieren.
Ach ja das ganze soll in C umgesetzt werden.

Vielen Dank schonmal für euer Hilfe.

Gruß Sascha

von Sascha D. (plutoonline)


Lesenswert?

hat keiner eine IDEE ? :-(

von Rahul (Gast)


Lesenswert?

Hast du zu Peters Code einen Link? (Hab gerade keine Lust danach zu
suchen...)

von Sascha D. (plutoonline)


Lesenswert?


von Sascha D. (plutoonline)


Lesenswert?

hat denn wirklich keiner einen Rat für mich :-(

von Sebastian Heyn (Gast)


Lesenswert?

mmhh bascom hätte ich dir helfen können

von peter dannegger (Gast)


Lesenswert?

Es gibt 2 Möglichkeiten:

1.
Du erweiterst den Code auf die gewünschte Bitzahl.

2.
Du nimmst den Code, so wie er ist (13 Datenbits) und überträgst 4
Pakete, wobei einige Bits die Bytenummer und andere das Byte sind.


Peter

von Sascha D. (plutoonline)


Lesenswert?

Danke für das schnelle Feedback.
@Peter
zu. 1.
Ich würde den Code ja gerne erweitern aber mir fehlt ehrlichgestagt der
nötige Durchblick. Mein Problem ist das dein Code ja so aufgebaut ist
das er nur 2 Bytes (Word) fassen kann. Muss ich jetzt nach 16
bitschiebe aktionen ein neues Byte (Word) einfügen? Und wie erkenne ich
dann ob 32Bits empfangen wurden?? Sorry das ich so blöd frage aber so
100%ig hab ich deinen Source noch nicht gerafft..

zu. 2.
Es wäre mir schon lieber wenn ich alle 4Bytes in einem Packet versenden
könnte.

Vielen Dank schonmal.....

von Sascha D. (plutoonline)


Lesenswert?

@Peter
Kann ich in deinem Code statt
if( !(tmp & 0x4000) && tmp & 0x2000 )

if( !(tmp & 0x10000) && tmp & 0x4000 )
schreiben um den Code auf 16Bits zu erhöhen?
Hier werden ja die Startbits abgefragt oder?

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.