Gast
#389713
Guten Tag, ich möchte einen seriellen Datenstrom einlesen, brauche also im Prinzip einen variablen Software-UART, da der Datenstrom keiner Norm entspricht. Folgendes hab ich schon umgesetzt: INT0-Interrupt, um auf steigende Flanken zu triggern, und Timer-overflow-Interrupt, mit dreimal höherer Frequenz als mein Signal (9600bps). Mit diesen beiden warte ich auf eine besonders lange Pause im Datenstrom, die den Beginn einer Übetragung bedeutet. Dann wird der INT0-Interrupt abgeschaltet und ich werte immer das mittlere der drei Overflow-Interrupts aus, um so die ganze Sequenz zusammenzusetzen (ca. 90 bit). Wenn fertig, warte ich wieder auf die Pause. Das funktioniert eigentlich schon ganz gut, nur sind immer wieder Ungenauigkeiten in der Sequenz, besonders in den späteren Bits, als würden meine Bit-Abfragen nicht immer genau "treffen". Auch eine Verdopplung der Abfragefrequenz auf 6-fach hat nichts gebracht. Wie kann ich das optimieren bzw. die "Treffergenauigkeit" steigern? Es ist ein ATMEGA8515 mit 3,6864 MHz. Danke, Grüße, Felix W.