ic910 Inserito: 23 giugno 2015 Segnala Inserito: 23 giugno 2015 Salve a tutti . Ho l'esigenza di salvare 4 variabili in eeprom.Sto utilizzando come pic un 16f877 un pò datato però ormai ho inziato il progetto con questo. Le 4 variabili sono variabili byte e le imposto singolarmente tramite 2 pulsanti per incrementare e per decrementare il valore. Ad ogni pressione dei pulsanti vado a scrivere in eeprom per salvare il dato . Quando tolgo l'alimentazione al sistema ,e successivamente la ricollego, comando al pic di andar a rileggere i dati di queste variabili con l'ultimo valore impostato per averli già pronti senza andare a impostarli di nuovo. Il problema si presenta con una variabile che imposto a 55 numero decimale. Quando entro nel menù per verificare che il numero 55 impostato precedentemente sia rimasto inalterato lo trovo a 55 ma la condizione legata a questa variabile non si verifica. Per farla verificare devo portare la variabile a 0 e rimpostare di nuovo a 55 solo in tal modo si verifica la condizione. Da cosa può dipendere questo ? Grazie Mille aspetto consigli utili.
Livio Orsini Inserita: 23 giugno 2015 Segnala Inserita: 23 giugno 2015 Scusa ma non ho capito il problema. Non hai un visulaizzatore nel tuo sistema? Basta che tu faccia leggere, inizialmente, quella variabile e visualizzarne il valore su display. Se il valore è corretto ed il micro non fa quello che deve il problema è nel programam che hai fatto. Attenzione 0x55 e 0xAA son due valori particolari che possono "fregarti" secondo il tipo di test che vai a fare.
ic910 Inserita: 23 giugno 2015 Autore Segnala Inserita: 23 giugno 2015 (modificato) Si ho un visualizzatore e anche quando ricollego la Vdd la variabile la visualizzo a 55 .A questa variabile è collegata una condizione che non si verifica se non riporto la variabile da 55 a 0 per poi riportarla di nuovo a 55. Si ho notato che 55 è un valore particolare infatti le altre 3 variabili impostate a 35 40 e 65 non creano problemi . La soluzione potrebbe essere impostare la variabile invece che 55 a 54 ora provo vediamo che succede. Modificato: 23 giugno 2015 da ic910
ic910 Inserita: 23 giugno 2015 Autore Segnala Inserita: 23 giugno 2015 Ho impostato 54 il problema è risolto Grazie Livio alla prossima
Livio Orsini Inserita: 23 giugno 2015 Segnala Inserita: 23 giugno 2015 Ho impostato 54 il problema è risolto No che non è risolto, significa che non fai correttamente la comparazione con 55.
ic910 Inserita: 23 giugno 2015 Autore Segnala Inserita: 23 giugno 2015 La variabile in questione la faccio visualizzare da 0 a 55 è una variabile byte . Ho messo la condizione che quando è > 55 porta a 0 e quando è minore di 0 porta a 55 il problema si presenta solo con il numero 55 . Inoltre il problema si presenta con 55 solo alla prima accensione una volta spostato e riprogrammato a 55 il tutto funziona anche con 55. Livio puoi spiegarti meglio cosa vuol dire non fare correttamente la comparazione .
Livio Orsini Inserita: 24 giugno 2015 Segnala Inserita: 24 giugno 2015 Ho messo la condizione che quando è > 55 porta a 0 e quando è minore di 0 porta a 55 il problema si presenta solo con il numero 55 . Ed è giusto che tu abbia problemi. Devi fare il confronto con >=55, altrimenti funziona solo se da 56 in poi.
giacomo56 Inserita: 24 giugno 2015 Segnala Inserita: 24 giugno 2015 (modificato) Tra l'altro una variabile byte non può essere minore di zero se programmi in C. Modificato: 24 giugno 2015 da giacomo56
ic910 Inserita: 24 giugno 2015 Autore Segnala Inserita: 24 giugno 2015 Si stò programmando in Basic. Anche in Basic una variabile byte va da 0 a 255 . Pongo < 0 = 55 per limitare la visualizzazione diplay e limitare anche la selezione tramite pulsanti da 0 a 55
Livio Orsini Inserita: 24 giugno 2015 Segnala Inserita: 24 giugno 2015 Ma se la variabile byte è senza segno come puoi avere un numero <0? L'unico modo è ritornare d avere la variabile con segno in modo surrettizio, ovvero considerare <0 qualsisi numero >127.ovvero >0x7F. Basta testare se il bit più siginificativo è "1"
ic910 Inserita: 25 giugno 2015 Autore Segnala Inserita: 25 giugno 2015 Si in realtà ho errato, devo porre la variabile a 0 quando è 255
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