Hallo,
Die 5V muss man mit dem Oszilloskop messen, ein DVM kann in diesem Falle keine Aussage machen.
Die grundsätzliche Frage ist, ob der Fehler im Hardware-Aufbau liegt oder in der Software!
Hardware:
Da wäre zuerst einmal die Masse-Verbindung zwischen den Platinen und mögliche Brummschleifen.
Gibt es auch Blockkondensatoren?
Die Datenübertragung erzeugt ein Störsignal, das ist eigentlich eine Variable Frequenz. Wenn dein Aufbau nicht ganz sauber ist, kann das dann zu viel werden. Bei einem sauberen Aufbau ist das kein Problem.
Software:
Hier ist vor allem im Bereich der Interrupts zu suchen.
1. Die Interrupts benötigen zusätzlichen Platz auf dem Stack um Register und Rücksprung-Adresse zu retten und für lokale Variablen. Hier kann es zu einem Überlauf kommen, wenn der Stack zu klein ist.
2. Wenn die ISR nicht richtig beendet wird, weil z.B. Interrupts zu früh wieder freigegeben werden, können sich die ISR auf den Stack schachteln, was auch zu einem Überlauf führen kann.
3. Mit Bascom kenne ich mich nicht so aus, aber bei C ist ein typischer Fehler mit nicht initialisierten Zeigern zu arbeiten oder über Array-Grenzen hinaus zu schreiben. Dann wird irgendwie der Stack zerschossen. Besonders wenn dann eine Rücksprung-Adresse überschrieben wird, macht das Programm unerwartete Dinge!
Die Baudrate hat nur am Rande einen Einfluss und ein Ändern löst das Problem nicht wirklich. 9600 Baud sind eigentlich noch keine Herausforderung für den µC.
9'600 Baud ergibt maximal knapp 1'000 Interrupts/Sekunde. Wenn der Fehler jetzt bei jedem 1'000ten Aufruf auftritt, dauert es nur etwas länger, wenn du die Baudrate senkst, behebt aber den Fehler nicht wirklich.
MfG Peter(TOO)
Lesezeichen