mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hterm 1M Baud


Autor: M_s (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ist mit dem Terminalprogramm HTerm eine Baudrate von 1M Baud möglich. 
Also der µC unterstüztz diese Baudrate. Und wie sieht es mit Windows 
aus? Kann es da zu Problemen kommen?

Autor: Peter II (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
M_s schrieb:
> Und wie sieht es mit Windows
> aus? Kann es da zu Problemen kommen?

Windows reicht es auch nur an den Treiber durch. Wenn der Treiber und 
die Hardware es kann. gibt es damit keine Probleme.

Autor: Cyblord -. (cyblord)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
M_s schrieb:
> Hallo,
>
> ist mit dem Terminalprogramm HTerm eine Baudrate von 1M Baud möglich.
> Also der µC unterstüztz diese Baudrate. Und wie sieht es mit Windows
> aus? Kann es da zu Problemen kommen?

Hängt weniger von hterm oder von Windows ab, als mehr von deiner 
Hardware. Du lässt dich ja noch nicht mal dazu herab, zu erzählen ob es 
sich um eine direkte serielle Schnittstelle auf deinem Mainboard oder um 
einen USB-Seriell-Adapter handelt. Geschweige denn um welchen Chip, im 
letzteren Fall.
Also was willst du eigentlich?

Autor: M_s (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Cyblord -. schrieb:
> Hängt weniger von hterm oder von Windows ab, als mehr von deiner
> Hardware. Du lässt dich ja noch nicht mal dazu herab, zu erzählen ob es
> sich um eine direkte serielle Schnittstelle auf deinem Mainboard oder um
> einen USB-Seriell-Adapter handelt. Geschweige denn um welchen Chip, im
> letzteren Fall.
> Also was willst du eigentlich?

Arduino Mega.
Also ein ATmega 2560 und für den uart ein atmega8u2

Autor: M_s (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann beschreib ich mal mein Problem ;)
Ich schicke einen Datensatz vom Arduino Mega über die serielle 
Schnittstelle an einen Computer. Hierfür benutze ich das 
Terminalprogramm hTerm.

Zuerst habe ich mir selber die theoretisch mögliche Übertragungsfrequenz 
für die Daten berechnet und diese dann mit der exakten Übertragungsrate 
der Messwerte verglichen. Bis 250 kBaud hat dies auch sehr gut 
funktioniert. Nur bei 1 Mbaud liegt die Übertragungsfrequenz deutlich 
unter der von mir theoretisch berechneten.

Ich frage mich nun, woran dies liegen könnte, dass etwa die hälfte der 
Daten nicht übertragen wird.

Autor: Cyblord -. (cyblord)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
M_s schrieb:
> Cyblord -. schrieb:
>> Hängt weniger von hterm oder von Windows ab, als mehr von deiner
>> Hardware. Du lässt dich ja noch nicht mal dazu herab, zu erzählen ob es
>> sich um eine direkte serielle Schnittstelle auf deinem Mainboard oder um
>> einen USB-Seriell-Adapter handelt. Geschweige denn um welchen Chip, im
>> letzteren Fall.
>> Also was willst du eigentlich?
>
> Arduino Mega.
> Also ein ATmega 2560 und für den uart ein atmega8u2

Na klar Arduino....
Das hängt wohl maßgeblich vom atmega8u2 ab. Was der kann? Frage den der 
das Board hergestellt bzw. verkauft hat.

Ansonsten nimm doch mal Spaßeshalber einen USB-TTl Adapter mit FTDI oder 
CP2102 und auch CH340 Chip und teste damit ob die mit 1MBaud klar 
kommen.

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
M_s schrieb:
> Zuerst habe ich mir selber die theoretisch mögliche Übertragungsfrequenz
> für die Daten berechnet

was muss man da rechnen?

Autor: M_s (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter II schrieb:
> was muss man da rechnen?

Wie oft das Datenpaket pro Sekunde an den Computer übergeben wird.

Autor: Mikke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau mal Hier:

https://www.mikrocontroller.net/articles/AVR-Tutorial:_UART

bei wichtiger Hinweis 2

Autor: M_s (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Mikke schrieb:
> Schau mal Hier:
>
> https://www.mikrocontroller.net/articles/AVR-Tutorial:_UART
>
> bei wichtiger Hinweis 2

Das hilft mir nicht weiter. Der Arduino arbeitet nicht mit dem interen 
RC-Oszillator. Auch der Fehler liegt unter einem Prozent.

Autor: Draco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das heißt: Du schickst das vom Mega2560 an den Mega8u2 und schickst es 
dann vom Mega8u2 an den Rechner?

Was sagt denn der Mega8u2 zum Thema "1MBaud"?

Autor: M_s (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Draco schrieb:
> Das heißt: Du schickst das vom Mega2560 an den Mega8u2 und
> schickst es
> dann vom Mega8u2 an den Rechner?
>
> Was sagt denn der Mega8u2 zum Thema "1MBaud"?

Laut dem Datenblatt sollte er damit auch keine Probleme haben

Autor: Draco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
M_s schrieb:
> Laut dem Datenblatt sollte er damit auch keine Probleme haben

Ja es kommt ja darauf an, wie und welche CDC auf dem Mega8u2 läuft. Die 
CDC laut AppNote? http://www.atmel.com/Images/doc7619.pdf ?

Autor: M_s (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Draco schrieb:
> Ja es kommt ja darauf an, wie und welche CDC auf dem Mega8u2 läuft. Die
> CDC laut AppNote? http://www.atmel.com/Images/doc7619.pdf ?

Okay, da habe ich mich nicht drum gekümmert. Das ist ja auf dem Arduino 
Boards schon erledigt worden. Kann ich das irgendwo nachschlagen und 
wenn ja worauf muss ich dann im Bezug auf meine Frage achten?

Autor: M_s (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
M_s schrieb:
> Dann beschreib ich mal mein Problem ;)
> Ich schicke einen Datensatz vom Arduino Mega über die serielle
> Schnittstelle an einen Computer. Hierfür benutze ich das
> Terminalprogramm hTerm.
>
> Zuerst habe ich mir selber die theoretisch mögliche Übertragungsfrequenz
> für die Daten berechnet und diese dann mit der exakten Übertragungsrate
> der Messwerte verglichen. Bis 250 kBaud hat dies auch sehr gut
> funktioniert. Nur bei 1 Mbaud liegt die Übertragungsfrequenz deutlich
> unter der von mir theoretisch berechneten.
>
> Ich frage mich nun, woran dies liegen könnte, dass etwa die hälfte der
> Daten nicht übertragen wird.

Hat vielleicht noch jemand eine Idee?

Autor: Sascha W. (sascha-w)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

welche Baudrate geht hängt ja von den Möglichkeiten des Baudratenteilers 
der Hardware (hier des 8u2) ab. Wenn du versuchst auf eine Baudrate zu 
konfigurieren die nicht möglich ist wird das Device die nächst (mögliche 
o. kleinere?) Baudrate einstellen.
Was heißt überhaupt es kommt nur die Hälfte an? Wenn die Baudraten des 
8u2 (vom PC konfiguriert) und des ATMega (von Deiner Software 
konfiguriert) nicht zusammenpassen kommt überhaupt nichts an!

Sascha

Autor: M_s (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sascha W. schrieb:
> Hallo,
>
> welche Baudrate geht hängt ja von den Möglichkeiten des Baudratenteilers
> der Hardware (hier des 8u2) ab. Wenn du versuchst auf eine Baudrate zu
> konfigurieren die nicht möglich ist wird das Device die nächst (mögliche
> o. kleinere?) Baudrate einstellen.

Also die Baudraten wurden auf 1M Baud gesetzt. Diese wird auch von 
beiden μC unterstüztz.

> Was heißt überhaupt es kommt nur die Hälfte an?

Das habe ich viellleicht ein bisschen unpassend formuliert. Also 
Theoretisch sollte mein Datenpaket 10k mal pro Sekunde übetragen werden. 
Tätsächlich wird es aber nur 5k mal pro Sekunde übertragen. Meine 
Berechnung für die theoretische Übertragungsrate passt aber, bei 
kleineren Baudraten ist diese nämlich aufgegangen.

Autor: Cyblord -. (cyblord)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
M_s schrieb:
> Sascha W. schrieb:
>> Hallo,
>>
>> welche Baudrate geht hängt ja von den Möglichkeiten des Baudratenteilers
>> der Hardware (hier des 8u2) ab. Wenn du versuchst auf eine Baudrate zu
>> konfigurieren die nicht möglich ist wird das Device die nächst (mögliche
>> o. kleinere?) Baudrate einstellen.
>
> Also die Baudraten wurden auf 1M Baud gesetzt. Diese wird auch von
> beiden μC unterstüztz.

Woher weißt du das? Kennst du das Programm im Mega8u? Nur weil er das 
KÖNNTE heißt das nicht dass das auch programmatisch so umgesetzt wurde.

Autor: M_s (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Cyblord -. schrieb:
> Woher weißt du das? Kennst du das Programm im Mega8u? Nur weil er das
> KÖNNTE heißt das nicht dass das auch programmatisch so umgesetzt wurde.

Aber wenn die Baudraten nicht zusammen passen, dann dürfte doch nichts 
ankommen.

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
M_s schrieb:
> Aber wenn die Baudraten nicht zusammen passen, dann dürfte doch nichts
> ankommen.

Wenn die Baudraten nicht zusammenpassen kommt meist mittelschwer bis 
vollständig verunstalteter Datenmüll an. Die höchstwertigen Bits gehen 
zuerst kaputt. Wenn sie sehr weit auseinander liegen kann ein geübtes 
Auge beim Betrachten des Datenmülls erkennen ob zu hoch oder zu niedrig.

Wenn beide AVRs auf dem Arduino mit der selben Taktfrequenz getaktet 
werden kann man auch vollkommen "krumme" Baudraten mit ungünstig kleinen 
Teilern verwenden weil dann in beiden Controllern am Ende dennoch die 
selbe krumme Baudrate generiert wird.

Notfalls mal kurz das Oszi dranhängen und die tatsächlichen Baudraten 
ermitteln um Klarheit zu erlangen, das geht schneller als Kopfkratzen 
und Rätselraten.

: Bearbeitet durch User
Autor: Sigi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1M Baudrate sollte kein Problem sein.

Ich habe auf einigen FPGA-Devboards
den CP2102 oÄ, und da gab's keine
Probleme mit HTerm. Schau Dir also
mal die Übertragung per Oszi an.

Autor: Christian M. (chrigi001)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
M_s schrieb:
> Also
> Theoretisch sollte mein Datenpaket 10k mal pro Sekunde übetragen werden.
> Tätsächlich wird es aber nur 5k mal pro Sekunde übertragen.

Das deutet aber eher darauf hin, dass deine Software im ATmega2560 zu 
langsam ist. Wenn die Baudrate auf einer Seite der Übertragung falsch 
währe würden keine brachbaren Datenpakete ankommen.

: Bearbeitet durch User
Autor: M_s (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian M. schrieb:
> Das deutet aber eher darauf hin, dass deine Software im ATmega2560 zu
> langsam ist. Wenn die Baudrate auf einer Seite der Übertragung falsch
> währe würden keine brachbaren Datenpakete ankommen.

Für andere Baudraten klappt es aber... Und der Programmcode bleibt 
gleich. Nur bei der Baudrate von 1 Mbaud kommt's nicht hin.

Autor: Draco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sigi schrieb:
> 1M Baudrate sollte kein Problem sein.
>
> Ich habe auf einigen FPGA-Devboards
> den CP2102 oÄ, und da gab's keine
> Probleme mit HTerm. Schau Dir also
> mal die Übertragung per Oszi an.

Hier gehts aber nicht um nen CP2102 oder nen FTDI sondern um ein Mega8u2 
als USB-UART Converter.

M_s schrieb:
> Für andere Baudraten klappt es aber... Und der Programmcode bleibt
> gleich. Nur bei der Baudrate von 1 Mbaud kommt's nicht hin.

Für höhere Taktraten funktioniert es?!

Was damit gemeint ist: Bist du dir sicher das der Mega2560 überhaupt in 
der Lage ist, deine 10k Datenpakete so schnell zu verarbeiten und über 
die UART auszugeben?! Naja nichtsdestotrotz müsste er ja die 1MBaud 
raushauen. Das wäre aber nen UBBR von 0! Was macht dein Programm sonst 
noch so? Also explizit: welche Interrupts werden aufgerufen?

Zeig mal nen Sourcecode her.

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dumme Zwischenfrage zu CDC.

spielt die Baudrate überhaupt eine Rolle? Das ganze ist nur RS232 
simuliert über USB. Die Taktrate von USB steht ja fest. Es wird ja 
nirgends wirklich die Bits mit der eingestellten Baudrate übertragen. 
Das ganze ist doch nur wichtig, wenn man ende in RS232 (Rx,TX) gewandelt 
wird. Hier werden doch aber die Daten direkt in den µC übertragen.

Ich kennte zumindest viele Geräte, wo man jede beliebe Baudrate 
einstellen kann und diese arbeiten dann immer noch gleich.

Ich hätte gedacht, die Baudrate wird nur der gegenstelle mitgeteilt, als 
Info, aber eine Auswirkung hat sie nicht wirklich.

Autor: Christian M. (chrigi001)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter II schrieb:
> spielt die Baudrate überhaupt eine Rolle? Das ganze ist nur RS232
> simuliert über USB

Auf den Arduino Dingern hat es ein uC und ein USB zu UART Konverter (bei 
Arduino meistens ein zweiter uC oder ein Bauteil von FTDI). Diese 
kommunizieren per UART miteinander. Die Anbindung an den PC geschieht 
also nicht direkt über USB sondern über diesen Konverter.

Autor: Draco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter II schrieb:
> Dumme Zwischenfrage zu CDC.
>
> spielt die Baudrate überhaupt eine Rolle? Das ganze ist nur RS232
> simuliert über USB. Die Taktrate von USB steht ja fest. Es wird ja
> nirgends wirklich die Bits mit der eingestellten Baudrate übertragen.
> Das ganze ist doch nur wichtig, wenn man ende in RS232 (Rx,TX) gewandelt
> wird. Hier werden doch aber die Daten direkt in den µC übertragen.
>
> Ich kennte zumindest viele Geräte, wo man jede beliebe Baudrate
> einstellen kann und diese arbeiten dann immer noch gleich.
>
> Ich hätte gedacht, die Baudrate wird nur der gegenstelle mitgeteilt, als
> Info, aber eine Auswirkung hat sie nicht wirklich.

Der Verlauf sieht grad folgendermaßen aus:
Atmega2560  --->  Atmega8u2 ---> PC
            UART            CDC 

Der Schwachpunkt in der Kette ist der Mega8u2. Beziehungsweise, denke 
ich mal momentan, das der Mega2560 schlichtweg überlastet ist, und die 
Datenpakete garnicht alle rausbekommt (10.000 mal in der Sekunde) und 
die Übertragung einfach durch irgendeinen INT unterbrochen wird.

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Draco schrieb:
> Der Verlauf sieht grad folgendermaßen aus:
> Atmega2560  --->  Atmega8u2 ---> PC

ok, das erklärt das natürlich.

Autor: Gerhard G. (xmega)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

1 Mhz ist keine Standardbaudrate für ein Terminalprogramm.

921600bps kann man aber bei HTerm einstellen.

Habe mit dem Atxmega und HTerm fehlerfrei 921600bps übertragen.

//Atxmega32A4U -> FT2232H -> (PC) HTerm 0.8.1

Atxmega32A4U Takt:

// 16Mhz Quarz * 3 PLL ist 48 Mhz Systemtakt

F_CPU 48000000 liegt aber außerhalb der Spezifikation!

Autor: Toralf W. (willi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Morgen,

Gerhard G. schrieb:
> 1 Mhz ist keine Standardbaudrate für ein Terminalprogramm.
>
> 921600bps kann man aber bei HTerm einstellen.

in HTerm kannst auch 1 MHz einstellen, einfach nicht die Auswahlbox 
nehmen, sonder per Hand dort eintragen was Du brauchst / willst, das 
geht.

Ich habe einen normale mega mit 16 MHz und CP2102 (ich weiß um den dreht 
es sich hier nicht) mit glatt 500000bps am laufen, das geht problemlos 
und auch stabil, mit 1 Mbps nicht mehr. Auf einem Ardunio, mit Ardunio 
Framework..... ist das mit Sicherheit der Flaschenhals, da kommen 
einfach nicht genug Pakete mehr raus um die 1Mbps auch vollständig 
ausnutzen zu können...

LG

Autor: Cyblord -. (cyblord)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gerhard G. schrieb:
> Hallo,
>
> 1 Mhz ist keine Standardbaudrate für ein Terminalprogramm.

1 MHz ist überhaupt keine Baudrate sondern eine Frequenz.

Und sowohl mit hterm als auch mit heutigen USB Umsetzern kann man nahezu 
beliebige Baudraten einstellen. Man ist nicht auf vorgegebene Baudraten 
beschränkt.

>
> 921600bps kann man aber bei HTerm einstellen.
>
> Habe mit dem Atxmega und HTerm fehlerfrei 921600bps übertragen.

Das habe ich mit 1 MBaud auch schon gemacht. Das Problem des TE ist 
entweder sein mega8 Umsetzer oder sein Arduino Krempel.

Autor: Dieter F. (jim_quakenbush)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
M_s schrieb:
> Arduino Mega

Da wird wohl schon mal mindestens der "Millis"-Interrupt zuschlagen, 
nebst Prolog und Epilog. Und irgendwoher musst Du ja auch die Daten 
bekommen, die Du da so sendest.

Schau doch mal mit dem Oszilloskop, ob der ATMega2560 die Daten so 
schnell liefert ...

Autor: M_s (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Programm ist eigentlich ziemlich simpel aufgebaut. Ich habe einen 
Sensor am A/D-Wandler angeschlossen und eine Funktion für die Zeit. Nach 
jeder Millisekunde wird für die Zeitfunktion ein Interrupt ausgelöst.

Über den UART gebe ich dann die Sensorwerte und die Zeitpunkte aus.

Autor: Draco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
M_s schrieb:
> Nach
> jeder Millisekunde wird für die Zeitfunktion ein Interrupt ausgelöst.

Da hast es... der Mega wird das garnicht alles in dieser MS schaffen. 
Schnapp dir dein Oszi und kontrolliert das.



M_s schrieb:
> Das Programm ist eigentlich ziemlich simpel aufgebaut.

Das hat rein garnichts zu sagen, wenn es zeitkritisch ist. Man kann 
einen µC auch mit NOPs zupflastern... is simpel.

Autor: M_s (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Draco schrieb:
> M_s schrieb:
>> Nach
>> jeder Millisekunde wird für die Zeitfunktion ein Interrupt ausgelöst.
>
> Da hast es... der Mega wird das garnicht alles in dieser MS schaffen.
> Schnapp dir dein Oszi und kontrolliert das.
>
> M_s schrieb:
>> Das Programm ist eigentlich ziemlich simpel aufgebaut.
>
> Das hat rein garnichts zu sagen, wenn es zeitkritisch ist. Man kann
> einen µC auch mit NOPs zupflastern... is simpel.

Das wird dann das Problem sein. Vielen Dank für alle Antworten.

Autor: Jim M. (turboj)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
M_s schrieb:
> Das Programm ist eigentlich ziemlich simpel aufgebaut.

Dann könntest Du es hier auch mal posten.
Vermutlich hätte man dann den Flaschenhals schon gesehen.

Aber wenn der µC bei 20 MHz und vollen 1 MBaud noch was anderes machen 
können soll, wird man schon DMA verwenden müssen.

Autor: Draco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jim M. schrieb:
> M_s schrieb:
>> Das Programm ist eigentlich ziemlich simpel aufgebaut.
>
> Dann könntest Du es hier auch mal posten.
> Vermutlich hätte man dann den Flaschenhals schon gesehen.

Richtig.

Jim M. schrieb:
> Aber wenn der µC bei 20 MHz und vollen 1 MBaud noch was anderes machen
> können soll, wird man schon DMA verwenden müssen.

Atmega2560: 0-16Mhz - kein DMA... Was soll uns der Satz sagen?

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.