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


von Kapitän Blei (Gast)


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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von Peter D. (peda)


Lesenswert?

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


Peter

von Kapitän Blei (Gast)


Lesenswert?

Ok Thx

von Charles (Gast)


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.

von Kapitän Blei (Gast)


Lesenswert?

Mit welchem Quarz?

von Benedikt (Gast)


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.

von Charles (Gast)


Lesenswert?

>Mit welchem Quarz?

16MHZ

von Kapitän Blei (Gast)


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
}

von Peter D. (peda)


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

von Werner B. (Gast)


Lesenswert?

@Kapitän Blei,

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

von Kapitän Blei (Gast)


Lesenswert?

Jow das habe ich was übersehen. Ich habe vergessen das Makefile
anzupassen.

Jetzt funzt es.

Danke an beide


Gruss

Blei

von mr.chip (Gast)


Lesenswert?

Hallo

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

Gruss

Michael

von Die meisten Elche (Gast)


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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von arc (Gast)


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

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.