-
Also das UL bringt nichts...
Nun geht es wenn ich die Zeile so umgeändert:
Code:
uint16_t ubrr = (uint16_t) ((uint32_t) F_CPU/(16*38400));
Also -1 weg, und auch nur mit der Baudrate 38400...
War ein Zufallstreffer, ist also noch lange nicht die Lösung des Problems. Aber wenigstens kann ich nun erstmal weiter testen
-
Hallo,
interessant, kannst du mal schreiben, mit welchem Compiler du arbeitest? Ich hatte mich schon bei deinem true im Beispielcode gewundert. Ich habe es mal im AVR-Studio simuliert. Ohne das UL wird der Ausdruck in der Klammer mit nur 16 Bit gerechnet.
Gruß
Jens
-
Also ich benutze das Workpad Plus mit WinAvr.
Ich werde mir die Tage aber mal das AVR-Studio installieren.
Das Workpad PLUS bietet einfach nichts was für richtiges Programmi9eren erforderlich ist, alleine schon ohne einen Debugger, bzw. eine ordentliche Simulation ist die Fehlersuche nicht leicht...
EDIT:
Mit dem http://www.gjlay.de/helferlein/avr-uart-rechner.html
Kann ich die passenden Werte für ubrr ausrechnen, so funktioniert es schonmal
-
Hallo,
Avr-Studio nutzt auch WinAvr. Was mich halt wundert ist, dass 'true' da eigentlich nicht definiert ist. Der Simulator von Avr-Studio ist schon nicht schlecht. Man darf ihn aber auch nicht überschätzen.
Wenn du Werte von der Seite einsetzt, dann geht es jetzt?
Die 23 bei 9600 Baud ist genau der Wert, der hierbei
Code:
uint16_t ubrr = (uint16_t) ((uint32_t) F_CPU/(16*9600UL) - 1);
ausgerechnet wurde. Wenn ich 16*9600 in 16 Bit rechne bekomme ich ein ubrr von 162. Wenn du damit an den PC sendest ist dein Startbit schon so lang, dass Teile als Datenbits erkannt werden. Vielleicht möchtest du ja doch noch einmal in der Richtung ermitteln.
Gruß
Jens
-
Also ich nutze den internen 4MHz Oszilator.
das wäre dann bei 9600 Baud ein Wert von 25.
Bei 4MHz und mit "UL" funktioniert es auch!
Mit 4 MHz hatte ich es schon vorher probiert, nur leider ohne das "UL".
Also, es geht jetzt! Danke für eure Hilfe!!
Zu dem "true":
Das steht da nur drin weil ich den teil aus einem Beispiel habe, ich selber setz da immer ne 1 ein.
Warum es mit true geht, keine Ahnung, so tief hab ich mich mit dem WinAVR noch nicht beschäftigt, programmiere sonst mit anderen Compilern.
EDIT:
Vom PC zum Testboard funktioniert jetzt auch!
Nochmal Danke.