- SF800 Solar Speicher Tutorial         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: Problem mit dem senden von Zeichen per UART

  1. #11
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.08.2007
    Ort
    Delmenhorst
    Alter
    39
    Beiträge
    731
    Anzeige

    Praxistest und DIY Projekte
    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

  2. #12
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    55
    Beiträge
    524
    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

  3. #13
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.08.2007
    Ort
    Delmenhorst
    Alter
    39
    Beiträge
    731
    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

  4. #14
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    55
    Beiträge
    524
    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

  5. #15
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.08.2007
    Ort
    Delmenhorst
    Alter
    39
    Beiträge
    731
    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.

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

LiFePO4 Speicher Test