Pic 16f876 e ADC 10 bit

Ciao a tutti ! Ho questo problema, premetto che programmo i pic utilizzando Mikrobasic. Io acquisisco una tensione dall'ADC del mio pic 16F876 e vorrei memorizzarlo all'interno della sua eeprom che però ho locazioni da 8 bit. Questo progettino mi serve per regolare l'offset di un rotore di antenna. All'interno del rotore è presente un potenziometro che quando si trova a 0 gradi da tensione = 0Volt mentre quando si trova a 360 gradi da tensione = 5 Volt. Siccome nella maggioranza delle volte il rotore a 360 gradi non è mai a 5 volt ma a 4,6 o 4,8 ( idem quando si trova a 0 gradi ) dovrei memorizzare il valore dell'AC che rappresente il fine corsa ES. se 5 volt = 1024 4,6 volt sarà = a 918. Qualcuno mi può aiutare ?

Grazie mille !!!

Reply to
Geppo
Loading thread data ...

Geppo ha scritto:

Utilizza due celle di memoria: in una metterai il byte più significativo, nell'altra quello meno. In lettura ricomponi il numero completo.

Ad esempio (metacodice)

int16 adc int8 hi, lo

hi = (adc >> 8) & 0xFF; lo = adc & 0xFF;

adc = ((hi

Reply to
Marco Trapanese

Mi intrometto perchè da principiante sono curioso di sapere come mai fai anche l'and bitwise durante gli assegnamenti dei valori, voglio dire, io quando trasferisco un int16 a due int8 della eeprom faccio esattamente come hai scritto sopra:

eeprom_write(addr0,(adc >> 8)); // assegna MSB eeprom_write(addr1,(adc)); // assegna LSB

però ho sempre omesso l'and bitwise & 0xFF, confidando nel fatto che in ogni caso il valore assegnato ad entrambe le locazioni è sempre quello dei primi 8 LSB di adc.

Ciao

Reply to
qUAD dAMAGE

qUAD dAMAGE ha scritto:

Si, è ridondante, ma preferisco sempre inserirlo perché riutilizzando il codice in altri contesti potrebbe capitare che la variabile di destinazione sia magari a 16 bit.

Per cui prima di andare a perdere tempo a cercare subdoli bug preferisco perdere un ciclo di clock ma essere sicuro di quello che ottengo. Inoltre, se non ricordo male, c'era un compilatore C proprietario per i PIC che trattata gli operatori > come rotate (passando dal carry) e non come shift.

M
Reply to
Marco Trapanese

"Marco Trapanese" ha scritto nel messaggio news:h2ktle$v4q$ snipped-for-privacy@tdi.cu.mi.it...

Ok buono a sapersi, ti ringrazio.

Ciao

Alex

Reply to
qUAD dAMAGE

Grazie Marco per la risposta!!! adesso provo a vedere se in basic esiste qualcosa di simile al codice che hai riportato ... speriamo !

Grazie ancora !!! "qUAD dAMAGE" ha scritto nel messaggio news:4a4e0571$0$6823$ snipped-for-privacy@news.tiscali.it...

Reply to
Geppo

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.