Const Icrystal = 20000000 $crystal = Icrystal
so ist der Zugriff auf Taktfrequenz im Quelltext möglich und bei Änderungen am Zielsystem ist nur eine Stelle anzupassen
wenn die Funktion STR verwendet wird, wurde teilweise der SW-Stack gestört (vgl. SW-Frame-Check)
Abhilfe
$lib "mcsbyteint.lib"
einfügen
LOCAL und Arrays beißen sich:
sub xyz local aaa(10) as long aaa(1) = 123 -> hier meckert der Compiler ...
Abhilfe: Arrays DIMensionieren, nicht LOCAL anlegen
bei Interrupts werden auch bei SAVEALL nicht alle Register gesichert. Wer die Funktion RESTORE/Read benutzt, wird Probleme bekommen, da die Zeiger in ungesicherten Registern liegen. Abhilfe:
$asm Push R12 ' save registers Push R13 ' used in floating point/Restore/read Push R14 Push R15 Push R6 Push R8 Push R9 $end Asm ' your functions here $asm Pop R9 Pop R8 Pop R6 Pop R15 ' restore registers Pop R14 Pop R13 Pop R12 $end Asm
In einigen Beispielen wird Watchdog-Bit mit Peek(0) ermittelt. Die anderen Reset-Quellen sind dort drinnen aber falsch, korrekt ist die Variable (Register) MCUSR.
Dim Wdbit As Bit Dim Bobit As Bit Dim Extrbit As Bit Dim Pobit As Bit Dim Bwd As Byte Bwd = MCUSR Bobit = Bwd.borf ' brown out detect Extrbit = Bwd.extrf ' externer reset Pobit = Bwd.porf ' power on reset Bwd = Peek(0) Wdbit = Bwd.wdrf ' Watchdog MCUSR= 0 Bwd = 0 Poke 0 , Bwd
Powered by websitebaker, (c) by C. Lotze, based on a design by Chio Maisriml Nutzung der Texte oder Bilder - auch teilweise - nur nach Rücksprache, siehe Impressum!