Conversione A/D con PIC

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.

-------------------------------- Inviato via

formatting link

Reply to
willy
Loading thread data ...

"willy" ha scritto nel messaggio:

16f877A.Il

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.

2) ADCON1: - Modalità salvataggio dati, giustificato a destra/sinistra. - Configurazione ingressi ADC.

Non serve altro credo ... forse un'esempio.

; ; Configuro ingressi ADC, giustificato a sinistra solo RA0 in ingresso. ; bsf STATUS,RP0 movlw B'00000001' movwf TRISA movlw B'00001110' movwf ADCON1 bcf STATUS,RP0

; ; Configuro ADC, canale 0, Fosc R/C Interno ; movlw B'11000001' movwf ADCON0

...

; ; Start ADC con attesa ... ; bsf ADCON0, GO_DONE

Wait: btfsc ADCON0, GO_DONE goto Wait

...

in ADRESH/ADREL è presente il valore campionato ...

Spero di esserti stato di aiuto ...

Ciao Gabriele.

Reply to
Kappa

"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:

10 bit richiesti: devi shiftare a sinistra (
Reply to
Piratsoft

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!
Reply to
Edmondo Di Tucci

Il 02 Mag 2004, 10:29, "Kappa" ha scritto:

da

ti

bit

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.

-------------------------------- Inviato via

formatting link

Reply to
willy

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.