Hallo zusammen,
ich wollte euch mal eben schnell auf den aktuellen Stand bringen. Ich habe den Fehler gefunden und ich konnte es selber nicht glauben als ich es gesehen habe.
Ich habe tatsächlich bei einem UART interrupt vergessen die Register zu sichern. Kein wunder das der µC da irgendwo rumgesprungen ist sobald was über die Serielle riengekommen ist.
In Bascom gibt es die Möglichkeit bei der Deklaration der Interruptverzweigung mit anzugeben ob beim Springen in das Interrupt die Register gesichert werden sollen.
Bsp.:
On Int0 Label2 Nosave 'jump to label2 on INT0
Der Zusatz "Nosave" war das Problem. Hier die Erklärung aus der Bascom Hilfe.
When you specify NOSAVE, no registers are saved and restored in the interrupt routine. So when you use this option make sure to save and restore all used registers.
Ich habe das Nosave im Code entfernt und jetzt läuft alles einwandfrei. Das war wohl ein klassicher copy / paste Fehler von mir.
Aber vielen vielen danke an alle die sich mit dem Problem beschäftigt haben.![]()
Lesezeichen