Forum: Mikrocontroller und Digitale Elektronik AVR USART: Frame Format (synchroner Mode)


von Andreas A. (Firma: Embedded Microtec) (andi) Flattr this


Lesenswert?

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

von Stefan E. (sternst)


Lesenswert?

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?

von Andreas A. (Firma: Embedded Microtec) (andi) Flattr this


Lesenswert?

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.

von Stefan E. (sternst)


Lesenswert?

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.

von Stefan W. (dl6dx)


Lesenswert?

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

von Stefan W. (dl6dx)


Lesenswert?

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

von Stefan E. (sternst)


Lesenswert?

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).

von Stefan W. (dl6dx)


Lesenswert?

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

von Stefan W. (dl6dx)


Lesenswert?

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

von Stefan E. (sternst)


Lesenswert?

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.

von Andreas A. (Firma: Embedded Microtec) (andi) Flattr this


Lesenswert?

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
Noch kein Account? Hier anmelden.