Vai al contenuto
PLC Forum


Scrittura Su Eprom - Ciclo di scrittura Eprom PIC16F877A


kucaio

Messaggi consigliati

Salve a tutti,

ho un problema irrisolvibile almeno da me confido nel vs aiuto:

si tratta della scrittura e della lettura dei dati sulla EPROM di un Microcontrollore PIC16F877A allego il codice che utilizzo per la lettura:


lettura_EPROM; giorno, controllo [A],[M]	

	movlw	0x0
	banksel	EEADRH
	movwf  EEADRH;
	banksel puntatore
	movfw  puntatore ; indirizzo Data Memory
	banksel EEADR
	movwf  EEADR; indirizzo valore che deve essere scritto/letto.

	BSF STATUS, RP0; Bank 3
	BCF EECON1, 7;EEPGD; Punta alla DATA memory
	BSF EECON1,0; RD; Avvia la lettura
	nop
	nop

	banksel  EEDATA
	MOVF EEDATA, W
	banksel valore_letto
	movwf valore_letto

e per la scrittura:

	movlw	0x0
	movwf  EEADRH;
	banksel	puntatore
	movfw  puntatore
	banksel	EEADR
	movwf  EEADR 

	banksel     valore_letto
	movfw	valore_letto

	banksel     EEDATA
	movwf	EEDATA; valore che deve essere scritto/letto.

	banksel     EECON1
	BCF  EECON1,EEPGD;Seleziona  la DATA EPROM
	BSF  EECON1,WREN;Abilita la scrittura

	banksel EECON2
	MOVLW  0x55;
	MOVWF  EECON2;Scrive 55h
	MOVLW  0xAA;
	MOVWF  EECON2;Scrive AAh

	banksel EECON1
	BSF  EECON1,WR;Avvia la scrittura
	nop
	nop
	BCF  EECON1,WREN;Disabilita la scrittura

Vedete qualcosa che non va???!? non riesco a leggere i valore in EEDATA trovo sempre il valore 0xFF...presume il problema sia la scrittura....

Grazie mille in anticipo.

Link al commento
Condividi su altri siti


Spiacente, ma io uso il "C". Se vuoi vedo di reperire una funzione simile, sicuramente funzionante, e ti allego il listato del "C" con le istruzioni esplose in ASM

Link al commento
Condividi su altri siti

Tra la abilitazione e lo start della scrittura non ci devono essere altre istruzioni.

Non serve selezionare il banco: i due registri sono nello stesso banco

Devi aspettare la fine della scrittura in EEPROM (sarebbe saggio aspettare anche la fine della lettura) con un loop

Se usi interrupt devi (e' un must) devi disabilitarli all'inizio e riabilitarli alla fine della scrittura.

Cosi' dovrebbe funzionare. Ciao.

Link al commento
Condividi su altri siti

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...