Bascom + UART Empfang

Gast #71129
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
Gast #71130
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....
Gast #71131
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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.