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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.