Conversione A/D con PIC

May 01, 2004 4 Replies

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


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

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

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!

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

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required