welches Terminalprogramm verwendest Du? Es ist besser, wenn ich's mit demselben Programm versuchen kann. Es könnte sein, dass die Zeichen erst übertragen werden, wenn Du ENTER drückst. Könntest Du sicherheitshalber anhand der Anwesenheitsmeldung noch einmal die Versionsnummer prüfen?
mein Dummheit....
Es hat von Anfang an funtkioniert.
Das lokale Echo war ausgeschaltet.
So bin ich davon ausgegangen, das das angezeigte Zeichen vom lokalen Echo erzeugt wird. Nun habe ich das mal eingeschaltet und siehe da jede Eingabe kommt 2mal .... einmal vom lokalen Echo und einmal vom MC.
sorry
mare_crisium,
bin leider noch immer nicht 100%ig mit dem Durchrarbeiten des Codes durch.
Manche Programmteile gehe ich schon zum x-ten mal durch, springe dann wieder zu deiner gut beschriebenen Doku und dann wieder zurueck usw.
Moechte eben alles nachvollziehen, was du geschrieben hast. (hast ja wieder mal sehr viel Zeit und Muehe investiert)
Das mit den Einbinden eines Zustandsautomaten, fand ich anfangs etwas schwieriger, mittler Weile aber vereinfacht es mir sorgar das Nachvollziehen des Codes.
Wo wir schon mal bei dem Zustandsautomaten sind:
??? Es gibt ja auch fehlerhafte Zustaende, welche abgefangen werden.
Macht es nicht Sinn, Fehler zur Anzeige im Terminal-Programm zu bringen?
??? In einem abgeschlossenen Projekt, wo der Code auf dem MC werkelt, wuerde man doch sonst Probleme bei der Uebertragung(z.B.wenn Zeichen mehrfach uebertragen werden muessen)
nicht oder nur sehr schwer merken, um den Code eventuell zu korrigieren.
PS.
Bitte noch etwas Geduld mit mir, brauche leider noch ein paar ruhige Stunden fuer die Aufarbeitung des Codes.
mare_crisium,
kann ich das Echo im Studio simmulieren?
Wenn ja wie?
eventuell auf UDR CR legen und dann ein Zeichen...und dann LF fuer das Ruecksetzen des COM-Ports..?
ich bastele schon an SERIAL_V04; deshalb dauert's ein bisschen mit den Antworten auf Deine Fragen :
1. Abfangen fehlerhafter Zustandsnummern: Ja, das habe ich vergessen. Wird in Version _V04 eingebaut. Die Prozedur SER_TX_DONE wird dann den Abschluss der Sendung (im T-Flag) und die Fehlernummer (in r16; 0x00 bedeutet "kein Fehler") zurückgeben.
2. Im Studio kannst Du das Echo nur bis zu der Stelle verfolgen, wo das Zeichen ins UDR geschrieben wird. Es wäre schön, wenn die virtuelle USART des Simulators mit einem virtuellen ComPort des PC verbunden wäre. Dann könnte man auch die Zusammenarbeit von PC und MC simulieren - ist aber leider nicht vorgesehen (meines Wissens).
Zu 2., ich stand bei meinem Projekt vor dem selben Problem und habe dafür com0com ( http://com0com.sourceforge.net/ ) verwendet. Zwar mit dem Bascom-Simulator, aber das dürfte ja keinen Unterschied machen.
hier ist endlich - muss ja zwischendrin auch noch Fussballspielen - die (teilweise) getestete Version mit Empfangsautomat. Nach dem Einschalten wird wieder die Anwesenheitsbotschaft an den PC gesendet. Danach können Botschaften vom PC empfangen werden. Es gibt kein Timeout - also kann man sich beim Tippen der Botschaft Zeit lassen.
Die „Auswertung“ der empfangenen Botschaften ist noch sehr rudimentär: Bei jeder empfangenen Botschaft wird ein Botschaftszähler hochgezählt. Der Zählerstand (0 bis 15) wird auf LED0 bis LED3 angezeigt.
Beim Empfangsautomaten zeigt sich eine Schwäche der Konstruktion ohne Sprungtabelle: Die Reichweite der „rjmp“-Sprünge ist zu kurz, um das Programm mit einem Satz zur Zieladresse zu befördern. Deshalb sind einige „Aufsetzer“ nötig, um bis ans Ziel zu kommen. Weil mir das nicht gefällt, wird die nächste Version wieder mit Tabellen hantieren.
Der Empfangsautomat selbst ist die 1:1 Umsetzung dessen, was in der Beschreibung steht. Er ist etwas lang, weil ich versucht habe, alle Situationen, die mir einfielen, zu berücksichtigen. Ich hoffe jedenfalls, ich habe ihm den Fluchtweg ins Nirwana gründlich versperrt .
@netzman:
Danke für den Hinweis - ich werde das Teil demnächst ausprobieren. Es wäre eine echte Erleichterung, wenn man testen könnte, ohne das Programm jedesmal erst in den Ziel-MC brennen zu müssen.
Lesezeichen