För att testa att ASM delen verkligen gör en call till 6000 där C programmet ligger, så lade jag in en ASM snutt i C modulen:
Kod: Markera allt
_asm
movlb 1
movf 0x162,0,1
movlb 2
movwf 0x210,1
_endasm
När jag tittar på värdena i minnet, så sätts värdena allt eftersom timern flödar över.
Dock sätts inga värden till de minnespositioner jag angett med mina C pekare.
I SIM sätts de som de skall.
Men som sagt inte när cpu'n körs.
Har jag missat något i pekaren
ram char *opMode = (ram char*)0x200;
ram skall vara default vad jag förstått, men angav det ändå för att vara 100%
Om jag förstod C18 manualen rätt, så behöver jag inte tänka på bankerna med denna typ av addressering. Jag kan ha läst eller förstått fel även om jag nu omläser den rejält.
Jag kollar minnesadresserna över RS232 när jag kör cpu'n, där jag dumpar ut minnesadress med innehåll. Därför ser jag när värden är satta och inte.
D.v.s, anropet till C modulen görs rätt. inline ASM kod i C modulen körs rätt, vilket "bevisar" rätt anrop till C modulen.
Men sätta minne med mina C pekare. Funkar inte.
För tillfället är slutsatsen att jag missat något vad gäller pekare.