Hallo Robert,
der C164CI (was für einen Aufbau hast du? Hat dieser 2x40 Pins?) hat
sehr wohl den gleichen Befehlsatz wie der C167, genauso wie alle anderen
aus der Familie bis hin zu den XC23xx.
Es gibt ein paar Unterschiede bei den Dialekten der C-Compiler, das hat
aber nix mit dem µC zu tun. Welcher Compiler wird genutzt.
Wo tritt der Fehler auf? Beim compilieren oder reagiert der µC nur nicht
wie gewollt ( was ich jetzt mal annehme)?
zu deinem Code:
EXISEL ist für bestimmte Interupt Eingangsquellen, den "Fast external
interrupts". Diese haben den Namen EX#IN. Also wird die Zeile nicht
benötigt, es sei denn es ist gewollt. Dann musst du aber das Register
EXICON setzen, weil "0 0: Fast external interrupts disabled: standard
mode"
Auf alle Fälle darf EXISEL nicht 0xffff sein, da laut Manual erreichst
das:
"11: Input from pin EXxIN ANDed with alternate pin."
Es muss mit
"01: Input from alternate pin."
belegt werden wenn du P8.0 nehmen willst, da
"CAN1_RxD CAN 1 Receive Data Input" <-> "EX0SS Associated Interface
Line: CAN1_RxD" {Wenn ich ein Fehler beim Interpretieren des UM gemacht
sagt bescheid, in der Ecke war ich bisher nicht)
Nicht jeder externe Interrupt hat etwas mit den "EX#IN"s zutun. Es gibt
auch normale externe Interrupts. P8.0 geht auch als normale
Interruptquelle, was einfacher ist. Dann scharst du dir die ganze "EX.."
Befehle.
Jetzt musst du aber noch sagen ob CC16 Capture oder Compare Funktion
hat. Dafür ist CCM4 zuständig. Je nach gewünschter Auslöse Flanke muss
der Abschnitt CCMOD16 in CCM4 gleich #01b bis #11b groß sein (# -> kommt
auf den gewünschten Timer an, bei dir egal also lass es gleich 0 )
Was machen die lcd-Funktionen in der Interuptroutine? Was ist deren
Aufgabe?