Jump to content
PLC Forum


Sign in to follow this  
ic910

Salvataggio Di 4 Variabili In Eeprom

Recommended Posts

ic910

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.

Share this post


Link to post
Share on other sites

Livio Orsini

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.

Share this post


Link to post
Share on other sites
ic910

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.

Edited by ic910

Share this post


Link to post
Share on other sites
ic910

Ho impostato 54 il problema è risolto

Grazie Livio alla prossima

Share this post


Link to post
Share on other sites
Livio Orsini
Ho impostato 54 il problema è risolto

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

Share this post


Link to post
Share on other sites
ic910

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 .

Share this post


Link to post
Share on other sites
Livio Orsini
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. ;)

Share this post


Link to post
Share on other sites
giacomo56

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

Edited by giacomo56

Share this post


Link to post
Share on other sites
Livio Orsini

Credo programmi in Basic

Share this post


Link to post
Share on other sites
ic910

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

Share this post


Link to post
Share on other sites
Livio Orsini

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

Share this post


Link to post
Share on other sites
ic910

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...