Vai al contenuto
PLC Forum


Salvataggio Di 4 Variabili In Eeprom


Messaggi consigliati

Inserito:

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.


Inserita:

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.

Inserita: (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: da ic910
Inserita:

Ho impostato 54 il problema è risolto

Grazie Livio alla prossima

Inserita:
Ho impostato 54 il problema è risolto

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

Inserita:

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 .

Inserita:
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. ;)

Inserita: (modificato)

Tra l'altro una variabile byte non può essere minore di zero se programmi in C.

Modificato: da giacomo56
Inserita:

Credo programmi in Basic

Inserita:

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

Inserita:

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

Inserita:

Si in realtà ho errato, devo porre la variabile a 0 quando è 255

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