-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: Baudrate auslesen?

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627

    Baudrate auslesen?

    Anzeige

    Hallo,
    ich möchte im laufenden µC Programm die Baudrate einstellen können.
    Wie kann man diese dann wieder auslesen?

    Also:

    Baud = 9600 ' legt die Baudrate fest

    Variable = Baud ' macht bei mir einen Fehler

    Variable = $Baud 'gibt IMMER 186 zurück!!!

    vielen Dank,
    Tobias
    ...

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.556
    Moin moin.


    Ich vermute die Badrate ist ein einem (Welchem (?)) Register
    abgelegt. Das sollte sich auslesen lassen ein Blick ins Datenblatt
    sollte auch das Register finden lassen. Das ist halt bei Bsic ein
    Problem, Mensch verblödet. In ASS oder C muß man die Register
    selber setzen und weiß deshalb wo die Baudrate zu finden ist.

    Ich bin ach etwas verblödet und weiß es nicht....

    Gruß Richard

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    Zitat Zitat von Richard
    Mensch verblödet.
    tja - Register? äh wie ließt man denn ein Register aus? Ich habe einen MEGA8.

    Meine Hofnung war ja, dass wenn man die Baudrate so einfach schreiben kann - dass das Auslesen ebenso einfach ist...

    Tobias
    ...

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Die Baudrate wird eingestellt in den Registern
    UCSRA Bit U2X
    und
    UBRRL
    UBBRH

    Wenn man diese Register überhaupt lesen kann (das ist garnicht gesagt, und ich hab's noch garnicht probiert) dann z.B -->

    DIM baudwert as WORD

    Baudwert = MAKEINT( UBRRL, UBBRH )
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.556
    Moin moin.

    Wie eine Variable halt ausgelesen wird. Dazu muß man
    natürlich wissen wie das Regster sich nennt und das steht
    auch im Datenblatt. Ich habe alle Datenblätter bin aber
    eifach zu Fauel die für Dich zu durchsuchen. Du willst etwas
    wissen, dann mache etwas dafür. NUR was Du selber erarbeitest
    bildet Dich auch, vorverdautes macht nicht eimal satt!

    Gruß Richard

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Laut Datenblatt sind diese Register übrigens auslesbar. Und wie du von dem dort gespeicherten Wert wieder auf die tatsächliche Baudrate kommst, muss du nun selbst nachschauen...

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    Zitat Zitat von PicNick
    Die Baudrate wird eingestellt in den Registern
    UCSRA Bit U2X
    und
    UBRRL
    UBBRH

    ...

    Baudwert = MAKEINT( UBRRL, UBBRH )
    Danke für die super ausfühliche Antwort!

    in UBRRL Steht der Wert drin
    UBRRH (war ein Schreibfehler drin) ist bei mir immer 0

    Morgen werde ich mal sehen, wie ich aus den Werten die richtigen Baudraten bekomme... 9600Baud=51 und 14400Baud=34

    Auf jeden Fall vielen Dank!

    Tobias
    ...

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    31
    Beiträge
    4.255
    Zitat Zitat von TobiasBlome
    Morgen werde ich mal sehen, wie ich aus den Werten die richtigen Baudraten bekomme... 9600Baud=51 und 14400Baud=34
    Ok, dein AVR läuft also mit 8MHZ...

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Lt. Datenblatt geht das:
    Bei U2X = 0
    Baudrate = cpu / ( 16 * (Baudwert + 1))
    Bei U2X = 1
    Baudrate = cpu / ( 8 * (Baudwert + 1))
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    Hall Robert,
    du bis ja superschnell

    aber ich habe trotzdem noch in das Datenblatt gesehen - will ja nicht faul sein =)

    Die Abweichung ist wohl wegen der Fehlertoleranz, wenn die Quarzfrequenz nicht 100%ig zur Baudrate passt - oder?

    9600 Baud eingestellt -> Angezeigt wird 51 d.h.

    8MHz/(16*(51+1)) = 9615,3...(~ 9600Baud)
    8MHz/(16*(34+1)) = 14285,7...(~14400Baud)

    Aber ich will sowieso noch einen Quarz mit 14,7456 MHz einbauen und dann passt auch die Rechnung

    Im Datenblatt S.136 steht: Asynchronous Normal mode bzw. Asynchronous Double Speed - was ist damit gemeint?

    Tobias
    ...

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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