Quelltext-Tipps
Eine private Website zum Bilder und anderes zeigen ...
K
P

Kleinigkeiten, die das Programmieren hier und da (hoffentlich) ein bischen einfacher machen

Taktfrequenz zentral hinterlegen:

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

 Compilerprobleme (in V2.0.7.5)

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

 

Interrupts und Restore/Read

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

Watchdog und andere Reset-Quellen

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!