- 12V Akku mit 280 Ah bauen         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Baudrate während des Programmablaufs umschalten?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    08.02.2007
    Alter
    45
    Beiträge
    40

    Baudrate während des Programmablaufs umschalten?

    Anzeige

    Praxistest und DIY Projekte
    Hallo Leute!
    Ich hätte da mal paar Unklarheiten. Vielleicht kann mir ja jemand helfen.

    Ich muss mit dem µC (ATmega32) Ein Byte mit einer geschwindigkeit von '5 Baud' senden um einen anderen Controller aufzuwecken. Die nachfolgende Kommunikation läuft dann aber mit entweder 4k8, 9k6 oder mit 10k4 ab.

    1.Gibt es in Bascom eine möglichkeit die Baudrate während des Programmablaufs umschalten? zB von 4k8 auf 9k6?

    2. Wenn ich mit '$baud = 9600' die Baudrate deklariere hab ich keinen Zugriff mehr auf 'Portd.1' (z.B: 'Portd.1 = 1' oder '0' geht dann nicht mehr)

    Meine Frage: Wie kann ich den TX-Port (Portd.1) trozdem verwenden? bzw die Deklaration wieder rückgängig machen damit ich die 5 Baud Init senden kann

    Code:
    '-------------[ Steuergerät an Adresse 0x01 (1):ECU aufwecken]------------------
    Portd.1 = 0                                                 'PD1 aus : Start-Bit 1-> 0
    Waitms 200
    
    Portd.1 = 1                                                 'PD1 ein
    Waitms 200
    Portd.1 = 0                                                 'PD1 aus
    Waitms 200
    Portd.1 = 0                                                 'PD1 aus
    Waitms 200
    Portd.1 = 0                                                 'PD1 aus
    Waitms 200
    Portd.1 = 0                                                 'PD1 aus
    Waitms 200
    Portd.1 = 0                                                 'PD1 aus
    Waitms 200
    Portd.1 = 0                                                 'PD1 aus
    Waitms 200
    
    Portd.1 = 0                                                 'PD1 aus : Odd Parity
    Waitms 200
    Portd.1 = 1                                                 'PD1 ein : Stop-Bit
    Waitms 200
    Portd.1 = 0
    
    '-------------------------------------------------------------------------------



    Danke schon mal für eure Hilfe !

    MaXX

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    klar, dann später im code einfach
    baud=4800 ohne das "$"
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    08.02.2007
    Alter
    45
    Beiträge
    40
    Danke Vitis!

    Funktioniert, jetzt hab ich nur noch das Problem zu 2.

    MaXX

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569
    Der 2. Punkt dürfte sich nach einem Blick in das Datenblatt von alleine erledigen.

    Als Tipp schreib ich mal: PD1 ist üblicherweise der TX der USART.

    Grüße,
    Hanni
    Grundregeln des Forenpostings:
    1. Nutze niemals die Suchfunktion!
    2. Überprüfe niemals die Topics nach Ähnlichkeiten!
    3. Schreibe alles in hellgelb!

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    08.02.2007
    Alter
    45
    Beiträge
    40
    ...............

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    08.02.2007
    Alter
    45
    Beiträge
    40
    Zitat Zitat von Hanni
    Der 2. Punkt dürfte sich nach einem Blick in das Datenblatt von alleine erledigen.

    Als Tipp schreib ich mal: PD1 ist üblicherweise der TX der USART.

    Grüße,
    Hanni
    Dass der PD1 üblicherweise der TX der USART ist, ist mir bewusst! Ich Suche nach einer Möglichkeit diesen Pin troz der Deklaration mit $Baud= xxxx für mein 5Baud-Init anzusteuern.

    Ich müsste also irgendwie die Dekla rückgängig machen können...

    Im Datenblatt steht folgendes zu Initialisierung der USART:

    USART_Init:
    ; Set baud rate
    out UBRRH, r17
    out UBRRL, r16

    ; Enable receiver and transmitter
    ldi r16, (1<<RXEN)|(1<<TXEN)
    out UCSRB,r16

    ; Set frame format: 8data, 2stop bit
    ldi r16, (1<<URSEL)|(1<<USBS)|(3<<UCSZ0)
    out UCSRC,r16
    ret

    MaXX

    EDIT:
    Danke für eure Antworten.

    Ich habs gelöst -> UCR-Register Bit 3 und 4 zurück setzen:

    RESET UCR.3
    RESET UCR.4

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    08.02.2007
    Alter
    45
    Beiträge
    40
    Leider musste ich jetzt feststellen dass ich nach dem:

    RESET UCR.3
    RESET UCR.4

    zwar wieder Zugriff auf den PD1 habe aber wenn ich dann die Bits mit:

    SET UCR.3
    SET UCR.4

    wieder Setze stimmt die Baudrade mit der der µC sendet anscheinend nicht mehr (da kommt nur Müll raus)

    Empfangen tut er allerdings richtig?!

    Gibts da auch noch nen Trick ?

    MfG MaXX

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    normalerweise sollte das über den
    txen - bit gehen
    also ucsrb.txen=0
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    08.02.2007
    Alter
    45
    Beiträge
    40
    Zitat Zitat von Vitis
    normalerweise sollte das über den
    txen - bit gehen
    also ucsrb.txen=0
    Danke! Nun funzt alles !

    MaXX

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    14.12.2005
    Ort
    Bayern
    Alter
    40
    Beiträge
    86
    @tc-maxx
    bin neugierieg willst du kwp 2000 oder kwp 1281 lesen?

    wieso versuchst du die baud nicht auch auf 5 zu stellen und machst das per habd?

    gruss
    markus

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

12V Akku bauen