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!
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..
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.