ich habe ein Problem bei der Suche nach meinem Programmfehler. Ich habe das Programm insgesamt mal angehängt (Assembler). Programmiert sind eine Funkuhr (aus dem Forum auf meinen Bedarf angepaßt) und ein RS232 Sende- und Empfangspuffer. Die übrigen Programmteile sind für später vorgesehen und hier abgeschaltet. Verwendet wird auf dem PC Hterm. Und das Schalten von 2 LEDs und ein Summer. Fehler: Wenn ich nichts eingebe oder Reset mache, läuft alles ordnungsgemäß. Wenn ich R1 zum Schalten der LED eingebe, funktioniert das, aber in unregelmäßigen Zeitabständen schaltet die LED von alleine. Diese Unregelmäßigkeit macht die Fehlersuche so schwierig. Wenn ich Hterm schließe oder das Kabel abziehe, bleibt der Fehler bestehen. Wenn ich statt R1 andere Zeichen eingebe, die nur durchlaufen, funktioniert das nach außen noch einwandfrei. Da zum Schalten der LED 2 Zeichen eingegeben werden müssen, ist ein falsches Schalten an anderer Stelle fast ausgeschlossen. Ich vermute am ehesten einen Fehler bei den Zeigern des Pufferspeichers in Verbindung mit Timingproblemen. Die Funkuhr ist nicht angeschlossen. Ob da eine fehlerhafte Übernahme erfolgt ist, kann ich nicht sagen. Eine Optimierung wollte ich dafür erst später vornehmen. Beim Senden hatte ich gelegentlich das Problem, daß erst nach dem 8. Zeichen angefangen wird, zu senden (Uhrzeit). Es geht aber kein Zeichen verloren. Vielleicht können das andere im Mega32 nachvollziehen. Ich habe schon manchmal den Eindruck, daß der Chip defekt ist. Verify ist aber OK. mfg
Versuch mal den Code in einzelne Module zu zerlegen, z.B. wie ich es in meinem Bootloader-Beispiel gemacht habe. Dein Spaghetticodemonster macht es einem sehr schwer, da durchzusehen. Peter
ja, das habe ich mir schon gedacht. In einem früheren Thread hatte ich nur die wesentlichen Schnipsel gepostet und hatte keine Antwort bekommen. Auf eine pers. Nachfrage wurde mir gesagt, daß das ohne vollständigem Code nicht ablauffähig ist und darum nicht kontrolliert werden kann. Weil ich nicht weiß, an welcher Stelle der Fehler auftritt, konnte ich hier nur den Gesamtcode posten. Es wäre zu betrachten die Interruptroutinen, die in der Interrupttabelle freigeschaltet sind, die Initialisierung, das Mainprogramm mit Funkuhr, Senden und Empfangen. Der Interrupt vom Funkuhrtimer sind 8ms. Die UART läuft mit 38400 bps, 8MHZ Takt. Ich hatte auch schon daran gedacht, Senden abzuschalten oder die Funkuhr besser zu überbrücken. Aber als Ergebnis kann nur kommen, es liegt am Empfangspuffer oder der Funkuhr. Und dann suche ich weiterhin vergeblich. Darum habe ich auf diese Aufteilung verzichtet. Sicherlich könnte ich alles mögliche rausnehmen, aber dann ist der Fehler auch nicht zu finden, weil jedes Teil für sich funktioniert. mfg
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.