Newsgroup: it.hobby.elettronica.digitale
Titolo: PIC 16f913 scrivere EEPROM

salve a tutti, sono nuovo e alquanto nubbio in materia.
 
sono alle prese con un PIC 16f913, con MPLAB compilo il programma, ma quando 
vado ad assemblarlo mi da questo errore: Symbol not previously defined 
(EECON2).
 
la subroutine del programma riferita alla scrittura è questa:
 
WriteEE
    banksel        EEDATL            ; Select the bank of EEDATA
    movwf        EEDATL            ; Data Memory Value to write
           ;GearEE is in common banl 0x70
    movf        GearEE,W        ; Use the GearEE number as the EEPROM 
address
    banksel        EEADRL            ; Select bank of EEADR
    movwf        EEADRL            ; Data memory address to write
    banksel        EECON1            ; Select Bank of EECON1
    bcf            EECON1,EEPGD    ; Point to DATA memory
    bsf            EECON1,WREN        ; Enable writes
           ;Global Interrupts not enabled for this program
    movlw        0x55
    movwf        EECON2            ; Write 55h  (EECON2)
    movlw        0xAA
    movwf        EECON2            ; Write AAh  (EECON2)
    bsf         EECON1,WR        ; Set WR bit to begin write
    btfsc        EECON1,WR        ; Wait for write to finish
    goto        $-1                ;    looping until it is
    bcf         EECON1,WREN        ; Disable writes
    banksel        0                ; Select bank 0 now that we're all done
    return                        ; Return to caller
 
 
in pratica non riconosce la EECON2..... atemi una mano per favore. 
 
 

 in pratica non riconosce la EECON2..... atemi una mano per favore.
 
Hai incluso il file 16F913.inc nel progetto?
Da quel poco che hai spiegato, la prima cosa che mi viene in mente e' 
questa; dovrebbe darti altri errori, ma puo' essere che MpLab sia 
settato per fermarsi al primo errore e quindi ti rileva solo quello.
ciao
Angelo
 
 


 
Si, certo, il file 16f913.inc � incluso nelle direttive all'inizio.
 
list    p=16f913
#include    <p=16f913.inc>
 
dalla documentazione del pic ho visto che l'allocazione di EECON2 � 18Dh, e 
se io al posto di
 
movwf     EECON2
 
scrivo
 
 movwf     0x18
 
MPLAB mi compila il file .hex senza errori, ma quando faccio eseguire il 
programma al PIC, lui si ferma al momento di scrivere sulla EEPROM.
 
 
 

 programma al PIC, lui si ferma al momento di scrivere sulla EEPROM.
 
Che versione di MpLab stai usando? Nell'ultima revisione (8.90?), ho 
trovato un bug che non faceva compilare nemmeno programmi che nella 
precedente erano Ok.
Se stai usando l'ultima revisione, proverei a vedere cosa succede usando 
la penultima che, a quanto mi risulta, non aveva bugs in questo senso.
 
Aspetta che mi viene in  mente qualcos'altro... non uso l'assembler da 
un bel po' di tempo, ma ricordo che c'erano limitazioni sull'uso della 
movwf e l'altra istruzione che agisce sui bit proprio per la 
scrittura/lettura della Eeprom interna (che e' critica!).
Di sicuro ricordo che c'era un timing da rispettare (0xaa o qualcosa del 
genere!).
Dovrebbe esserci una app. notes di Microchip al riguardo!
ciao
Angelo
 


 
la versione di mplab credo sia l'ultima, perch� l'ho scaricata qualche 
giorno fa.
 
per il discorso del timing prima di scrivere bisogna caricare i valori 0x55 
e 0xAA su EECON2 ed � proprio questo che non mi funziona, perc� non 
riconosce la EECON2 (che non � un indirizzo fisico) 
 
 


 
Mi hai risolto il problema .....
 
In effetti sono andato a controllare la versione del MPLAB ed avevo la 6.6, 
e cercando su internet mi sono accorto che c'erano versioni molto pi� 
aggiornate, tra cui la 7.10 che aveva una patch aggiuntiva.
 
ho scaricato ed installato la 7.2, e come per magia tutto ha funzionato.
 
Grazie dell'aiuto.