Ich benutze den MCC18 Compiler.
Habe es geschafft den Flash teils richtig auszulesen.
Ich sende die ausgelesenen Daten über CAN an mein Windows Programm, dort habe ich festgestellt, dass ich 4 mal Falsch und 1 mal richtig auslese. Woran es liegt weiß ich aber nicht.

void FlashLesen( unsigned long adr )
{
unsigned char *dat;
unsigned int i;

TBLPTR = adr;

INTCONbits.GIEH = 0;
EECON1bits.EEPGD = 1;

for(i = 0; i < 16; i++)
{
_asm TBLRD _endasm
TBLPTR++;
*dat = TABLAT;
dat++;
}

INTCONbits.GIEH = 1;
}


Muss ich, wenn ich jetzt das Programm aufspielen würde, die Interrupts auf eine neue Adresse bringen, habe da irgendetwas darüber im Internet gelesen, aber bin nicht daraus schlau geworden.
Wie sieht das mit dem Hexfile aus, ab welcher Adresse fange ich an in den Flash zu kopieren. Ab 0x0000? Und was bedeutet die 04?

:02 0000 04 0000FA
:0600000039EF1BF01200B5
:06000800D3EF19F0120015
:060018002CEF1AF01200AB
:06002A0001008E3600000B
:0800300091000000080000002F
:0400BC008E0E286E0E
:1000C0002E6A256A246A72EF00F08E0E286E27C011

Danke