PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 2. Serielle Schnittstelle am Atmega162



MarkusH
07.01.2005, 21:47
Hi, weiß jemand wie man das 2te Uart des Atmega162 ansprechen kann? Habe bisher nur mit der ersten gearbeitet da hab ich immer mit "On Urxc Onrxd" und "print" daten verschickt und empfangen. Aber die befehle funktionieren nicht mehr wenn ich jetzt einfach ne 1 dahinter schreib um die andere Schnittstelle zu nutzen. Hat jemand ne Idee? Danke schonmal. Gruß, Markus

x-ryder
08.01.2005, 10:33
Leider kent Bascom die Register für die zweite serielle Schnittstelle nicht also kannst du nicht wie üblich mit dem Interrupt arbeiten sondern musst auf Waitkey() zurückgreifen und die Schnittstellen so definieren:


Config Com1=... und Config Com2=...

Open Com1 for Binary as #1
Open Com2 for Binary as #2

Printbin #1, Var
Printbin #2, Var

Close #1
Close #2

Es kann sein, dass ich die Syntax nicht ganz getroffen habe... :cheesy:

Martin

MarkusH
09.01.2005, 12:37
Danke erstmal für deine Hilfe aber viel weiter bin ich noch nicht.
Ich hab jetzt config com2 benutzt wie es in der Bascom Hilfe drinsteht. Hab ich da vielleicht was falsch gemacht? Bei folgendem Code bringt er mir immer Fehler 31 (invalid datatype) in der Zeile mit "open com2". Für was ist eigentlich dieses "Dummy" muss ich da vielleicht was anders reinschreiben?


Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

Open Com2 For Binary As #2

Printbin #2 , Var

Close #2

x-ryder
09.01.2005, 12:42
Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

Open "Com2" For Binary As #2

Printbin #2 , Var

Close #2

Trabukh
09.01.2005, 13:15
Jo, ist mir auch aufgefallen, du musst die Anführungszeichen bei "Com2" beachten, sonst gibt es den besagten Fehler.

Gruß, Trabukh

P.S.
Mir ist schon klar, dass ich damit x-ryder zitiere, aber ich wollte nochmal explizit auf die Anführungszeichen hinweisen...

MarkusH
09.01.2005, 14:55
Also bei mir geht das nicht...


Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

Open "Com2" For Binary As #2
Printbin #2 Var
Close #2

Open "Com1" For Binary As #1
Printbin #1 Var2
Close #1

Wenn ich "Printbin Var2" mache, dann gehts auf dem ersten comport. aber "printbin #irgendwas var" geht nie. Liegt das an mir??? 8-[

x-ryder
09.01.2005, 14:59
du musst natürlich dem compiler noch sagen das du den mega162 hast:
$regfile = "m162def.dat"

das kommt ganz annen anfang

MarkusH
09.01.2005, 15:08
Hey hab grade bemerkt das bei open "com1:" der doppelpunkt gefehlt hat, jetzt gehts. allerdings nur mit com1... auf dem datenblatt vom atmega162 steht bei den pins PB2 und PB3 (RXD1/AIN0) und (TXD1/AIN1). Muss ich das vielleicht irgendwie definieren ob ich den pin jetzt als TXD oder AIN (was auch immer AIN sein soll) verwenden will?

x-ryder
09.01.2005, 15:12
siehe meine letzte nachricht, damit gehts

MarkusH
09.01.2005, 15:18
ja, das hatt ich drin *g* hab ja bisher immer mit nem Mega8 rumprogrammiert, und jetzt hab ich mir den 162er zugelegt wegen dem zweiten UART aber irgendwie ist hier alles anders und nichts funzt wie beim Mega8. Hast du den 2. COmport schonmal zum laufen bekommen? Also irgendwie bin ich grad am verzweifeln....

x-ryder
09.01.2005, 17:21
was bekommst du denn mit diesem quelltext für fehler?


$regfile = "m162def.dat"

Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

Open "Com2" For Binary As #2
Printbin #2 Var
Close #2

Open "Com1" For Binary As #1
Printbin #1 Var2
Close #1

MarkusH
09.01.2005, 18:02
Mit dem krieg ich keine Fehler, er geht nur einfach nicht. Wenn ich allerdings diesen nehme, dann gehts bei Com1 aber bei Com2 nicht.


$regfile = "m162def.dat"
Dim Var As Byte
Dim Var2 As Byte
Var = 1
Var2 = 2


Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Com2 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

Schleife:
Open "Com2:" For Binary As #2
Printbin #2 , Var
Close #2

Open "Com1:" For Binary As #1
Printbin #1 , Var2
Close #1

Goto Schleife

End


Ich hab jetzt nur noch zusätzlich die variablen deklariert, nach den Coms nen ":" gemacht und bei printbin ein "," vor die variable. Weiß bascom auf welchen pins (Laut Datenblatt B2 und B3) die Com2 liegt? Muss ich die vielleicht angeben?

andré_
14.02.2005, 12:08
Hi,
hat zufaellig jemand eine Loesung gefunden? Hab das gleiche Problem mit dem Atmega64, es ist einfach nichts rauszubekommen :(.

MfG

RCO
14.02.2005, 12:09
ZUr not kannst du ja immer noch einen Software UART verwenden.

MFG Moritz

14.02.2005, 12:14
$baud = 9600
$baud1 = 9600

So klappts :D

mfG

MarkusH
20.02.2005, 17:22
Suuuuuper! Genau das hat gefehlt! Danke!

fuerstfanta
08.04.2006, 16:31
Hi!

Wollte mal fragen, ob auch der waitkey-Befehl mit dem zweiten UART bei Euch funktioniert! Bei mir funktioniert das irgendwie nicht!

Waitkey(#1) ist laut Hilfe auch nur für SW-UARTs, oder?

Helft mir doch mal bitte von dem Schlauch runter :-)

vlg

SMILEY

fuerstfanta
08.04.2006, 16:38
Ah! moment! Es hängt glaub ich gar nicht am Waitkey(#1), sondern am $timeout. Das geht nämlich nlaut Hilfe auch nur mit UART0! Weiß jemand wie man das ändern kann?

mfg

SMILEY

NetPirate
23.06.2006, 15:22
Hallo,
dieses Thema ist zwar schon etwas älter aber vielleicht ist Abhilfe noch immer erwünscht:
Bascom hat seit kurzem eine neue Version und in dieser ist ein Sample für einen Bootloader über COM2.

Gruß

Ralf

rene79
15.08.2007, 12:14
Weiß von euch einer Rat. Hab den source code so im Bascom drin,
Aber der will prtou nich senden auf com2.
Habt Ihr noch irgendwelche register gesetzt?
Oder hat mal jemand nen anderen Code?
Bin mit meinem Latain am Ende
Hab alles geprüft und schon tausend man das manual durch nichts geht...

Thx René