Hallo Leute, ich versuche seit einiger Zeit auf einem Atmega32U2 mit 1MHz den UART mit 19200 Baud in Betrieb zu nehmen. Leider scheint die Einstellmöglichkeit beim Register UBRR zu ungenau zu sein. 6 ist zu langsam, 5 ist zu schnell. 5,5 wäre sehr nahe am Ideal von 5,51. Ich habe das U2X Bit schon auf True gesetzt, und damit die Baudrate verdoppelt. Mit UBRR==12 funktioniert alles wunderbar mit 9600 Baud. Laut http://wormfood.net/avrbaudcalc.php habe ich bei meiner 19200er Einstellung einen Fehler von 7,5%. Das scheint zu hoch zu sein. Lösungs-Ideen die ich leider nicht einsetzen kann: 1) Baudraten-Quarz: Wäre schön, aber ich brauche die 8 MHz für USB. Platz für einen zweiten Quarz ist auf dem Board nie und nimmer, ich bin sehr froh dass sich der eine irgendwie ausgegangen ist. 2) Andere Baudrate verwenden: Soll nach Möglichkeit kompatibel mit einer bereits vorhandenen Schnittstelle sein. Das zu ändern würde gehen, wäre aber sehr umständlich. 3) ATmega mit 8 MHz betreiben: Batteriebetriebene Anwendung, halbwegs Low Power. Der ATmega muss aber trotzdem quasi-staendig was tun. Danke im Voraus für eure Ideen.
ebtschi schrieb: > ich versuche seit einiger Zeit auf einem Atmega32U2 mit 1MHz den UART > mit 19200 Baud in Betrieb zu nehmen. Geht nicht. Brauchst du USB und RS-232 zeitgleich? Ansonsten könntest du den 8-MHz-Quarz nur während des USB-Betriebs nehmen und ansonsten den RC-Oszillator auf 7,3xxx MHz kalibrieren, sodass sich immer eine baudratenfreundliche Frequenz ergibt. Dem ATmega*U2 kann man ja die Taktquelle im Betrieb umschalten (d. h. ohne Programmieren einer Fuse). Ansonsten bliebe wirklich nur der Betrieb mit 8 MHz unter Ausnutzung aller Möglichkeiten, ihn zwischenzeitlich schlafen zu legen (nach Möglichkeit im standby-Mode).
Hi Nimm den 8MHz Quarz. Bei 19200Bd hast du einen erträglichen Fehler 0,2%. Fertig. MfG Spess
Danke für die Antwort. Jörg Wunsch schrieb: > Brauchst du USB und RS-232 zeitgleich? Leider ja. Jörg Wunsch schrieb: > ansonsten den > RC-Oszillator auf 7,3xxx MHz kalibrieren Ich bin mir nicht sicher ob der USB-Teil auf den selben Takt zugreift wie der Prozessor, ich glaube nämlich nicht. Der USB-Teil braucht afaik nur den Quarz, egal ob ihn der Prozessor nutzt oder nicht. Das mit dem RC-Oszillator sehe ich mir mal an, gibt wahrscheinlich eh ein Tutorial.
spess53 schrieb: > Nimm den 8MHz Quarz. Den hat er doch schon, aber er möchte gern mit einem clock prescaler von 8 arbeiten, damit die CPU weniger Strom braucht. Was mir noch einfällt: mit einem clock prescaler von 4 brauchst du zwar trotzdem doppelt so viel Strom wie bei 1 MHz, jedoch bist du baudratenmäßig aus dem Schneider (mit U2X-Bit).
Jörg Wunsch schrieb: > Was mir noch einfällt: mit einem clock prescaler von 4 brauchst du > zwar trotzdem doppelt so viel Strom wie bei 1 MHz, jedoch bist du > baudratenmäßig aus dem Schneider (mit U2X-Bit). Ich habe das jetzt genau so gemacht, und funktioniert. Das sollte eine akzeptable Kompromisslösung sein.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.