sjpagan Inserito: 1 novembre 2006 Segnala Share Inserito: 1 novembre 2006 Ciao a tutti, Sono subito a chiedere aiuto, mi sono impantanato sulla scrittura di una Eeprom, allego il codice cosi mi spiego meglio' * Test configuration:' MCU: PIC16F876' Dev.Board: EasyPIC3' Oscillator: HT, 4.000 MHz' Ext. Modules: None' SW: mikroBasic v5.0 or higherprogram prova2dim dad,dad1,dad2 as byteTRISB = %00000000 'CONFIGURAZIONE OUTPUT LEDTRISC = %11110000 ' CONFIGURAZIONE OUTPUT LED + PULSANTITRISA = %11111111main:x:if PORTA = 0 thengoto xelsedad = Eeprom_Read($00)if dad = 0 thenEeprom_Write($00,1)dad1=Eeprom_read($00)end ifif dad = 1 thenEeprom_Write($00,0)dad2=Eeprom_read($00)end ifend ifgoto xend.il problema è questo quando porta0 (con il debugger per prova la metto io a 1) diventa 1 legge nell'Eeprom loc.00 con dad se dad = 0 mette la locazione a 1, dad1 e dad2 sono solo per leggere la locazione, e ripete il ciclo, ripetendo il ciclo dad diventa 1 perchè legge la loc. di memoria che è diventata 1 e quindi dad diventa 1, a questo punto dovrebbe scrivere nella loc. di memoria 0 con il secondo IF ma mi si pianta e con il debugger vedo che scorre sempre nella memoria è non esce dal ciclo, non sò spiegarmi il perchè.Qualche anima buona saprebbe dirmi perchè è come posso fare per uscire da questo empasse.In effetti mi servirebbe che quando PORT0 sia 1 la locazione di memoria della Eeprom diventasse 0 se è 1 oppure 1 se è 0.ringrazio in anticipo salute a tutti SjPagan In lacrime Link al commento Condividi su altri siti More sharing options...
accacca Inserita: 1 novembre 2006 Segnala Share Inserita: 1 novembre 2006 io controllerei due cosese c'è ed è disbailitato il watchdog.altro dubbio sei sicuro che puoi mettere eeprom_read subito dopo la eeprom_write. Quando scrivi in eeprom c'è un tempo min di attesa (qualche ms) prima di fare nuovi accessi, Link al commento Condividi su altri siti More sharing options...
sjpagan Inserita: 2 novembre 2006 Autore Segnala Share Inserita: 2 novembre 2006 (modificato) Ciao accacca, grazie per avermi risposto, il watchdog non è abilitato, il dubbio che mi hai fatto venire e proprio l'attesa dalla scrittura alla lettura, ho controllato ed in effetti c'è un tempo di attesa per la scrittura e la relativa lettura, quindi appena dopo Eeprom_Write(), tutt'è due, ho inserito un delay_ms(30). Per il primo write, non ci sono problemi perchè anche precedentemente non dava blocco, mentre per il secondo è sempre la stessa cosa.Ho inserito il delay_ms() anche dopo la lettura ma è la stessa cosa.nella finestra del debugger, scorrendo con F8 quando si posiziona sulla riga del secondo Eeprom_Write(0,1), andando avanti, in fondo alla finestra compare una linea gialla con questi datiPC=0.0000xx Time=xxx,xx ms dove le X sono scorrevoli ed il tempo incrementa sempreSi pianta li è non va avanti con il debugger, fosse un bug del programma.cosa mi consigli?Ti ringrazio per una futura risposta a rileggerci SjPag. Modificato: 2 novembre 2006 da sjpagan Link al commento Condividi su altri siti More sharing options...
accacca Inserita: 2 novembre 2006 Segnala Share Inserita: 2 novembre 2006 purtroppo non uso pic e non conosco i sistemi di sviluppo possiamo scambaire qualche idea nella speranza che intervenga uno dei guru su pic.se ho ben capito non esegue correttamente il secondo write sulal eprom fammi sapere senza che io scriva cose fantasiose che sarebbero poi puntualmente smentite. Puoi dare qualche dettaglio sulla eeprom vedi che scorre sempre nella memoria puoi capire dagli indirizzi in che zona del progrmma gira. Aiutati con il map file del compialtore per capire dove sono messe le procedure Link al commento Condividi su altri siti More sharing options...
sjpagan Inserita: 2 novembre 2006 Autore Segnala Share Inserita: 2 novembre 2006 Domani farò un'altra prova, con la versione che usavo prima "mplab ide " usare il wdt era semplice ma ora con questo nuovo assemblatore le cose cambiano un pò.Una volta attivato vedrò cosa cambia. Ho un'altro piccolo dubbio, potrebbe essere la configurazione dei bit che da problemi?magari non viene caricata correttamente...Tu ne sai qualcosa su come fare e cosa attivare di preciso?Grazie e a presto 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