PIC18F47K40 UserID memory schreiben

Gast #6970080
Lesenswert?

Hi,

früher konnte man bei den PICs den UserID Bereich mit IDLOC Pragmas 
schreiben. Bei dem PCI18 geht das nicht mehr

Ich bin mit dem Datenblatt zu folgender Routine gekommen, welche aber 
leider nicht funktioniert.

WRTC ist auf off, so dass der Schreibschutz deaktiviert sein müßte

Wenn ich mir die enstprechenden Speicherstellen anschaue (siehe Bild) 
dann steht da auch mein letzter Wert mit 2 an Stelle 0x200003 drin.

Lese ich den Bereich aber wieder aus in MPLAX steht alles auf 0xFF
1
 void prog_user_id(uint32_t adr, uint8_t value){
2
    unsigned char irq_state = INTCONbits.GIE;
3
    NVMCON1bits.NVMREG = 0x01;  // select userid memory
4
    NVMCON1bits.WREN = 1;       // enable write access
5
    
6
    TBLPTRUbits.ACSS = 0x01;    // enable write
7
    TBLPTRUbits.TBLPTRU = (adr >> 16) & 0xFF;
8
    TBLPTRH = (adr >> 8) & 0xFF;
9
    TBLPTRL = adr & 0xFF;
10
    TABLAT = value;
11
    
12
    // nvm unlock sequence
13
    INTCONbits.GIE = 0;         // Disable interrupts
14
    NVMCON2 = 0x55;             // start nvm unlock sequence
15
    NVMCON2 = 0xAA;
16
    NVMCON1bits.WR = 1;
17
    while (NVMCON1bits.WR){}    // Wait for write to complete
18
    NVMCON1bits.WREN = 0;       // disable write access
19
    INTCONbits.GIE = irq_state; // restore interrupt enable
20
}
21

22
prog_user_id( 0x200000, 0);
23
prog_user_id( 0x200001, 1);
24
prog_user_id( 0x200002, 0);
25
prog_user_id( 0x200003, 2);

Hat jemand eine Idee was ich da falsch mache?

Gruß
Angehängte Dateien:
Gast #6970168
Lesenswert?

hmm,

als ich mit der Portierung begonnen hab, konnte er mit diesen Pragmas 
nix anfangen.
Jetzt nochmal ausprobiert und es kompiliert ohne Probleme. Ich vermute 
ma ich hatte da noch einen anderen Fehler drin der mich verarscht hat.

Ich probiere es nochmal damit. Kann man denn irgendwie sehen was für asm 
aus diesen pragmas generiert wird? Im output listing sehe ich nur die 
Pragmas aber nicht den asm code.
Beitrag #6970478 wurde von einem Moderator gelöscht.

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