Vai al contenuto
PLC Forum


Salvataggio Di 4 Variabili In Eeprom


ic910

Messaggi consigliati

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.

Link al commento
Condividi su altri siti


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.

Link al commento
Condividi su altri siti

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: da ic910
Link al commento
Condividi su altri siti

Ho impostato 54 il problema è risolto

No che non è risolto, significa che non fai correttamente la comparazione con 55. ;)

Link al commento
Condividi su altri siti

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 .

Link al commento
Condividi su altri siti

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

Devi fare il confronto con >=55, altrimenti funziona solo se da 56 in poi. ;)

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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" ;)

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