mikrocontroller.net

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


Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: bas_ratte (Gast)
Datum:

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

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuche mal "UCSRA.RXC" . Damit gibt sich jedenfalls beim Mega8 Bascom 
zufrieden.

MfG Paul

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: bas_ratte (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: bas_ratte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.