PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Baudrate während des Programmablaufs umschalten?



tc-maxx
10.03.2007, 20:53
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



'-------------[ 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

Vitis
10.03.2007, 21:47
klar, dann später im code einfach
baud=4800 ohne das "$"

tc-maxx
10.03.2007, 23:15
Danke Vitis!

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

MaXX

Hanni
10.03.2007, 23:29
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

tc-maxx
11.03.2007, 00:13
...............

tc-maxx
11.03.2007, 00:22
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

tc-maxx
11.03.2007, 13:08
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

Vitis
11.03.2007, 19:08
normalerweise sollte das über den
txen - bit gehen
also ucsrb.txen=0

tc-maxx
12.03.2007, 00:30
normalerweise sollte das über den
txen - bit gehen
also ucsrb.txen=0

Danke! Nun funzt alles !

MaXX

rathma
13.03.2007, 22:18
@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

tc-maxx
13.03.2007, 23:14
Hallo rathma

Ich will über das KWP1281 die ECU auslesen.

..hab's aber jetzt hinbekommen.. Die ECU sendet schon mal Ihre iD. Morgen mach ich weiter, mal sehen was noch alles so für Probleme auf mich zukommen?!

Hast du Erfahrung mit dem Auslesen der ECU über KWP1281 mit dem µC ?

MfG MaXX

rathma
13.03.2007, 23:25
ich wollte das mal per windows visual baisc machen, habs aber wegen zeitmangel erstmal auf eis gelegt. ich such aber noch infos über kwp2000, hab aber im inet noch nicht viel drüber gefunden.

kleiner tip noch von mir, wenn mal was beim senden schief geht bau einfach mal ein waitms 20 ein, die steuergeräte sind nicht gerade die schnellsten.

und vielleicht noch ein kleiner sicherheitstipp: wenn du über kwp ein steuergerät ausliest gehen ab und zu sicherheitsrelevante sachen wie abs und airbags nur verzögert!!!

Zapo.
21.03.2007, 23:52
hi,

wie ist es möglich die Baudrate aus dem Register zu lesen und auf dem Display anzuzeigen.

möchte sie während des Programms umschalten aber um zu sehen welche gerade aktuell ist im Display anzeigen...

welches Register muß ich dann wie auswerten?

danke schonmal!