Devo effettuare una conversione analogico digitale usando un pic 16f877A.Il pic effettua una conversione usando 10 bit, io vorrei usarne di meno.Leggendo i datasheets ho visto che è possibile ma non sono riuscito a capire se bisogna settare qualcosa o lo capisce da solo impostandogli un tempo di campionamento inferiore. Qualcuno sa dirnmi qualcosa? Grazie a tutti e ciao.
Si può solo campionare a 10 bit, non di meno con nessun settaggio, sei tu da firmware che puoi prendere meno bit. Comunque a darci una mano c'è il bit ADFM : A/D Result Format Select Bit, che ci permette due modalità per il salvataggio del dato a 10 BIT diviso in due parti da 8 bit, ADRESH/ADRESL, in un caso giustificato a destra in un altro giustificato a sinistra, se ti servono 8 bit, puoi giustificare a sinistra e prendere il risultato ad 8 bit nel registro ADRESH.
Settare l'ADC, in modo appropriato (Anche per chi si accinge a farlo per
16F87x):
1) ADCON0: - Setta Velocità ADC (4 velocità possibili dipende dall'utilizzo dell'ADC stesso) - Seleziona il canale su cui campionare (Ricordarsi di settare da configurazione gli ingressi Analogici e Ingressi Digitali) - Accendere l'ADC. - Il BIT GO/DONE, avvia e segnala il fine campionamento. In ADRESH/ADRESL, ci sarà il valore digitale campionato.
"willy" ha scritto nel messaggio news: snipped-for-privacy@usenet.libero.it...
16f877A.Il
Non ti so dire esattamente come funziona per i PIC, però dalla mia esperienza su ST7 l'utilizzo di una risoluzione inferiore di conversione è molto semplice. L'AD integrato è di tipo ad approssimazione successiva (SAR) e converte sempre con la stessa profondità di bit. Siccome (se nn vado errato) il micro è a 8 bit, ti troverai in un registro gli 8 bit più significativi e su un altro gli altri 2. Quindi:
Lui inendeva un altra cosa Nel dtasheet c'è scritto che leggendo ADRESH e ADRESL prima che il campionamento sia terminato si ha un errore sulle cifre meno significative tanto maggiore quanto meno tempo gli dai per l'acquisizione Se non erro c'è pure una formula macomunque non ho mai fatto una cosa del genere
--
_________________________________________________
Edmondo Di Tucci www.powernetsi.it/edmondo icq: 228646758
Le vie del signore sono infinite... prendine una e levati di torno!
Leggendo i Datasheet fa riferimento ad un'attesa di un tempo Acquisition Requirements(Tacq). Nel listato scritto da te non è implementata vero? Come lo posso implementare(se in C è meglio visto che voglio scrivere il programma in C)? Inoltre leggendo ho notato una incongruenza, quando ha finito la conversione setta il bit GO/DONE? Grazie e ciao.
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.