Zitat von
Vitis
@leo.vetterli
wenn das pushen und poppen Abhilfe schafft sind zu 99% die Stack-
Frameeinstellungen zu klein, weil
Bascom nämlich alle Register versucht
zu pushen und poppen in einer ISR ... leider.
@Vitis
leo.vetterli hat vollkommen Recht:
Bascom speichert die Register, die nur für floating Point benutzt werden nicht ab. Und das sind R12 - R15. Nutzt man Floating Point in der ISR und außerhalb, muss man die Register selber sichern.
R6, R8 und R9 übrigens auch nicht. Daher dauert der Aufruf der ISR auch nur 53 Takte und nicht 67 (32*2 + 3 für SREG), wie eigentlich anzunehmen wäre.
Hilfe zu On Interrupt:
R12 – R15 are not saved. When you use floating point math in the ISR(not recommended) you must save and restore R12-R15 yourself in the ISR.
Lesezeichen