Vai al contenuto
PLC Forum


Scrittura Dataeprom Su 876 - istruzioni


lukappa87

Messaggi consigliati

Salve...

Nel mio programma in C voglio ad un certo punto scrivere "x" valori sulla eprom data del mio pic 876...

Sfogliando nei file include penso di aver trovato le istruzioni adatte... :blink:

EEPGD

WRERR

WREN

WR

RD

confermate? <_<

però non saprei come usarle...

Qualcuno di voi ,gentilmente,saprebbe dirmi come utilizzarle? :)

Grazie 1000

Lukappa87

Link al commento
Condividi su altri siti


Non sono istruzioni, ma i nomi dei bit del registro EECON1 che controlla la lettura/scrittura sulla EEPROM (e sulla FLASH). In particolare per accedere alla EEPROM servono 4 registri: EEADR e EEDATA nel banco 2 servono a contenere l'indirizzo e il dato, EECON1 e EECON2 nel banco 3 servono per comandare le operazioni di lettura scrittura.

Nel datasheet c'e' scritta la funzione di ciascuno di questi bit e brevi esempi di codice per la scrittura/lettura. Per esempio per scrivere un generico "dato_da_scrivere" ad un generico "indirizzo_cella" si puo' usare il seguente codice. Bank2 e Bank3 vanno sostituiti con le apposite istruzioni per impostare il banco ram attivo.

    Bank2
            
        MOVLW    indirizzo_cella
        MOVWF    EEADR
        MOVLW    dato_da_scivere
        MOVWF    EEDATA

    Bank3

        BSF      EECON1,WREN     ;protez. scrittura eeprom off
        BCF      EECON1,EEPGD    ;abilita operazioni eeprom
        MOVLW    055H            ;sequenza di accesso 1
        MOVWF    EECON2
        MOVLW    0AAH            ;sequenza di accesso 2
        MOVWF    EECON2
        BSF      EECON1,WR       ;avvia scrittura
            
        BTFSC    EECON1,WR       ;attende fine scrittura (bit WR a 0)
        GOTO     $-1            

        BCF      EECON1,WREN     ;protez. scrittura eeprom on

Modificato: da Claudio F
Link al commento
Condividi su altri siti

Ciao, questa routine scrive nella locazione address della data eeprom un valore (value). L'uso su un 18f452 ma penso vada bene anche per un 16f876.

EEADR=address; //setta l'indirizzo

EEDATA=value; //copia value in eedata

EECON1bits.EEPGD = 0;

EECON1bits.CFGS = 0; // questi 2 servono per puntare alla eeprom dati invece della eeprom program e dei bit di configurazione

EECON1bits.WREN = 1; //questo abilita la scrittura

INTCONbits.GIE=0; // questa è una routine standard che va seguita alla lettera dicono i data sheets.

EECON2=0x55;

EECON2=0xAA;

EECON1bits.WR=1;

INTCONbits.GIE=1; // fine routine standard.

_asm nop _endasm;

while (PIR2bits.EEIF); //poichè non uso l'interruzioni per quanto riguarda la scrittura della eeprom

PIR2bits.EEIF = 0; //faccio così. Questo infatti non è altro che il flag interruzioni della eeprom.

Quelli che citi tu,

EEPGD

WRERR

WREN

WR

RD

sono tutti flag in appositi registri per la scrittura nella eeprom.

Ti consiglio comunque di scaricarti i data sheets dalla microchip e leggere la sezione riguardante la scrittura nella eeprom; quello che ho scritto sopra viene diretto da lì. :ph34r:

Link al commento
Condividi su altri siti

  • 2 weeks later...

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...