ID-Locations lesen und beschreiben, PIC18

Gast #3716799
Lesenswert?

http://www.microchip.com/forums/m330820.aspx

Hallo,

ich versuche derzeit meinen PIC18 mit einer Gerätenummer zu beschreiben. 
In obigen Thread habe ich dazu was gefunden, hier mein Code aus der 
main.c:

/* IDLOCS: 8 bytes at 0x 0x200000..0x200007 programmed into the device - 
used for such as version num.
   These bytes can be read even if the device is code protected */
#pragma romdata myidlocs = 0x200000 // myidlocs is just any label and is 
not actually used.
// Define 8 bytes at this addr into myUserID array
const far rom unsigned char myUserID[] = 
{'1','2','3','c',0x55,0xaa,0x22,'A'};
#pragma romdata // End of myidlocs block and so resume allocation of 
data at default place.

void idloc_read(void){
    unsigned char c0=0,c1=0,c2=0,c3=0;
    far rom unsigned char * gFarPtr; // create a 24 bit far ptr which 
can point to rom area.
    gFarPtr = (far rom unsigned char *)myUserID; // type cast the 
0x200000 const to same as var then init ptr
    c0 = myUserID[0];
    c1 = myUserID[1];
    c2 = myUserID[2];
    c3 = myUserID[3];
}

Problem 1: Wenn ich während dem Debuggen in diesen Speicher schaue 
(mplabX -> Winodws -> Memory Views -> User ID Memory) steht hier 
0xFFFFFFFF … Wieso wird obige ID nicht geschrieben?

Problem 2: Leider sehe ich weder das MyUserID array im Debugmodus (Bei 
Value steht: Invalid Address, obwohl die Adressen passen: myUserID[0] -> 
Adresse 0x200000, myUserID[7] -> Adresse 0x200007…), noch steht später 
in c0 der geschriebene Wert (oder eben 0xFF – bis jetzt steht irgendein 
Müll drinnen)…

Ich versuche es schon ewig jetzt. Vorher habe ich mal einen Inline 
Assembler drinnen gehabt, hat leider auch nicht funktioniert. Ich bin 
ratlos..

Gibt es keine EINFACHE Methode, wie man die Dinger beschreiben und 
anschließend wieder auslesen kann?

Danke, Viele Grüße!
Gast #3720888
Lesenswert?

Also, problem:

ich beschreibe das TBLPTR Register (passt), und lese eine beliebige 
Zelle aus -> geht, Inhalt stimmt.

Ich beschreibe TBLPTR mit 0x200000, steht auch drinnen. Dann lese ich 
das ins TABLAT Register (wie zuvor) -> Inhalt falsch.

Wieso? Sind die irgendwo read protected?
JEDE andere Zelle kann ich lesen..

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren