kucaio Inserito: 17 novembre 2009 Segnala Share Inserito: 17 novembre 2009 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 More sharing options...
kucaio Inserita: 23 novembre 2009 Autore Segnala Share Inserita: 23 novembre 2009 Sig. livio mi aiuti almeno lei che sa tutto o quasi... Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 23 novembre 2009 Segnala Share Inserita: 23 novembre 2009 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 More sharing options...
kappa47 Inserita: 23 novembre 2009 Segnala Share Inserita: 23 novembre 2009 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 bancoDevi aspettare la fine della scrittura in EEPROM (sarebbe saggio aspettare anche la fine della lettura) con un loopSe 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 More sharing options...
kucaio Inserita: 25 novembre 2009 Autore Segnala Share Inserita: 25 novembre 2009 Scusate ma l'influenza mi aveva messo KO.provo e vi faccio sapere grazie a tutti... Link al commento Condividi su altri siti More sharing options...
kucaio Inserita: 30 novembre 2009 Autore Segnala Share Inserita: 30 novembre 2009 Grandioso funziona grazie a tutti. Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora