Störungen im RS232 Softwarepuffer ( ATMEGA32 )

OP #605040
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
Angehängte Dateien:
Gast #605063
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.