Pagina 1 di 1

Problemi con scrittura su EEPROM PIC 16F876A

MessaggioInviato: 18 ott 2013, 11:43
da pablitomassa82
Ciao,
sto spippolando con il PIC 16F876A, in particolare sono alle prese con la memoria EEPROM interna.

utilizzo il seguente semplicissimo programma (che non funziona!)

Codice: Seleziona tutto
#include <PIC.h>

#define _XTAL_FREQ 20000000

__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_OFF & BOREN_OFF & LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF & CP_OFF);
__EEPROM_DATA(0,1,2,3,4,5,6,7);

void main(void)
{
   INTCON = 0b00000000;
   eeprom_write(10,80);
   
   while(1)
   {
   }   

}
   


Il fatto è che nella EEPROM vengono scritti solamente i dati 0,1,2,3,4,5,6,7, mentre viene ignorata la scrittura di 80 nell'indirizzo 10. In pratica sembra non funzionare eeprom_write. Qualcuno ha un idea?
grazie, saluti
Paolo

Re: Problemi con scrittura su EEPROM PIC 16F876A

MessaggioInviato: 19 ott 2013, 10:37
da MarcRider
PIC.h non è presente tra le mie librerie.

eeprom_write(); cos'è che fa? l'hai scritta tu?

Re: Problemi con scrittura su EEPROM PIC 16F876A

MessaggioInviato: 19 ott 2013, 11:30
da MarcRider
siccome la cosa interessa anche a me, e non ho mai scritto sulla EEprom, vorrei provarci.

Ho trovato questo post:
https://www.microchip.com/forums/m722643-print.aspx

Io ho una libreria EEP.h ma non sono definite quelle funzioni lì descritte.
Uso il c18 come compilatore.

Sto cercando se esiste una libreria che faccia il lavoro sporco al posto mio.

Re: Problemi con scrittura su EEPROM PIC 16F876A

MessaggioInviato: 19 ott 2013, 12:44
da MarcRider
Dunque, PIC.h non la trovavo perché è HiTech C.
EEP.h, guardando la definizione avevo le funzioni taggate come commento :shock:
Ho creato un altro progetto ed ho usato la versione più aggiornata di C18, e sono comparse le famose funzioni.

Re: Problemi con scrittura su EEPROM PIC 16F876A

MessaggioInviato: 20 ott 2013, 8:45
da Paolino
Se usi XC8 (derivato da Hi-Tech), la direttiva che scrive i dati in EEPROM all'avvio prevede un massimo di 8 byte alla volta. Ti suggerisco di fare così:

Codice: Seleziona tutto
_EEPROM_DATA(0, 1, 2, 3, 4, 5, 6, 7);          /* dati da 0x00 a 0x07 */
_EEPROM_DATA(8, 9, 10, 11, 12, 13, 14, 15);    /* dati da 0x08 a 0x0F */
_EEPROM_DATA(16, 17, 18, 19, 20, 21, 22, 23);  /* dati da 0x10 a 0x17 */
_EEPROM_DATA(24, 25, 26, 27, 28, 29, 30, 31);  /* dati da 0x18 a 0x1F */


Ciao.

Paolo.

Re: Problemi con scrittura su EEPROM PIC 16F876A

MessaggioInviato: 20 ott 2013, 16:25
da pablitomassa82
forse non hai la libreria PIC.h perché usi il compilatore C18, io utilizzo il pic-c della hi-tec

Re: Problemi con scrittura su EEPROM PIC 16F876A

MessaggioInviato: 20 ott 2013, 16:27
da pablitomassa82
Paolino ha scritto:Se usi XC8 (derivato da Hi-Tech), la direttiva che scrive i dati in EEPROM all'avvio prevede un massimo di 8 byte alla volta. Ti suggerisco di fare così:

Codice: Seleziona tutto
_EEPROM_DATA(0, 1, 2, 3, 4, 5, 6, 7);          /* dati da 0x00 a 0x07 */
_EEPROM_DATA(8, 9, 10, 11, 12, 13, 14, 15);    /* dati da 0x08 a 0x0F */
_EEPROM_DATA(16, 17, 18, 19, 20, 21, 22, 23);  /* dati da 0x10 a 0x17 */
_EEPROM_DATA(24, 25, 26, 27, 28, 29, 30, 31);  /* dati da 0x18 a 0x1F */


Ciao.

Paolo.


Ma la scrittura all'avvio funziona, è dopo nel main che non riesce a scrivere, ....credo però di non essere l'unico ad avere questo problema.

Re: Problemi con scrittura su EEPROM PIC 16F876A

MessaggioInviato: 20 ott 2013, 16:29
da Paolino
Non puoi passare a XC8?

Re: Problemi con scrittura su EEPROM PIC 16F876A

MessaggioInviato: 20 ott 2013, 16:32
da Paolino
Oppure scrivi le tue funzioni di accesso alla EEPROM. Leggi questo articolo, magari trovi spunto.

Ciao.

Paolo.