Thomasxxl1234567
20.12.2005, 15:16
Hallo,
ich versuche einen Bootloader für den PIC18F258 in der Programmiersprache C zu schreiben.
Ich habe als erstes versucht aus dem PIC die Daten aus dem FLASH heraus zu lesen, doch dies funktioniert leider nicht.
Das Data Sheet von Microchip hilft da irgendwie nicht wirklich weiter,
es sind dort zu kurze Erklärungen und Funktionen die nicht in C verfügbar sind, auch wenn man diese als Assemblercode einfügt.
Bsp.:
void FLASHRD( void )
{
unsigned char *dataPointer;
TBLPTRU = 0x00; //Adresse
TBLPTRH = 0x00;
TBLPTRL = 0xC0;
EECON1bits.EEPGD=1;
EECON1bits.RD=1;
// _asm TBLRD*+; _endasm //Dieser Befehl funktioniert nicht
Nop();
Nop();
*dataPointer = TABLAT; // Hier stehen doch jetzt 8 Bit an Daten
Wenn ich mir dataPointer anschaue, dann steht da nicht das was im HEX file steht.
Was mache ich falsch? Muss man diese Prozedur in Assembler schreiben?
Kennt jemand vielleicht eine Seite, wo es vielleicht Hilfestellungen zu diesen Thema gibt.
ich versuche einen Bootloader für den PIC18F258 in der Programmiersprache C zu schreiben.
Ich habe als erstes versucht aus dem PIC die Daten aus dem FLASH heraus zu lesen, doch dies funktioniert leider nicht.
Das Data Sheet von Microchip hilft da irgendwie nicht wirklich weiter,
es sind dort zu kurze Erklärungen und Funktionen die nicht in C verfügbar sind, auch wenn man diese als Assemblercode einfügt.
Bsp.:
void FLASHRD( void )
{
unsigned char *dataPointer;
TBLPTRU = 0x00; //Adresse
TBLPTRH = 0x00;
TBLPTRL = 0xC0;
EECON1bits.EEPGD=1;
EECON1bits.RD=1;
// _asm TBLRD*+; _endasm //Dieser Befehl funktioniert nicht
Nop();
Nop();
*dataPointer = TABLAT; // Hier stehen doch jetzt 8 Bit an Daten
Wenn ich mir dataPointer anschaue, dann steht da nicht das was im HEX file steht.
Was mache ich falsch? Muss man diese Prozedur in Assembler schreiben?
Kennt jemand vielleicht eine Seite, wo es vielleicht Hilfestellungen zu diesen Thema gibt.