Wie willst du dem µC die Zeichen schicken, auf die er reagieren soll?
Gruß
Rolf
Hallo zusammen
Ich hoff euch geht es gut??
Ich grübel mal wieder über ein kleines Problem nach.
Ich möchte gern das mein ATMega8 auf bestimmte Zeichen reagieren soll.
Z.B. Wenn eine 1 gesendet wird, dann mache z.b das und das.
ich habe bis jetzt immernur die Befehle Read und Input gefunden.
Aber beides hilft mir irgendwie nicht weiter.
Habt ihr da eine Idee.
MFG
P.S. bin immernoch Anfänger
Wie willst du dem µC die Zeichen schicken, auf die er reagieren soll?
Gruß
Rolf
Prinzipiell reicht dir doch da auch input?
Per selbigem den seriellen Port abfragen und mit einer select-case schleife das empfangene Zeichen auswerten.
Oder hab ich das falsch verstanden und du willst garnicht die uart-verbindung verwenden?
Hallo
Doch. Das Zeichen/Signal nennen wir es mal soll vom Rechner geschickt werden.
Ich hatte hier schon nen Codeschnipsel gefunden. Aber so richtig zufrieden
bin ich damit nicht denn Es muss da immer ne Kette von einer bestimmten Längfe gesendet werden. Und das passt mir überhaupt net. Es soll dann z.b. so sein. wenn Zeichen A dann mache das und das und so weiter. is ja nur nen beispiel.
HIer mal der Codeschnipsel
Code:$regfile = "m8def.dat" $crystal = 7372800 $baud = 9600 Dim S As String * 10 Dim B(11) As Byte At S Overlay Dim N As Byte On Urxc Onrxd Enable Urxc Enable Interrupts Main: If N > 9 Then Print S N = 0 End If Goto Main Onrxd: Incr N B(n) = Udr Return
Und so ganz steigt ich dabei noch net hinter. Was z.b. das Onrxd macht.
mfg
Wenn du bei dem Code bleiben willst, dann schreib halt einfach
If N > 0 Then
...
Dann macht er was bei jedem Zeichen, das reinkommt.
Gruß
Rolf
er soll ja z.b. bei 1 soll er das machen bei 2 das oder bei xy das sowas meine ich. das er je nachdem welches signal oder zeichen kommt soll er was bestimmtes machen
Code:$regfile = "m8def.dat" $crystal = 7372800 $baud = 9600 $hwstack = 40 ' Stack für Gosubs... $swstack = 40 Dim S As String * 10 Dim B(11) As Byte At S Overlay Dim N As Byte config portx = output Do n = inkey If N > 0 Then gosub empfangen End If Loop end empfangen: select case n case 49 reset portx ' port x komplett abschalten, wenn eine 0 empfangen wurde. case 49 set portx.y 'portx.y stzen, wenn eine 1 empfangen wurde case 50 set portx.y 'portx.y setzen, wenn eine 2 empfangen wurde end select print n return
Wenn das Herz involviert ist, steht die Logik außen vor! \/
Hallo,
ich glaube das folgende Wiki hilft die weiter:
https://www.roboternetz.de/wissen/in...rn_des_AVR%27s
Ich arbeite übrigens auch immer nach diesem Grudprinzip wenn ich mit einer
Windows Anwendung einen Controller steuern will. Sharp develop ist auch gut geeignet und einfach zu erlernen.
Für alle die keine Lust haben das Wiki zu lesen A=InKEY (),
wobei "A" oder eine andere Variable zunächst entsprechend als DIM A as BYTE oder Integer etc deklariert werden muss.
Ich hoffe ich konnte weiterhelfen.
MfG
Neutro
Jemand mit einer neuen Idee ist ein Spinner, bis er Erfolg hat.
(Mark Twain)
@peterfido: 2x case 49 -< ist das Absicht?
Ich habe so etwas auf (m)einem µC laufen, Programmiersprache (für Dich: leider) ist C.Zitat von MDKMurdoc
Dabei prüfe ich in der Interruptroutine, die beim Empfang eines Zeichens aufgerufen wird, welches Zeichen angekommen ist. Wird in einem beliebigen Strom von Zeichen ein (vorher bestimmbares) Zeichen entdeckt (z.B. Paragraph §), dann werden die folgenden Zeichen in einem speziellen String mit max. 10 Zeichen Länge abgelegt (wenn das entsprechende Flag nicht gesetzt ist). Wenn der String gefüllt ist, wird ein Flag gesetzt. Dieser String wird im main oder entsprechenden Routinen ausgewertet und das Flag zurückgesetzt. So kann ich Ziffern oder kurze Strings im Controller auswerten und entsprechend reagieren. Vielleicht geht so etwas auch in Basic?
Ciao sagt der JoeamBerg
Lesezeichen