Hallo, kann mir jemand einen Codierer/Decoder für Manchestercode empfehlen? Gibt es sowas überhaupt als Hardeware IC? Ich habe biser leider noch keinen gefunden.
Das hilft mir leider nicht weiter. Kann mir jemand einen konkreten Encoder/Decoder empfehlen?
Der IC soll 10 Bit einer UART (mit start und Stopbit)codieren bwz. decodieren. Die Daten sollen seriell eingelesen bzw. ausgegeben werden. Die Datenrate der UART betragt 1152Kbps. Die UART sendet permanent Daten.
den hab ich auch schon gefunden, der muss aber mit VHDL programmiert werden, damit möchte ich mich aber nicht befassen. Ich suche einen Einfachen IC der nicht unbedingt programmiert werden muss, sonst könnte ich auch nen zweiten AVR nehmen. Aber das will ich ja vermeiden.
der ist mit der decodierung überlastet Das nächste Datenwort kommt, bevor der mir der Decodierung fertig ist. Dadurch hab ich permanent einen Bufferoverrun der UART.
Da habe ich unaufmerksam gelesen; wenn die Daten nicht über das UART, sondern "roh seriell" empfangen werden, dann wird das tatsächlich schwierig.
Einfach nen ATTiny13 dafür abstellen. Bei 9,6MHz sollte der genug Zeit dafür haben. Peter
Die Daten werde schon über die UART empfangen, das Auslesern des UDR Register geschieht in einer Interrunptroutine. Die Zeit für die decodierung ist aber trotzdem zu lang. Das nächste Datenwort ist schon da, bevor die Decodierung fertig ist.
Was dauert denn so lange bei der Dekodierung? out = dekodierungstabelle[in]?
Ich nehme an, das Shiften? Ich hab die Routine mal reinkopiert. An die Funktion werden 16 Bit im ManCode übergeben. unchar manDecode(data) { low = (uchar)(data >> 8); if ( (low & 0xAA) ^ ((~low & 0x55) << 1) ) { return; } else low &= 0xAA; high = (uchar)mc; if ( (high & 0x55) ^ ((~high & 0xAA)>>1) ) { return; } else high &= 0x55; return low | high; }
Ich habe die Daten Byteweise vorliegen, mir ner If, else muss ich trotzdem ODER Verknüpfungen machen und shiften. Oder irre ich mich?
Ansich geht es mir ja auch darum einen Hardeware decoder zu finden, den ich vor bzw. hinter die UART schalten kann.
Das Thema hatten wir doch schonmal: Es ist nicht möglich, mit ner UART Manchester zu senden bzw. zu empfangen ! Die Codierung muß also hinter der UART (TXD) bzw. davor (RXD) erfolgen, d.h. auf Bitebene. Und das könnte eben ein ATTiny13. Peter
Das ist mit auch klar, deshalb kann man das entweder Hardwaremäßig lösen oder Softwaremaßig. Mir geht es darum, was für einen IC ich vor die UART schalten kann.
Dann greif doch Peters Vorschlag auf. Ich würde nur einen 2313 nehmen, da dann die Bytes parallel übergeben werden können. MW
Hi Sieh dir mal das Datenblatt vom AT90PWM2/3 an. Der hat Manchestercodierung/decodierung. Verfügbarkeit kenne ich aber leider nicht. MfG HG
@ Hartmut jo danke, der könnte gehen, den kann ich beim redesign vielleicht verwenden. Hab jetzt meine Software optimiert und es läuft erst einmal. MfG Paul
Hallo, mir ist gerade zufällig der 15530 (www.aeroflex.com) aufgefallen. Das könnte etwas für Dich sein, wenn Du Dich um den Tiny herumdrücken willst. Frag mich aber bitte nicht, wo man den in Deutschland herbekommt. Gruß, Sebastian
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.