autoguider
03.10.2007, 13:36
Hallo Zusammen,
ich habe ein Phänomen beobachtet welches mich Nerven gekostet hat und Zweifel an der Zuverlässigkeit von Prozessor /Programmcode aufkommen lässt.
Ich programmiere eine Schrittmotorsteuerung welche vom PC aus über RS232 bedienbar ist. Prozessor AT Mega 8. Programmierung BASCOM 1.11.88.001
Das Software Interface welches auf dem PC läuft ist eigentlich gut dokumentiert. Bisher habe ich nur einen Fehler gefunden. Um zu verstehen was nun über den COM-Port des PC übertragen wird habe ich das Programm Portmonitor laufen. Damit sehe ich auch auf Binärebene was hin und her geschickt wird.
In dem Software interface gibt es einen Button mit der Bezeichnung des COM Ports. Aktiviere ich zum ersten Mal das Interface durch Drücken des Buttons dann schickt der PC einige Strings welche dann von der Schrittmotorsteuerung interpretiert werden. Als Antwort kommen dann die entsprechen Antwortstrings zurück. Beim ersten Mal funktioniert das reibungslos.
Die zurückgeschickten Parameter sind in der Steuerung im EEPROM gespeichert und werden nur beim Kaltstart ! der Schrittmotorsteuerung durch eine Init- Routine in Variable geschreiben. Diese Variablen liegen im SRAM.
Betätige ich nun im Software Interface den COM Button erneut, dann wird die Verbindung zur Schrittmotorteuerung abgebrochen. Es werden keine Nachrichten an die Motorsteuerung geschickt. Deshalb kann (nach meinem Weltbild) die Software nicht wissen das keine Verbindung mehr besteht.
Nun betätige ich wieder den COM Button. Es werden die üblichen Strings geschickt und es kommen die entsprechenden Antworten.
ABER:
Bei 3 Variablen vom Typ Byte ( SRAM) wird der Wert &H0 zurückgegeben.
Diese Variablen waren in den Adressen &H08D- &H08F gespeichert.
Ich habe nun die Reihenfolge der Deklaration der Variablen geändert. Damit kommen diese Bytes woanders zur Speicherung. Seitdem werden sie nicht mehr verändert.
Grundsätzlich bleibt bei mir nun der Zweifel an der Zuverlässigkeit des Systems. Es kann nicht sein dass Variablen reproduzierbar auf 0 gesetzt werden ohne dass es eine Ursache dafür gibt.
Es gibt keine weiteren Unterprogramme welche auf diese drei Variablen zugreifen. ( Nur Init und die Auswerteroutine).
Ich könnte natürlich immer vor dem Lesen der "Arbeitsvariablen" die Werte aus dem EEPROM lesen und in die Arbeitsvariablen übertragen. Nur das ist nach meiner Ansicht ein Behelf. Kann es sein dass mache Speicherzellen Halluzinationen bekommen ? Ich weigere mich aber zunächst daran zu glauben.
Es wird bei mindestens 3 Variablen im SRAM der Wert auf Wert 0 gesetzt. Ich konnte bisher aber nicht beobachten dass andere Variablen verändert werden.
Habt ihr auch schon solche Erfahrungen mit BASCOM und einem AT MEga 8 gemacht ? Läuft da etwas auf der Hardwareebene ab ? Fängt der MAX232 an zu spinnen und lässt den Stack überlaufen ?
Ich bin ratlos und bitte um Ratschläge.
beste Grüße
Christian
ich habe ein Phänomen beobachtet welches mich Nerven gekostet hat und Zweifel an der Zuverlässigkeit von Prozessor /Programmcode aufkommen lässt.
Ich programmiere eine Schrittmotorsteuerung welche vom PC aus über RS232 bedienbar ist. Prozessor AT Mega 8. Programmierung BASCOM 1.11.88.001
Das Software Interface welches auf dem PC läuft ist eigentlich gut dokumentiert. Bisher habe ich nur einen Fehler gefunden. Um zu verstehen was nun über den COM-Port des PC übertragen wird habe ich das Programm Portmonitor laufen. Damit sehe ich auch auf Binärebene was hin und her geschickt wird.
In dem Software interface gibt es einen Button mit der Bezeichnung des COM Ports. Aktiviere ich zum ersten Mal das Interface durch Drücken des Buttons dann schickt der PC einige Strings welche dann von der Schrittmotorsteuerung interpretiert werden. Als Antwort kommen dann die entsprechen Antwortstrings zurück. Beim ersten Mal funktioniert das reibungslos.
Die zurückgeschickten Parameter sind in der Steuerung im EEPROM gespeichert und werden nur beim Kaltstart ! der Schrittmotorsteuerung durch eine Init- Routine in Variable geschreiben. Diese Variablen liegen im SRAM.
Betätige ich nun im Software Interface den COM Button erneut, dann wird die Verbindung zur Schrittmotorteuerung abgebrochen. Es werden keine Nachrichten an die Motorsteuerung geschickt. Deshalb kann (nach meinem Weltbild) die Software nicht wissen das keine Verbindung mehr besteht.
Nun betätige ich wieder den COM Button. Es werden die üblichen Strings geschickt und es kommen die entsprechenden Antworten.
ABER:
Bei 3 Variablen vom Typ Byte ( SRAM) wird der Wert &H0 zurückgegeben.
Diese Variablen waren in den Adressen &H08D- &H08F gespeichert.
Ich habe nun die Reihenfolge der Deklaration der Variablen geändert. Damit kommen diese Bytes woanders zur Speicherung. Seitdem werden sie nicht mehr verändert.
Grundsätzlich bleibt bei mir nun der Zweifel an der Zuverlässigkeit des Systems. Es kann nicht sein dass Variablen reproduzierbar auf 0 gesetzt werden ohne dass es eine Ursache dafür gibt.
Es gibt keine weiteren Unterprogramme welche auf diese drei Variablen zugreifen. ( Nur Init und die Auswerteroutine).
Ich könnte natürlich immer vor dem Lesen der "Arbeitsvariablen" die Werte aus dem EEPROM lesen und in die Arbeitsvariablen übertragen. Nur das ist nach meiner Ansicht ein Behelf. Kann es sein dass mache Speicherzellen Halluzinationen bekommen ? Ich weigere mich aber zunächst daran zu glauben.
Es wird bei mindestens 3 Variablen im SRAM der Wert auf Wert 0 gesetzt. Ich konnte bisher aber nicht beobachten dass andere Variablen verändert werden.
Habt ihr auch schon solche Erfahrungen mit BASCOM und einem AT MEga 8 gemacht ? Läuft da etwas auf der Hardwareebene ab ? Fängt der MAX232 an zu spinnen und lässt den Stack überlaufen ?
Ich bin ratlos und bitte um Ratschläge.
beste Grüße
Christian