www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega324p mit 1,5 Mbps UART


Autor: Simon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe da mal ins Datenblatt gesehen.
Auf der Seite 198 sind Tabellen zum thema UART geschwindigkeit.
Ich wuerde gerne ein 18.4320 MHz quarz nehmen.

Nur schon bei 1 Mbps sind da nur noch striche in der Tabelle.

(soll mal eine Profibus verbindung werden)

Autor: Gastgastgast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo ist denn jetzt die Frage???
Der ATMega324p ist im Datenblatt mit max. 16MHz angegeben. Nur mal so 
als Hinweis.

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Autor: Gastgastgast (Gast)
>>Wo ist denn jetzt die Frage???
>>Der ATMega324p ist im Datenblatt mit max. 16MHz angegeben. Nur mal so
>>als Hinweis.

Nur mal so als hinweis, stimmt nicht... je nach Spannung kann der 
ATMega324P gemäss datasheet bis 20MHz betrieben werden...

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst in Deinem Fall nicht das da machen:

> Ich wuerde gerne ein 18.4320 MHz quarz nehmen.

sondern musst Dich nach der Decke strecken und den Quarz passend
zur gewünschten Baudrate aussuchen.  Nach der Tabelle auf
Seite 174 im double Speed Mode, aufgelöst nach fosc, wären das
12 MHZ bei UBRRn = 0.  Jedenfalls wenn ich richtig überschlagen
habe.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Simon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wisst ihr was ich langsam glaube...
war es nicht mal so das es ein vielfaches von 9600 sein muss..
sprich 1,5 Mbps ist vermutlich 1,5xxx Mbps

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Korrekt. Solange auf beiden Seiten der Verbindung dieselbe Frequenz 
eingestellt ist, kann man irgendwelche Buadraten fahren.

Autor: Simon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nur die andere seite ist leider vorgegeben, von Siemens. z.B einer S7 
315-2DP


Also wenn ich das so sehe...
1,5 -> 1500 kbps -> 1500000 bps

dann waeren das 157 x 9600 bps = 1507200 bps

1,507200 Mbps

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Profibus kennt auf RS485 9,6/19,2/45,45/93,75/187,5/500/1 500/3 000/6 
000/12 000 kbit/s (<- copy&paste aus Beschreibung).  Also nix mit 
durchgehend Vielfachen von 9600.  Die 1,5M sind 1500000 bps.

Autor: Simon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, wie funktioniert das dann, dass die leute

9,6 kbps unterstuetzen das selbe geraet aber auch 1,5 Mbps kann?

Nehmen wir an ich habe den Atmega324p und dann auch den quarz
18.4320 MHz drann.

der waere ideal fuer 9,6 kbps aber 1,5 Mbps kann ich nicht erreichen.

Autor: Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt ASICS z.B. von Profichip, die stellen sich automatisch auf die 
Profibus-Geschwindigkeit ein.
Mittlerweile auch in 6x8mm über SPI / I²C ansteuerbar.
Firmware für 8051 gibt es gratis dazu.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon schrieb:

> 9,6 kbps unterstuetzen das selbe geraet aber auch 1,5 Mbps kann?

Kritisch sind die hohen Raten, nicht die niedrigen. Aus 18,432MHz lassen 
sich mit hinreichender Genauigkeit keine 1,5Mbps ableiten, aber aus 
12,000MHz lassen sich 1,5Mbps exakt ableiten (Teiler 1 bei /8), und 
19,2Kbps hinreichend genau (Teiler 39 bei /16, mit 0,1% Fehler).

Autor: Simon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja ich hatte vor zumindest ein kleinen Teil des Protokolls direkt mit 
dem Atmega unterstuetzen zu koennen, ohne extra ICs zu brauchen

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon schrieb:
> ok, wie funktioniert das dann, dass die leute
>
> 9,6 kbps unterstuetzen das selbe geraet aber auch 1,5 Mbps kann?
>
> Nehmen wir an ich habe den Atmega324p und dann auch den quarz
> 18.4320 MHz drann.

Die haben dann eben nicht den "ATMega324p und 18.4320 MHz dran".

Es gibt viele Möglichkeiten, krumme Baudrates zu generieren, die nicht 
zum Quarz passen.  Ein externer Baudrategenerator gehört zu denen.

Autor: Simon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich frage mich wieso die nicht einfach das vielfache von 9600 genommen 
haben.
das haette man dann Problemlos mit einem quarz machen koennen.

Die meisten profibus slaves koennen Problemlos zwischen den 
geschwindigkeiten wechseln von 9,6k - 12 Mbps.

Wie ist das da gelöst?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Simon schrieb:

> Ich frage mich wieso die nicht einfach das vielfache von 9600 genommen
> haben. das haette man dann Problemlos mit einem quarz machen koennen.

Ach? Seit wann können einfache Taktteiler multiplizieren? Dafür wäre 
dann in jeder Node eine PLL für den Interfacetakt erforderlich gewesen.

> Wie ist das da gelöst?

Das lassen sich wie oben gezeigt alle aus 12MHz bzw. einem Vielfachen 
davon ableiten, teils exakt, teils mit vernachlässigbarem Fehler.

Die ursprüngliche Taktfrequenz vom 8051 war 12MHz. Zufall?

Autor: Simon (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Tatsache, mit 12 MHz kann man (siehe Tabelle, profibus Geschwindigkeiten 
gelb)

einige Geschwindigkeiten 0,5 1,5 Mbps gut abdecken, selbst die langsamen 
haben einen Fehler von 0,2%


Wie machen die das mit der Automatischen erkennung der 
Uebertragungsrate?

Zeichen empfangen und wenn die keine ordentlichen Daten enthalten oder 
die pruefsumme nicht stimmt einfach umschalten und sehen obs da besser 
ist?

Vielen Dank fuer die Hilfe!

Autor: James (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Automatische Erkennung der BAudrate geht auch noch so:
Ein bestimmtes ASCII-Zeichen, gerne wird das Blank (0x20)
verwendet, hernehmen. Beim Blank wird dann die 1-Bit 1-Zeit
gemessen und daraus die Baudrate errechnet, bzw. der Teiler-
faktor bestimmt. Funktioniert relativ unabhängig von der Oszillator-
Frequenz.

Logisch, daß die Baudrate über die Teiler einstellbar sein muß.

Statt dem Blank geht auch die ASCII-"0" -0x30, dann ist die H-Zeit 2 Bit 
breit.

Beim 8051 sowie bei Atmels funktioniert es nach meiner Erfahrung
recht gut. (Beides im Einsatz)

Gruß

James

Autor: Simon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie laesst sich das direkt mit dem UART machen?
Wie hat man da Zugriff auf das einzelne bit?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Je nach Controller kann man auch bei der UART zugeordnetem Pin direkt 
den Zustand des Pins lesen, oder doch zumindest bei inaktiver UART als 
ganz normalem Portpin.

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.