Gib mal hinter den Input-Befehl ein
Clear SerialIn
um sicherzustellen, dass der Buffer komplett leer ist.
66 32 79 78 hätte ich laut ASCII Tabelle allerdings als B ON übersetzt.
Wieso erwartest du eigentlich 64?
Gruß
Rolf
Hallo,
kann es sein, dass Du ein Geschwindigkeitsproblem beim slave hast? Wenn Du über das Terminal eintippst, ist der Zeitabstand zwischen den Zeichen größer!
gruß
magnetix48
Gib mal hinter den Input-Befehl ein
Clear SerialIn
um sicherzustellen, dass der Buffer komplett leer ist.
66 32 79 78 hätte ich laut ASCII Tabelle allerdings als B ON übersetzt.
Wieso erwartest du eigentlich 64?
Gruß
Rolf
Hallo,
die Routine Serial0charmatch() wird garnicht aufgerufen. Woher bekommt der slave seine Informationen?
Gruß
magnetix48
Hi,
Serial0charmatch() wird automatisch nach empfangen von CR aufgerufen.
Hm, es kann sein dass ich mich bei dem Ermitteln vertan habe, aber ich erwarte halt als erstes: "65, 32, 79, 78"( sorry, nicht 64).
Ich werde nachher nochmal alles nachprüfen. Aber auch wenn ich mich mit dem B On vertan habe, was hat das 53, 10 da zusuchen?(Also Line Feed und 5).
Grüße und danke,
Tom
Das Label Serial0charmatch: wird automatisch angesprungen, wenn du einZitat von magnetix48
Config Serialin ByteMatch <chr> eingibst.
Man braucht das auch nicht zu deklarieren, weil es keine Sub im eigentlichen Sinne ist.
@Movie85: Hast du mal das Clear SerialIn probiert?
Gruß
Rolf
Also,
ich hab das Clear SerialIn eingesetzt, hat aber keine Wirkung ergeben.
Ich habs dann mal so versucht, jedes Zeichen einzeln zu senden(ohne CR) und dann am schluss mit CR abzuschließen:
das funktioniert!Code:Print Chr(65) ; Print Chr(32) ; Print Chr(79) ; Print Chr(70) ; Print Chr(70) ; Chr(13)
Wenn ich jetzt aber Print "A ON" ; Chr(13) ausführe, gehts wieder nicht, obwohl ich jetzt überprüft habe, dass genau das selbe ankommt, wie beim Hyperterminal (65,32,79,7. Ich hab die Baudrate auch schon auf 2400 runtergesetzt, keine Veränderung!
Grüße und nochmals danke,
Tom
Hallo,
in der Hilfe von Bascom ist die Verwendung von Serial0charmatch anders angegeben.
Versuch es doch mal statt:
Sub Serial0charmatch()
Input New_command Noecho
End Sub
mit:
Serial0charmatch:
Input New_command Noecho
Return
Gruß
magnetix48
Hi,
danke, aber das nützt nichts, das Komische ist ja, dass es mit dem Hyperterminal reibungslos funzt. Jedoch nicht mit dem Atmega... Es scheint so, als würde er die Daten anders verschicken, aber dann verstehe ich nicht, warum ich mit der Ascii-Auswertung genau die selben Werte erhalte...
SEHR KOMISCH!!!
Mich nervt das jetzt wieder, ich hock den ganze Tag an diesem einem Problem! Obwohl ich eigendlich ein ganz anderes Programm schreiben wollte. Es funktioniert ja theoretisch, alles fein, aber halt nicht von Atmega zu Atmega....
Grüße,
Tom
Hallo Tom,
meine Vermutung ist, dass Du Geschwindigkeitsprobleme beim slave hast. Das Aufrufen eines Unterprogramms dauert länger als ein GOSUB - RETURN, da Register auf dem Stack abgespeichert werden müssen.
Wenn Du die Daten über's Terminal eingibst, entstehen längere Pausen zwischen den übertragenen Daten, die reichen dass der Controller nichts überliest.
Gruß
magnetix48
Hallo Magnetix48,Zitat von magnetix48
deine Aussage stimmt so nicht.
Es ist zeitmäßig vollkommen egal, ob du mit Gosub-Return durch eine Sub läufst, oder mit Call-End Sub. Die reine Zeit zum Aufrufen und zurückspringen sind immer 7 Zyklen. Der Unterschied ist lediglich, dass im Declare Befehl Parameter angegeben werden können, die dann in der Sub benutzt werden können.
Und du hast recht, Serial0CharMatch ist ein Label, was angesprungen wird und keine Sub. Allerdings macht Bascom da keinen Unterschied, zumindest bis jetzt noch nicht.
@Movie85 Bist du dir ganz sicher, dass sämtliche Zeichen, die von Hyperterminal gesendet werden exakt so auch von deinem Master kommen und auch nur diese?
Ich glaube immer noch, dass da das Problem liegt.
Gruß
Rolf
Lesezeichen