mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR und Baudrate von 187,5 kbit/s


Autor: Andre (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte an einem AVR (wahrscheinlich ATmega8) einen RS485 Bustreiber 
mit einer Baudrate von 187,5 kbit/s betreiben.

Hängt man den RS485 Bustreiber nun besser an den eingebauten 
Hardware-UART (RX/TX) oder benutzt man einen Software-UART?

Andre

Autor: B e r n d W. (smiley46)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm nen 3 Mhz Quarz oder ein vielfaches davon und nimm den 
Hardware-UART.

Bernd

Autor: Hmm... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt drauf an was du vorhast. Wenn der Hardware-UART zur Verfügung 
steht, nimm ihn doch. Falls du aus irgendeinem Grund keinen 
Hardware-UART benutzen kannst (z.B. weil er schon verwendet wird) dann 
musst du ihn eben per Software nachbilden.

Allerdings ist dann natürlich die CPU-Auslastung vom Controller deutlich 
größer, da du bei jedem zu sendenden Bit einen Pin schalten musst. Bei 
einem 12.xxx MHZ Quarz hast du dann noch ca. 65 Takte zwischen 2 Bits. 
Wenn der Controller nix anderes machen soll, ist das durchaus Ok....

Auf jeden Fall benötigst du jedoch einen Hardware-Timer und idealerweise 
einen Interrupt-fähigen Pin zum empfangen, sonst wird der Controller für 
nix anderes mehr Zeit haben...

Autor: Andre (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Bei einem 12.xxx MHZ Quarz hast du dann noch ca. 65 Takte zwischen 2 
Bits."

Das ist nicht gerade viel.  :o(

Also ist es wohl besser, den Hardware-UART zu benutzen. Ich weiss nur 
nicht, ob der auch so schnell ist. Deshalb eben hier die Frage. Meistens 
ist ja bei 115k Schluss. Wie sieht es hier beim AVR aus?

Gemäß der Theorie liegt bei einer f-cpu=18.432 MHz der UBRR bei 5,144 
(ergibt bei Rückrechnung mit 5 eine Baudrate von 192000 -> 2,4 % 
Abweichung). Aber klappt das auch so in der Praxis?

Andre

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn du eine unübliche Baudrate verwenden willst, solltest du nicht 
unbedingt einen für Standardbaudraten geeigneten Quarz wählen...:-)

Autor: Andre (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, mit dem Quarz kann man ja immer noch etwas experimentieren (16 MHz 
sind noch schlechter). Mir geht es aber mehr um den Fakt, ob der 
Hardware-UART überhaupt so schnell kann (und nicht nur theoretisch).

Autor: Anonymous (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
The maximum baud rate for the USART of an AVR is above 1 Mbps.
See in the datasheet "Examples of Baud Rate Setting".

A 12 MHz crystal, baud rate register set to 3 will give
a perfect 187500 baud rate. (0% baud rate error).
Schuricht Distrelec: 644586

A 15 MHz crystal, baud rate register set to 4 will give
a perfect 187500 baud rate. (0% baud rate error).
Schuricht Distrelec: 644592

A 18 MHz crystal, baud rate register set to 5 will give
a perfect 187500 baud rate. (0% baud rate error).
Schuricht Distrelec: 644596

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
187,5 ist kein problem für den AVR
wie o.a. einen quarz mit vielfachem von 3 MHz

Mega8 geht nur bis 16 -> 15MHz  80 TZ/Byte
Mega x bis 20 -> 18MHz  96 TZ/Byte

Mit den Taktzyklen (TZ) kann man noch viel machen und die Hardware
mit Buffer sagt einem ja, wann man nachladen muß (Interrupt)

gruß hans

PS leichtes übertakten ist immer möglich (Mega 8 mit 18 ;) )

Autor: Andre (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke an alle.

@Anonymous: Stimmt, ein Blick ins Datenblatt hätte mir wohl geholfen... 
;o)

Autor: B e r n d W. (smiley46)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die 115200 kBaud Grenze kommt vom Pegelwandler wie z.B. Max232 o.Ä. Wenn 
Du den entsprechenden RS485 Baustein verwenden würdest, gingen 1 Mbit 
locker. Die einzige Frage, ob die Daten so schnell beigeschafft werden 
können. Da wären dann >=16MHz angenehm.

Bernd

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
187,5kBd? Möchtest du MPI nachbilden?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Mega x bis 20 -> 18MHz  96 TZ/Byte

Beim Standardformat 8N1 kommt man auf ca. 960 Taktzyklen/Byte bei 18MHz. 
Das lastet einen AVR mit ca. 5% aus (Rx und Tx mit FIFO).
Software UARTs sind oberhalb von 38,4kBd kritisch, wenn noch andere 
Interrupts im Programm zugelasssen sind.

Autor: Stefan M. (interceptor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gerd wrote:
> 187,5kBd? Möchtest du MPI nachbilden?

Na MPI ist zu speziell ...

Ich denke er hat irgendwas mit Profibus im Allgemeinen vor.
(MPI ist zu Profibus kompatibel, ich weiß)

Mit freundlichen Grüßen

Stefan

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.