PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mega162 beide UARTs benutzen...



tobimc
09.03.2005, 18:25
Hi Leute!

Ich möchte für mein neues Projekt "Suny" eine Funkstrecke zum PC einrichten, die direkt mit dem UART-Systembus gekoppelt ist.
Als Modem ist ein Mega162 gedacht.
Platine und so weiter ist alles schon fertig. Und in der Funktion getestet.

Nundenn, UART0 funktioniert soweit, nur der UART1 funktioniert nicht.
Ich habe bisher die Ausleserei aus den Registern probiert, aber das sieht schlecht aus.

Dieses Programm (ein umgeschriebenes Listing aus dem AVR Buch von Roland Walter... Copyright?!?) funktioniert NUR mit dem UART0:


'----------------------------------------------------------
$regfile = "m162def.dat" 'ATmega162-Deklarationen
$crystal = 16000000 'Quarz: 16 MHz
$baud = 9600 'Baudrate der UART0: 9600 Baud
$baud1 = 9600 'UART1: 9600 Baud

Dim I As Byte

Do
If Ucsr0a.rxc0 = 1 Then 'Wenn Byte empfangen...
I = Udr0 'Byte aus UART auslesen
Select Case I
Case "H"
Print "Hallo AVR"
Case "h"
Print "hallo avr"
Case Else
Print "Unbekannter Befehl"
End Select
End If

Loop
End
'[Listing zum AVR-Mikrocontroller-Lehrbuch von Roland Walter, www.rowalt.de]

Wenn man die Register einfach in z.B: "udr1" umnennt, funzt's nicht!

*ARGH*

Bin euch sehr dankbar!
Ganz liebe Grüße,
Tobi

Florian
09.03.2005, 18:30
Hi Tobi!
Schonmal im Datenblatt nachgelesen? ;o) *klugscheiß*

tobimc
09.03.2005, 18:34
Hi Florian!

Klar! Hm.
Konnte es sein, dass die UART1 nicht richtig initialisiert wird?
Ich meine UCSR1A - UCSR1C...
Muss man doch konfigurieren, oder?!

*SHOCK* Muss noch Mathe machen... *mist*

Ganz liebe Grüße;
Tobi

tobimc
09.03.2005, 20:44
HI

Ok; ich gebs ja zu... Man sollte auch mal einen Blick in den SAMPLEORDNER werfen.
Da giebt's ein tolles Sample...
Und jetzt tut alles... !

Ok.

Ganz liebe Grüße;
Tobi

Rubi
06.06.2005, 09:52
Hallo Tobi

Was war denn das Problem, ich kämpfe auch gerade mit ATMega162 und UART1 da kommt bei mir nur Müll über die RS232.
Welchen Sampleordner meinst Du denn?

LG
Rubi

bertl100
06.06.2005, 10:05
du musst mit den Befehlen -----open "com1:" for binary as #1------
und ------open "com2:" for binary as #2-------
arbeiten.

zum ausgeben print#1 und print#2 verwenden und wieder schliessen mit
close#1 und close#2

Rubi
06.06.2005, 10:12
Hallo Bertl100

Danke für den Hinweis, nur leider verstehe ich es nicht.
In welcher Sprache programmierst Du die AVRs, ist das Basic?
Ich verwende im Moment nur Winavr.

LG
Rubi

bertl100
06.06.2005, 12:54
Tobimc programmiert in Bascom und ich auch.

Der compiler muss wissen ob er 2 UART´s hat oder nur einen.
wenn diese nicht deklariert werden, dann kannst nur mit UART0 also den ersten UART arbeiten.
Das gehr dann dafür aber ohne den deklarationen der com´s.

Rubi
06.06.2005, 13:16
Hallo Bertl100

Ich verstehe, danke.
Bei Winavr ist das anscheinend anders.
Was mich wundert, ist das der Code, der bei meinen Mega8,Mega16 so problemlos funktioniert, nur Müll am Mega162 liefert.
Na ja , werde mich Heute am Abend wieder dahinterknien.

LG
Rubi