www.mikrocontroller.net

Forum: Compiler & IDEs Welche Baudrate erreicht ihr mit 16 Mhz


Autor: Kapitän Blei (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich wollte mal fragen welche maximale Baudrate ihr mit einem ATMega32
mit einem 16Mhz Quarz erreicht habt/könnt?

Welcher Wert ist noch vertretbar ?


Gruss

Kapitän Blei

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Datenblatt eines jeden AVR enthält eine Liste von Baudraten
und Vorteilern in Abhängigkeit von der CPU-Frequenz, mitsamt dem
damit erzielbaren Baudratenfehler.  Da kannst du nachgucken.

Da 16 MHz nicht durch die ,,Standard''-Baudraten teilbar ist,
haben die erzeugten Baudraten allesamt einen kleine Fehler.
Fehler unter 1 % gelten allgemein als tolerabel.

Faustformel: bei 1 MHz kann man mit gesetztem U2X (8-fach
oversampling statt 16-fach) 9600 Bd generieren.  Bei 16 MHz
sind also 38400 Bd auch ohne U2X locker drin.  Oberhalb 38400 Bd
gibt es keine Standard-Baudraten mehr.  Im PC-Bereich wurden dort
noch 57600 und 115200 hinzu erfunden, da es die einzigen beiden
verbliebenen Möglichkeiten des Vorteilers der Standard-UART waren.
Mit welchem Fehler sich diese bei 16 MHz erzeugen lassen => siehe
Datenblatt.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm die üblichen 11,0592 oder 14,7456MHz, dann sind 115200 Baud kein
Problem.


Peter

Autor: Kapitän Blei (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok Thx

Autor: Charles (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab mit einem MEga16 die 1 Mbit geschafft.

Der Aufbau war wie folgt:

PC -> USB/RS232 Wandler (FTDI232) -> Mega16

Die Übertragung verlief in beide Richtungen fehlerfrei.

Autor: Kapitän Blei (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit welchem Quarz?

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
2Mbit/s @16MHz sind auch möglich, wenn man den U2X setzt.
Maximal habe ich bisher 3MBit bei einem tiny2313 @ 24MHz verwendet.
Lieft wunderbar mit Software CTS.

Autor: Charles (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Mit welchem Quarz?

16MHZ

Autor: Kapitän Blei (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich habe nun ein 14,745600 MHz Quartz gekauft und aufs STK500 Board
gesteckt und den Jumper umgesteckt und den Code angepasst. Leider
empfange ich von jetzt an das falsche Zeichen.

Ich habe die Fuse auf:
"Ext.Crystal/Resonator High Frequenz. Startup Time 16k + 0ms"
gesetzt, wie auch andere andere Einstellungen ohne Erfolg probiert.
Bin jetzt total Ratlos.

Wer findet den Fehler?



USART_Initial(void)
{
  #ifndef F_CPU
  #define F_CPU 14745600
  #endif
  #define UART_BAUD_RATE 9600
  #define UART_BAUD_CALC(UART_BAUD_RATE,F_OSC)
((F_CPU)/((UART_BAUD_RATE)*16L)-1)

  UBRRH=(uint8_t)(UART_BAUD_CALC(UART_BAUD_RATE,F_CPU)>>8);
  UBRRL=(uint8_t)UART_BAUD_CALC(UART_BAUD_RATE,F_CPU);

  UCSRB = (1<<RXEN)|(1<<RXCIE)|(1<<TXEN)
|(1<<UCSZ1)|(1<<UCSZ0);  //Empfangen, Senden aktivieren
  UCSRC = (1<<URSEL)|(1<<USBS)|(1<<UCSZ1);      //Set frame format: 
8data,
1stop bit
}

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Startup Time 16k + 0ms"


Das ist falsch, Quarze brauchen 5..20ms zum anschwingen, also immer
+64ms auswählen und bei >8Mhz die CKOPT nicht vergessen.


Peter

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Kapitän Blei,

hast du F_CPU auch im makefile angepasst? Das hat vorrang!

Autor: Kapitän Blei (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jow das habe ich was übersehen. Ich habe vergessen das Makefile
anzupassen.

Jetzt funzt es.

Danke an beide


Gruss

Blei

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ist es normal, dass der PC nicht mehr als 115200 schafft? Oder könnte
man dies irgendwie verbessern?

Gruss

Michael

Autor: Die meisten Elche (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, die Standard-UART im PC (8250, 16450 bzw. seit bald 15 Jahren
16550) verwendet als Baudratengenerator einen Quarz(-oszillator) mit
1,8432 MHz. Das durch 16 geteilt ergibt 115200.

Schneller geht es nur mit speziellen Schnittstellenkarten oder
USB-Seriell-Adaptern.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Externer Quarz + Startup-Einstellungen sind übrigens beim STK500
falsch, dort müsste man genau genommen "externer Oszillator"
einstellen, denn der STK500 bringt seinen eigenen Oszillator mit.
Da dieser auch ständig schwingt, braucht man sich nicht um die
Startup-Zeit kümmern.

Autor: arc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Nein, die Standard-UART im PC (8250, 16450 bzw. seit bald 15 Jahren
> 16550) verwendet als Baudratengenerator einen Quarz(-oszillator) mit
> 1,8432 MHz. Das durch 16 geteilt ergibt 115200.

Die heutigen Super-I/Os haben diese Begrenzung schon lange nicht mehr

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.