klar, dann später im code einfach
baud=4800 ohne das "$"
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
klar, dann später im code einfach
baud=4800 ohne das "$"
Vor den Erfolg haben die Götter den Schweiß gesetzt
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!
...............
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.Zitat von Hanni
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
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
normalerweise sollte das über den
txen - bit gehen
also ucsrb.txen=0
Vor den Erfolg haben die Götter den Schweiß gesetzt
@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
Lesezeichen