Forum: Mikrocontroller und Digitale Elektronik Probleme mit der UART beim Mega162 mit Bascom


von Gerd (Gast)


Lesenswert?

Hallo,

habe Probleme, beim Mega162, der ja zwei UARTs hat, das Statusregister 
RCX auszulesen.
Beim Mega16 habe ich das immer so gemacht:

If USR.RXC = 1 Then  'Wenn Byte empfangen...
    i = UDR            'Byte aus UART auslesen
End If

Beim Mega162 müßte es ja laut Datenblatt UCSR1A.RXC1 (zweiter Kanal)
heißen. Funktioniert aber nicht, ich bekomme die Fehlermeldung: "invalid 
Datatype". Mit USR1.RXC1 habe ich es auch versucht.
Welche Bezeichnung verwendet den Bascom, beim Mega16 heißt das Register 
ja auch nicht USR.RXC ?


Gruß Gerd

von bas_ratte (Gast)


Lesenswert?

So macht das auch kein Mensch schau dir mal die Code samples an.
http://bascom-forum.de/index.php?topic=136.msg399#msg399

von Paul Baumann (Gast)


Lesenswert?

Versuche mal "UCSRA.RXC" . Damit gibt sich jedenfalls beim Mega8 Bascom 
zufrieden.

MfG Paul

von Gerd (Gast)


Lesenswert?

Hallo,

@ bas_ratte:
Mit Interrupt ist das natürlich viel eleganter, aber was akzeptiert 
Bascom als Bezeichnung für die entsprechenden Register der beiden 
Kanäle.
Es funktionier leider nur: USR.RXC

@  Paul Baumann:
> Versuche mal "UCSRA.RXC" . Damit gibt sich jedenfalls beim Mega8 Bascom
> zufrieden.

Geht leider auch nicht :-(

Gruß Gerd

von bas_ratte (Gast)


Lesenswert?

das brauchst du alle nicht mit der funktion
Open "COM2:" For Binary As #2

Open "COM3:" For Binary As #3

Open "COM4:" For Binary As #4


Print "Hello"                                               'first uart

Dim B1 As Byte , B2 As Byte , B3 As Byte , B4 As Byte

Dim Tel As Word , Nm As String * 16


'Input #2 , "Name ?" , Nm

'Print #2 , "Hello " ; Nm


Do

  Incr Tel

  Print Tel ; " test serial port 1"

  Print #2 , Tel ; " test serial port 2"

  Print #3 , Tel ; " test serial port 3"

  Print #4 , Tel ; " test serial port 4"




  B1 = Inkey()                                              'first uart

  B2 = Inkey(#2)

  B3 = Inkey(#3)

  B4 = Inkey(#4)

von Gerd (Gast)


Lesenswert?

Hallo  bas_ratte,

besten Dank, das werde ich morgen mal ausprobieren.

Allerdings, wenn ich die Sache mit Interrupt lösen will muß ich doch 
trotzdem wissen, wie Bascom die entsprechende Register bezeichnet.
Für die Megas mir einem Kanal finde ich jede Menge Beispiele, für die 
mit mehreren kaum was.

Wäre in dem Fall wohl besser mit Assembler zu lösen?


Gruß Gerd

von bas_ratte (Gast)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.