Hi zusammen,
ich habe ein kleines Problem, welches mich noch zur Verzweiflung bringt. Und zwar was kann bei einem Atmega1284p dazu führen, das ein normaler Bytevergleich gelegentlich sporadisch fehlerhaft ist?
der Bytevergleich sieht ganz simpel so aus:
Code:
If byte1 = byte2 Then
'..... Tue was
else
' Fehler und die Werte der beiden Bytes ausgeben
end if
die beiden Bytes werden zyklisch über die beiden UART-Schnittstellen beschrieben. Jedes mal wenn der Vergleich angeblich ungleich ist und ich mir die beiden angeblich ungleichen Bytes ausgeben lasse, steht aber in beiden Bytes der gleiche Wert drin. Wie kann das sein, das beide Werte identisch sind und er trotzdem in den "Else-Teil" springt?
Das Überprüfen findet in einer eigenen Sub statt, welche zyklisch aus der Hauptschleife angesprungen wird und aus diesem Grund habe ich schon den "$hwstack, $swstack und die $framesize hochgesetzt. Kann es etwas damit zu tun haben?
Ich habe in dem Programm auch alle 4 Timer sowie beide UARTS des Atmega im Einsatz. Ich meine zu glauben, das das Problem verstärkt auftritt, wenn beide UARTS aktiv sind und gleichzeitig Daten ausgetauscht werden. Für die UARTS verwende ich unter anderem auch die Eingang und Ausgangspuffer.
Hat jemand eine Idee oder so ein Phänomen schon mal gehabt?
Ich hoffe jemand hat einen Denkanstoss?
Lesezeichen