www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom + UART Empfang


Autor: Kay (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe folgenden Code in meinem AVR :

$regfile = "8535def.dat"
$crystal = 4194304
$baud = 9600

 Dim I As Byte
 Config Porta = Output

Do
  If Usr.rxc = 1 Then
    I = Udr
    Select Case I

    Case "LedAn"
    Porta.0 = 1

    Case "LedAus"
    Porta.0 = 0

    Case Else
    Print "Unbekannter Befehl"

    End Select
  End If
Loop
End

Wenn ich jetzt über die serielle das Wort "LedAn" sende, passiert
nichts. Liegt wahrscheinlich daran, das ich nur 1 Byte senden kann (If
Usr.rxc = 1 Then). Ich will aber komplette Worte, also mal 4 Zeichen,
mal 5 oder 6, senden können. Kann mir jemand helfen ?

mfg Kay

Autor: anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du hast i als byte declariert. ein byte kann kein wort enthalten. du
müsstest das wort, was übermittelt wird aus den einzelnen buchstaben zu
einem string zusammensetzen.

ist zwar nicht wirklich die lösung für dein problem, aber probiers mal
hiermit:

dim I as String * 5

Input I

If I = "Ledan" then....

Autor: ATmega8Tester (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Kay,

das Empfangen/Auswerten von Datenpacketen mit unterschiedlicher Länge
ist durchaus möglich, ist aber für deinen Fall eigendlich nicht nötig.

Sende doch einfach nur e i n Byte/Zeichen, damit kannst du 256 Aktionen
in deinem AVR auslösen:

In Bascom:
DDRB = &B11111111         ' PortB alles Ausgänge
Dim Eingang As Byte       ' Empfangenes Byte
Do
  If Usr.rxc = 1 Then
    Eingang = UDR         ' Byte aus Empfangsregister lesen
                          ' RXC zurücksetzen
    Select Case Eingang
      Case 97             ' Befehl a gesendet
        PortB.0 = 1       ' PortB.0 an
      Case 65             ' Befehl A gesendet
        PortB.0 = 0       ' PortB.0 aus
      Case 117            ' Befehl u gesendet
        PortB = 255       ' PortB alle an
      Case 85             ' Befehl U gesendet
        PortB = 0         ' PortB alle aus
      Case Else
        Print "Unbekannter Befehl"
    End Select
  End If
Loop
End

Grüße
ATmega8Tester

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.