Forum: Mikrocontroller und Digitale Elektronik Bascom + UART Empfang


von Kay (Gast)


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

von anfänger (Gast)


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....

von ATmega8Tester (Gast)


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

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.