Pic 16f876 e ADC 10 bit

Jul 01, 2009 5 Replies

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



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

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

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

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

Ok buono a sapersi, ti ringrazio.

Ciao

Alex

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

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required