PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Initialisierung von USART mit Bascom (ATMega1284P)



Tobi1970
18.03.2013, 15:19
Hallo Forum und Leser!

Ich bin neu in diesem Forum, darum vor der eigentlichen Frage kurz zu mir:
Mein Name ist Olaf, ich bin 42 Jahre jung (alt), gelernter R&F Techniker
und betreibe das Hobby Elektronik intensiv seit meinem 9.Lebensjahr.
Seit ein paar Monaten beschäftige ich mich mit Bascom, leider waren Programmiersprachen
in den Jahren meiner Ausbildung noch keine Forderung wie so oft heute, darum
bin ich nun dabei mir autodidaktisch Bascom näher zu bringen. Ich selber bezeichne
mich als Anfänger, und darum suche ich auch hier im Forum Rat.;)
Ich hoffe auch, das ich die Forensuchfunktion richtig bedient habe, sollte meine Frage
schon unzählige male behandelt worden sein, bitte ich um Verzeihung im vorraus.

Worum es geht:

Ich habe ein Atmel Eval-Board 1284P XPLAINED vor mir. Darauf sitzt jener Controller,
und ein AT32UC3B1256, der lediglich als USB to UART Bridge fungiert.

Was ich gerne wissen möchte ist, wie ich in Bascom den USART1 des Controllers initialisieren muss.
Mir geht es darum, zuerst einfach z.B ein "Hallo Welt" auf einem Terminalprogramm darzustellen.
Bislang funktionierten meine Versuche mit einem einfachen ATmega8, MAX232 als Pegelwandler,
und seriellem Kabel zum PC immer einwandfrei.(Mit dem üblichen baud=Befehl)
Jetzt aber wo es über USB und den neuen Controller geht, scheint es aber so zu sein,
das dieser "gezielt" initialisiert werden muss.:confused::( (mit initialisieren meine ich an dieser Stelle noch immer den USART, nicht falsch verstehen)
Das bekomme ich nicht auf die Reihe. Vielleicht hat ja jemand hier ein kleines Codebeispiel das mir
endlich die Augen öffnet?

Danke, Olaf

peterfido
18.03.2013, 18:56
Die Initialisierung des USB macht normal der PC. Vom AVR wird dieser einfach wie eine UART angesprochen.
Wie so oft nur aus dem Kopf, sollte aber so gehen.


$baud = 19200 'für1.UART
$baud1 = 19200 'für 2. UART
dim b1 as byte
dim b2 as byte
Open "com2:" For Binary As #2 'für die 2. UART diese öffnen
'Beispiel um angekommenes der einen UART auf der anderen auszugeben. z.B. als Baudratenwandler
do
If Ischarwaiting() = 1 Then
B2 = Inkey() 'Empfang auf UART 1
Print #2 , chr(b2); ' Ausgabe auf UART 2
end if

If Ischarwaiting(#2) = 1 Then
B1 = Inkey(#2) 'Empfang auf UART 2
Print chr(b1); ' Ausgabe auf UART 1
end if
loop
end

Tobi1970
19.03.2013, 19:18
Die Initialisierung des USB macht normal der PC. Vom AVR wird dieser einfach wie eine UART angesprochen.
Wie so oft nur aus dem Kopf, sollte aber so gehen.


$baud = 19200 'für1.UART
$baud1 = 19200 'für 2. UART
dim b1 as byte
dim b2 as byte
Open "com2:" For Binary As #2 'für die 2. UART diese öffnen
'Beispiel um angekommenes der einen UART auf der anderen auszugeben. z.B. als Baudratenwandler
do
If Ischarwaiting() = 1 Then
B2 = Inkey() 'Empfang auf UART 1
Print #2 , chr(b2); ' Ausgabe auf UART 2
end if

If Ischarwaiting(#2) = 1 Then
B1 = Inkey(#2) 'Empfang auf UART 2
Print chr(b1); ' Ausgabe auf UART 1
end if
loop
end

Hallo peterfido, und Danke für Deine schnelle Antwort!!
Auch wenn mir dein Beispielcode noch nichts auf mein Terminalprogramm gezaubert hat, lenkt es mich vielleicht
in die richtige Richtung. Und sehr gerne nehme ich natürlich auch weitere Hilfe an!;)

P.S auf meinem Board sieht es porttechnisch so aus...vielleicht macht es das für die Umsetzung in Bascom etwas leichter für den Erfahrenen...:confused:24864
Die Ports PD.2 (RXD1) und PD.3 (TXD1) sind direkt mit der USB to UART-Bridge verbunden.

peterfido
19.03.2013, 19:34
Ja, wenn er auf dem einen Port nichts empfängt, sendet er auf dem anderen Port auch nichts. Für eine Ausgabe auf dem USB Teil müsste es dann etwa so gehen:




$baud = 19200 'für1.UART
$baud1 = 19200 'für 2. UART'<<Diese Baudrate im Terminal einstellen. Takt (crystal) richtig angeben!
Open "com2:" For Binary As #2 'für die 2. UART diese öffnen 'Beispiel um angekommenes der einen UART auf der anderen auszugeben. z.B. als Baudratenwandler
do
Print #2 , "Hallo Welt!" ' Ausgabe auf UART 2
wait 2
loop
end

Tobi1970
19.03.2013, 20:46
Hallo peterfido......Heureka!!\\:D/=D&gt; Es funktioniert..lediglich die Baudrate nach Deinem Beispiel bei mir angepasst (neben dem Controllertakt)....vielen herzlichen Dank für Deine Hilfe!
Heute habe ich wieder einiges dazugelernt..wie nah die Lösung doch manchmal liegt;)

Gruß, Olaf