Forum: Mikrocontroller und Digitale Elektronik 230400 Baud mit Arduino


von Andre (Gast)


Lesenswert?

Hallo

Ich versuche mit einem Sainsmart Mega2560 und Arduino eine Baudrate von 
230400 zu bekommen.
Der Standart Quarz von 16 MHZ konnte dies Baudrate nicht Erfüllen.
Also habe ich Kurzer Hand einen 11,0592 MHZ Quarz eingesetz.
Der Quarz sollte Laut Datenblatt des 2560 mit 230400 Bud laufen.
Nun habe ich den Bootloader und die Boards.txt der Ardino Software 
Angepasst.
Habe ein Test Programm Geschrieben und Drauf geschoben.

void setup()
{
  Serial.begin(9600);
  Serial.println("\r\r Test Baudrate");
  delay(5000);
}

mit bis zu 115200 geht alles super.
Aber sobald ich darüber komme ist vorbei.
Ich bekomme keine Daten mehr bzw. nur noch Hieroglyphen.

Was mache ich Falsch.?

ich nehme die auf dem Board befindliche USB/Serielle schnittstelle die 
auch bis 230400 kann laut datenblatt.

MFG: Andre

von S. R. (svenska)


Lesenswert?

Ein 16550 kann keine 230.400 Baud. Wie schließt du das Gerät an den PC 
an?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

S. R. schrieb:
> Ein 16550 kann keine 230.400 Baud.

Deutlicher:

Die Onboard-Schnittstellen von PCs können nicht mit mehr als 115200 Baud 
betrieben werden. Das ist eine Hardwarebeschränkung.

Höhere Baudraten sind nur mit anderen Schnittstellen möglich, also 
welchen, die auf einer PCI/PCIe-Karte oder als USB-Seriell-Bridge 
untergebracht sind.

Was irgendwelche Programme in ihren Auswahllisten für Baudraten 
anbieten, hat garnichts mit den von der angeschlossenen Hardware 
tatsächlich unterstützten Baudraten zu tun, das sind i.d.R. mehr oder 
weniger willkürlich von den Programmierern zusammengestellte Listen mit 
verbreiteten Baudratenwerten.


-- Der 16550 kann ebenso wie sein Urahn 8250 natürlich auch mehr als 
115200 Baud, aber dafür müsste er mit einem anderen Baudratentakt als 
den standardisierten 1.8432 MHz betrieben werden. Das aber ist im PC 
weder ohne weiteres möglich noch ratsam (ersteres, weil kein separater 
Quarzoszillator mehr für diese Aufgabe verwendet wird, letzteres, weil 
die Devicetreiber nichts vom geänderten Quarz wissen, man also "falsche" 
Baudraten einstellen müsste).

: Bearbeitet durch User
von Klaus (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Das aber ist im PC weder ohne weiteres möglich ...

Der serielle Chip in seiner ursprünglichen Form wird garnicht mehr 
existieren, seine vom User sichtbaren Register werden in irgendeinem 
Chipset/MultiIOchip nur noch emuliert

MfG Klaus

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Klaus schrieb:
> seine vom User sichtbaren Register werden in irgendeinem
> Chipset/MultiIOchip nur noch emuliert

Emuliert wird da nichts, da ist einfach ein 16550-IP-Core verbaut.

von Andre (Gast)


Lesenswert?

Hallo

@ S. R. (svenska)
Ich schliese ihn über USB an den PC an.
Auf dem Arduino Board ist eine USB Schnittstelle mit der man die Sketche 
drauf läd. und darüber kann man auch die Serielle Schnittstelle nutzen. 
das Wandeln von USB/Seriell macht ein Mega8U2.

@Rufus Τ. Firefly (rufus)
Ich nutze doch Aber USb nicht PCI/PCIe. Das dürfte dann doch aber gehen. 
oder sehe ich das Falsch.

MFG Andre

von photon (Gast)


Lesenswert?

Also die FTDI Chipsätze können auch krumme und höhere Baudraten.
250k hab ich zum Beispiel in einer Anwendung.

>das Wandeln von USB/Seriell macht ein Mega8U2.
Kommt halt drauf an, was der unterstützt

von Klaus (Gast)


Lesenswert?

Rufus Τ. Firefly schrieb:
> Emuliert wird da nichts, da ist einfach ein 16550-IP-Core verbaut.

Wenn dir denn diese Formulierung lieber ist ....

MfG Klaus

von ./. (Gast)


Lesenswert?

Sowohl der FTDI FT232RL Treiber V2.8.23.0 W7/32
als auch der Prolific PL232HX Treiber 3.3.5.122 W7/32

unterstuetzen 232400 als Baudrate mit einem vom WXP ausgeborgtem
Hyperterm.

Getestet mit einem (Soft-)UART auf einem kleinen PIC12F683 bei 8 MHz.

von ./. (Gast)


Lesenswert?

> 232400
Das sollten natuerlich 230400 sein.

Zusammen mit TeraTermPro 4.67 funktioniert es natuerlich auch.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Andre schrieb:
> Also habe ich Kurzer Hand einen 11,0592 MHZ Quarz eingesetz.
> Der Quarz sollte Laut Datenblatt des 2560 mit 230400 Bud laufen.

Hast du auch den Quarz des ATmega8 ersetzt?

Bist du sicher, dass die Software auf dem ATmega8 höhere Baudraten als
115200 unterstützt?

Woher weiß die Software auf dem ATmega2560 und dem ATmega8, dass der
Quarz eine andere Frequenz hat? Vielleicht weiß sie es überhaupt nicht,
und du musst statt der 230400 Baud 230400·16000000/11059200=333333 Baud
einstellen.

von André (Gast)


Lesenswert?

Ich habe den bootloader des Mega2560 bzw. der, der für das arduino da 
ist im makefile angepasst und auch in der c Datei die dazu ist.
Und die boards.txt habe ich auch angepasst.
Sonst könnt ich keine Sketche auf das arduino Board schieben.

Das der mega8 keinen 11..... Quarz hat habe ich vergessen zu erwähnen, 
und ist mir eben erst selbst aufgefallen.

Heißt er kann es am Ende nicht.

Ich habe noch einen ftdi USB/seriell Adapter da.

Der zeigt mir beim installieren unter win7 eine baudrate von 230400 an.

Der kann auch höher.

Hintergrund der Geschichte ist, das ich ein gps Modul habe was standart 
auf 9600 baud läuft. Aber da an dem Modul noch ein mainboard hängt sagt 
das mainboard dem gps Modul das es auf 230400 Baudenkmäler senden soll.
Somit kann ich mit standart seriellen Geschwindigkeiten nichts machen.

Lg: Andre

von Mirco C. (Firma: s@Td) (mcontroller)


Lesenswert?

Wenn du nur lauschen willst was da passiert könntest auch direkt mit 
deinem ftdi drangehen (auf die Spannungslevel natürlich achtend).

von Fichte (Gast)


Lesenswert?

Lauschen und via avr auf sd mit loggen.
Die Idee mit dem ftdi hatte ich auch.
Aber nütz nicht viel wenn man loggen möchte.

Lg Andre

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.