Hallo, ich würde gerne einen seriellen Datenstrom einlesen. Dieser hat eine Datenrate von -beispielsweise- 9,6kBit/s. Ich würde diesen nun an einen PIN meines -beispielsweise- ATMega128 hängen und alle 104µs den Pin abfragen und auslesen. Doch wird das bei schnelleren Datenströmen - z.B. 12MBit/s - unmöglich, da ich nicht alle 83ns den Pin abfragen kann! (Eine Instruktion dauert ja bei 16MHz immerhin 63ns). Ich bin leider noch nicht sehr bewandert auf dem Gebiet...aber gibt es sonst noch eine Möglichkeit den Datenstrom einzulesen und den mich interessierenden Teil "auszuschneiden" und zu verarbeiten? UART? Danke, Helge
gut, sehe ich es richtig, dass maximal 1MBit/s drin sind beim UART des ATMega128? Ist ja auch schon mal nicht schlecht! Aber: Was gibt es denn für möglichkeiten solch einen Datenstrom -von bis zu 12MBit/s- einzulesen und zu bearbeiten?
@Helge: bei 9600 baud alle 104µs abfragen ist auch zu wenig. Um die Bits sauber zu erfassen und trotzdem eine gewisse Timing-Toleranz zuzulassen, sollte man nicht wesentlich über 20 µs Abtastabstand gehen. Alternativ kann man die vordere Flanke des Startbits einen Interrupt auslösen lassen und dann die folgenden Datenbits relativ genau "mittig" abfragen. 12 Mbaud ist ohne Hardwareunterstützung nicht zu machen. Je nach Codierungsverfahren braucht man eine Taktrückgewinnungund und einen Decoder. Üblicherweise schreibt man den Datenstrom seriell in ein Schieberegister, von wo aus die Daten dann parallel auf den Datenbus der CPU übertragen werden. Zur Entlastung der CPU sollte die Hardware automatisch Anfang und Ende eines Bytes erkennen, die Daten in einem kleinen FIFO zwischenspeichern und per DMA ins RAM schreiben. Jörg
ja 1MBit stimmen bei den AVRs mit nen bisschen übertakten kommt man noch auf 1,2MBaud mehr is nicht drin. Ist es denn ein asynchorner Datenstrom? d.h. keine taktleitung? Mit taktleitung gestaltet sich das ganze wesendlich einfacher, dann kann man ganz einfach das schon erwähnte schieberegister verwenden.
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.