-         

Ergebnis 1 bis 8 von 8

Thema: Atmega16/32 mit 16MHz und 921600 Baud

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    28.12.2008
    Ort
    königslutter
    Alter
    27
    Beiträge
    42

    Atmega16/32 mit 16MHz und 921600 Baud

    Anzeige

    Hallo *,

    ich baue mein Servocontroller momentan von I2C auf UART zurück, da ich eine höhere Geschwindigkeit bei der Datenübertragung benötige.

    Wenn ich den IC mit einer Baudrate > 115200 betreibe, kommt auf der anderen Seite nur Datenmüll an. Ich verwende keinen Pegelwandler sondern nur 5V TTL!
    Mein USB UART Adapter funktioniert noch ohne Probleme bei Geschwindigkeiten > 921600 Baud. Habe ich natürlich getestet.

    Ich habe einen kleinen Baudraten Scanner in C# geschrieben und so festgestellt, dass die Baudrate leicht verschoben ist. Bei 230k Baud waren es ca. ein paar 1k Baud verschiebung.

    Die Fuse Bits für den 16MHz Quarz sind richtig gesetzt!

    Es gibt ein C Programm von Ulrich Radig für eine UART Kamera, dieses Kommunikation funktioniert ohne probleme bei 921600 Baud.

    Gibt es da einen unterschied, weil ich einen 16MHz Quarz verwende und er einen 14.xxxMHz Quarz?

    Vielleicht gibt es noch den einen oder anderen Trick, den ich nicht kenne

    Gibt es jemanden, der seinen Atmega mit Bascom jenseits der 115k betreibt?

    Ich würde mich über ein paar Ideen freuen...

    Liebe Grüße
    Sascha

    Code:
    $regfile = "M32def.dat"
    $crystal = 16000000
    
    '$baud = 921600
    '$baud = 230400
    $baud = 115200
    
    Do
    
       Print "Ich schreibe..."
       Waitms 50
    
    Loop

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Es kann sein das mit einem 16MHz Quarz bei 115200 Baud die Abweichung zu groß ist.
    Und ja es gibt einen Unterschied zwischen den beiden Quarzen. Das eine Quarz mit 14.7456MHz ist ein Baudratenquarz, was soviel heißt wie das man das gerade runterteilen kann.
    Schau mal hier auf Seite 167:

    http://www.atmel.com/dyn/resources/p...ts/doc2503.pdf

    Da siehst du in der Tabelle das der Fehler mit einem 14.7456MHz Quarz 0% ist. Bei 16MHz sind es bereits 3,5%.
    Bei so hohen Baudraten würde ich dir empfehlen das 16MHz Quarz durch ein 14.7456MHz Quarz zu tauschen damit sollte das Problem gelöst sein.

    Edit:
    Habs bei mir gerade nochmal probiert. Ein "Hallo Welt" Programm funktioniert bei mir mit 115200Baud. Und dein Programm geht ebenfalls. Ich verwende ein RS232 Kabel was auf einen selbst gebauten RS232-USB Adapter geht.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    705
    Zitat Zitat von !*sascha*! Beitrag anzeigen
    Gibt es da einen unterschied, weil ich einen 16MHz Quarz verwende und er einen 14.xxxMHz Quarz?
    Also ich bin zwar nicht so der UART-König, und in solche Baudraten-Bereiche habe ich mich auch noch nie vorgewagt - aber ich benutze ein kleines, feines Baudraten-Berechnungstool, das man sich auf der Homepage von R. Walter runterladen kann. Und daraus geht hervor, dass sich 921.600 Baud mit einem 16MHz-Quarz nur mit einem Fehler von 9% erzeugen lassen. Und das ist natürlich richtig viel.

    Mit einem 14,7456 MHz-Quarz lassen sich dagegen 921.600 Baud exakt und ohne jede Abweichung erzeugen.

    Wahrscheinlich wird´s also genau daran liegen...

  4. #4
    Erfahrener Benutzer Roboter Experte Avatar von ePyx
    Registriert seit
    14.05.2008
    Ort
    Falkensee
    Beiträge
    700
    hast du mal versucht den Fehler auszurechnen ?

    Kann man auch online machen : WormFood's AVR Baud Rate Calculator

    Wie Kampi schon angemerkt hat ist der realtiv hoch. Bei einem Quarz mit 14.7456MHz lassen sich die Baudraten einfach besser ableiten und man hat geringere Fehler.

  5. #5
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Bei so hohen Baudraten kann es halt mit 16MHz funktionieren oder es funktioniert nicht.....bei mir gehts und bei dir nicht beste Beispiel
    Und ich weiß gerade nicht wie hoch die Toleranz laut der EIA-232 sein darf aber es war soweit ich mich recht erinnere bischen unter 9%
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    28.12.2008
    Ort
    königslutter
    Alter
    27
    Beiträge
    42
    Hallo *,

    ich weiß nicht, was ich sagen soll!

    Jetzt wo ich die Antworten lese, stimmt da gab es Tabellen beim googeln mit Fehlerwerten...

    Ich habe noch einen 14.7456MHz Quarz gefunden und werde diesen mal einbauen!

    Ich bedanke mich schon mal bei allen, für die schnelle hilfe!

    Aber auch wenn es einen anderen Fehler gibt, war es die Frage schon wert! Wieder etwas gelernt^^

    Ich werde mich mit dem Ergebnis wieder melden

    Gruß,
    Sascha

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    28.12.2008
    Ort
    königslutter
    Alter
    27
    Beiträge
    42
    Es geht

    Habe den Atmega32 auf einem Steckbrett mit 14.7456MHz Quarz und es geht.

    Also das Thema kann dann mit erfolg geschlossen werden.

    Danke, danke, danke nochmals an alle für die schnelle und auch erfolgreiche Fehlersuche!

    Gruß
    Sascha

  8. #8
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Zitat Zitat von !*sascha*! Beitrag anzeigen
    Es geht

    Habe den Atmega32 auf einem Steckbrett mit 14.7456MHz Quarz und es geht.

    Also das Thema kann dann mit erfolg geschlossen werden.


    Danke, danke, danke nochmals an alle für die schnelle und auch erfolgreiche Fehlersuche!

    Gruß
    Sascha

    Schön das es klappt
    Freut einen immer wieder wenn man dann doch ließt das einem geholfen werden konnte
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

Ähnliche Themen

  1. Atmega16 16MHz Ext-Oszillator Fusebits??
    Von linuxer7 im Forum AVR Hardwarethemen
    Antworten: 5
    Letzter Beitrag: 01.11.2010, 00:02
  2. Attiny13 auf 57600 Baud ?
    Von KaiP im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 01.04.2008, 13:02
  3. Nur 115200 Baud?
    Von luma im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 28.09.2005, 22:02
  4. Genauigkeit ATMEGA16 mit 16MHz Quartz
    Von Arne im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 18.12.2004, 03:12
  5. dos-ide und 19200 baud
    Von CityJumper im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 1
    Letzter Beitrag: 13.02.2004, 23:27

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •