Hi, ich benötige die USART in einem ATMega32U2 im synchronen Slave-Mode. Weiß jemand wie das Frame Format aussieht? Muss hier auch ein Startbit und Stopbit gesendet werden? Danke schonmal, Andreas
Andreas Auer schrieb: > Weiß jemand wie das Frame Format aussieht? Muss hier auch ein Startbit > und Stopbit gesendet werden? Logisch. Bei Synchron ist alles exakt genauso wie bei Asynchron, außer halt, dass der Takt von Außen "zugeliefert" wird. Wie sollte es auch ohne Start/Stop-Bit funktionieren?
Hm... hatte vor kurzem ein Datenblatt eines PIC Controllers offen und ich glaube, dass dort im synchronen Mode der Frame dann nur noch aus den 8 Datenbits besteht.
Andreas Auer schrieb: > Hm... hatte vor kurzem ein Datenblatt eines PIC Controllers offen > und > ich glaube, dass dort im synchronen Mode der Frame dann nur noch aus den > 8 Datenbits besteht. Dann war das vermutlich kein synchroner USART-Modus, sondern ein SPI-Modus.
Stefan Ernst schrieb: > Bei Synchron ist alles exakt genauso wie bei Asynchron, außer > halt, dass der Takt von Außen "zugeliefert" wird. Wie sollte es auch > ohne Start/Stop-Bit funktionieren? Ähm. Nein. Bei jeder Übertragung hat man a) den Bittakt und b) je nach Verfahren den Frame- bzw. Worttakt. Bei synchroner Übertragung wird in jedem Fall der Bittakt in irgendeiner Form mit übertragen. Entweder als separates Signal, oder im (modulierten) Datensignal eingebettet (Taktregeneration). Der Frame- bzw. Worttakt kommt entweder ebenfalls als separates Signal (Flanke am ersten Bit eines Worts) oder man muss ihn aus dem Bitstrom extrahieren. Falls dafür keine speziellen Codes verwendet werden, die eine Regeneration des Worttakts ermöglichen, wird üblicherweise ein Bitmuster als "Synchronmarke" reserviert, das in regelmäßigen Abständen auftaucht (meist am Anfang eines Übertragungsblocks). Klassisches Beispiel dafür ist HDLC, bei dem dieses Bitmuster das Flag (ein 0-Bit gefolgt von 6 1-Bits gefolgt von einem weiteren 0-Bit) ist. Damit Nutzdaten das nicht imitieren können, wird nach 5 1-Bits immer ein 0-Bit eingefügt bzw. beim Sender entfernt (Bitstuffing). Nach einem empfangenen Flag ist das nächste Bit das erste Bit des ersten Bytes des Frames. Das Frame endet mit dem nächsten Flag (das dann auch nach einer Bytegrenze kommt). Grüße Stefan
Bei der asynchronen Übertragung ist das alles etwas anders: Der Bittakt wird vorher festgelegt und auf beiden Seiten unabhängig voneinander erzeugt. Er muss auf beiden Seiten soweit gleich sein, dass bei einmaliger Synchronisation über 10 bzw. 11 Bittakte die Abtastzeitpunkte noch passen. Die Synchronisation von Bit- und Zeichentakt erfolgt durch die Startbedingung "fallende Flanke 1->0 aus dem Ruhezustand 1" (Startbit, immer 0). Damit ist der lokale Bittakt phasensynchron. Danach werden 8 (manchmal 9) Bit mit diesem lokalen Bittakt abgetastet. Den Schluss bildet immer ein 1-Bit (Stopbit). Dieses Verfahren baut übrigens auf einer sehr wichtigen Annahme auf, nämlich dass irgendwann mal für mindestens eine Zeichenlänge "Ruhe" (1-Pegel) auf der Leitung ist. Ein Empfänger im Ruhezustand triggert nämlich immer auf den ersten 1->0-Übergang, den er "sieht". Falls der Empfänger durch eine Störung nur ein "halbes" Zeichen bekommt, so auf einen 1->0-Übergang innerhalb des Zeichens triggert und fortgesetzt Zeichen direkt auf einander folgen, wird er bis zur ersten Pause (mehr als 11 1-Bits) im Sendesignal keine Zeichensynchronisation erlangen. Grüße Stefan
Stefan Wagner schrieb: > Bei jeder Übertragung hat man a) den Bittakt und b) je nach Verfahren > den Frame- bzw. Worttakt. Es geht hier aber nicht um "je nach Verfahren", sondern ganz konkret um den USART des AVR. Und der hat nun mal nur einen separaten Bittakt. Stefan Wagner schrieb: > Der Frame- bzw. Worttakt kommt entweder ebenfalls als separates Signal > (Flanke am ersten Bit eines Worts) oder man muss ihn aus dem Bitstrom > extrahieren. > > Falls dafür keine speziellen Codes verwendet werden, die eine > Regeneration des Worttakts ermöglichen, wird üblicherweise ein Bitmuster > als "Synchronmarke" reserviert, das in regelmäßigen Abständen auftaucht > (meist am Anfang eines Übertragungsblocks). Und was ist einfacher als das alles? Richtig, wenn man auf der Datenleitung einfach das exakt selbe Byte-Framing mit Start/Stop-Bit fährt, wie bei asynchron. Der synchrone Modus unterscheidet sich vom asynchronen lediglich dadurch, dass der Master den Takt zusätzlich auf einen Pin gibt, und der Slave den Takt von einem Pin nimmt, statt ihn selbst intern zu generieren (beim AVR-USART wohlgemerkt, um den es hier geht).
Stefan Ernst schrieb: > Es geht hier aber nicht um "je nach Verfahren", Das sehe ich anders. Der TO hat in keiner Weise angegeben, welches Übertragungsverfahren bzw. Protokoll er nutzt. Bislang wissen wir nur, dass der Bittakt anscheinend anderswo erzeugt wird, da er den Modus synchronous slave" verwenden will. Welches weitere Framing verwendet wird oder ob er das noch frei wählen kann, wurde bislang nicht gesagt. Grüße Stefan
Stefan Ernst schrieb: > Der synchrone Modus unterscheidet sich vom asynchronen lediglich > dadurch, dass der Master den Takt zusätzlich auf einen Pin gibt, und der > Slave den Takt von einem Pin nimmt, statt ihn selbst intern zu > generieren (beim AVR-USART wohlgemerkt, um den es hier geht). Hm. Nach Datenblatt gibt es tatsächlich nur ein "asynchrones Framing", egal ob synchroner Bittakt oder nicht. Dann hat der TO ja eh keine Wahl. Aber wer hat sich das denn ausgedacht? Unter einer "universellen asynchron/synchronen Schnittstelle" verstehe ich eher was wie Intel 8273, Z80 SIO, UPD72001 etc. Grüße Stefan
Stefan Wagner schrieb: > Stefan Ernst schrieb: >> Es geht hier aber nicht um "je nach Verfahren", > > Das sehe ich anders. > > Der TO hat in keiner Weise angegeben, welches Übertragungsverfahren bzw. > Protokoll er nutzt. Bislang wissen wir nur, dass der Bittakt anscheinend > anderswo erzeugt wird, da er den Modus synchronous slave" verwenden > will. > > Welches weitere Framing verwendet wird oder ob er das noch frei wählen > kann, wurde bislang nicht gesagt. Also für mich sieht die Frage des TO ziemlich eindeutig so aus, dass er nach dem Frame-Format für den konkret genannten Controller fragt.
Also mir ging es grundsätzlich darum, zu sehen, ob der AVR auch einen synchronen USART Mode hat, wo man nicht dieses standard UART Framing nutzen muss. Also quasi rohe 8bit reinclocken kann. Mein externern Chip, der als Master agieren soll, schickt nämlich "nur" 8bit raus ohne Start- und Stopbit. Und da ich im PIC davon gelesen habe, dachte ich der AVR kann das auch. Ich werd aber vermutlich dann den SPI als Slave nutzen und dort die Daten reinclocken. Danke für die Antworten
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.