Guten Abend Hab gerade mal den USART auf meinen ATMega8 inizialisiert. Er funktioniert auch soweit wunderbar, wie auf dem Bild "USART_char_A" zu sehen ist. Ich sende genau einmal das Zeichen 'A'. Aber im HTerm werden drei empfangende Zeichen angezeit und zwar NULL. Es ist egal was ich sende, es wird immer NULL angezeigt. Hab einen Serial-to-USB-Adapter von LogiLink. Hab dort auch alles korrekt eingestellt. Vielleicht hat jemand von euch eine Idee woran das liegen kann, dass ich immer nur NULL empfange. Vielen Danke im vorraus. Tobi
Die Baudrate des AVR ist wohl deutlich niedriger als die PC-seitig eingestellten 9600 Baud. Wenn ich das Oszillogramm richtig deute, ist das mit 4 msec/div aufgenommen. Ein komplettes Zeichen bei 9600 Baud ist aber nur 1 msec lang - also ganz erheblich kürzer. Vermutlich sind die Fuses im AVR nicht richtig gesetzt, so daß dessen Takt nicht der ist, von dem Du ausgehst.
Okay danke, das ist schonmal ein guter Tipp. Aber da ich schon mit dem Controller eine ganze Zeit arbeite und auch schon mehrere Timer damit realisiert habe, bin ich mir ziemlich sicher, dass es der Richtige Quarz ist. Aber ich werde der Sache mal weiter auf dem Grund gehen.
so. Fehler gefunden. Bei der Berechnung für das UBRR (Baud Rate Register) muss irgendwas falsch sein. Hab jetzt die Bibliothek <util/setbaud.h> eingebunden und damit den Wert für das Register berechnet und siehe da. Es klappt alles. Nun prüfe ich nochmal die Berechnung nach. Danke nochmal für den Tipp.
Tobi schrieb: > Nun prüfe ich nochmal die Berechnung nach.
1 | #define BAUD 9600UL
|
2 | |
3 | ...
|
4 | |
5 | void USART_Init(unsigned int baud) |
6 | {
|
7 | UBRRH = (unsigned char)(baud>>8); |
8 | UBRRL = (unsigned char)baud; |
9 | |
10 | ...
|
11 | |
12 | USART_Init(BAUD); |
Es könnte schon helfen, die Berechnung überhaupt zu benutzen. ;-)
:) hab ich auch schon gemerkt, dass ich das dort falsch eingetragen habe, aber selbst wenn ich dann wirlich meine berechnung benutze, klappt das nicht. Benutze nun die Bibliothek und das klappt ganz gut :)
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.