Il convertitore A/D del PIC 16F876
Transcript
Il convertitore A/D del PIC 16F876
Il convertitore A/D del PIC 16F876 Il PIC 16F876 ha un modulo convertitore A/D a 10 bit con 5 canali d’ingresso, ciascuno di essi selezionabile via software. Il convertitore, ad approssimazione successive, è dotato internamente di track-hold. I registri specifici associati con il modulo convertitore sono ADCON0 (in pagina 0) e ADCON1 (in pagina1). Il risultato della conversione (10 bit) viene posto nei registri a 8 bit ADRESH e ADRESL. Prima di avviare la conversione si debbono impostare tutti i parametri necessari dei registri ADCON0 e ADCON1 nel modo seguente: 1. Con il registro ADCON1 Si seleziona l’abbinamento dei canali analogici con gli ingressi digitali (RA0÷RA5), la sorgente della tensione di riferimento e la modalità di salvataggio del risultato della conversione nei registri ADRESH e ADRESL. 2. Con il registro ADCON0 si seleziona il clock di conversione (bit 7 e bit 6), il canale analogico per la conversione (bit 5÷bit 3) e si pone in ON il convertitore A/D (bit 0). 3. Si attende che trascorre il Tempo di Acquisizione, come valore si sceglie circa 20 µs. 4. Si avvia la conversione ponendo ad uno il bit 2 di ADCON0 (GO/DONE). 5. Si controlla il termine della conversione verificando il bit 2 ADCON0 (GO/DONE); quando diviene zero la conversione è terminata. 6. Si legge il dato convertito nei registri ADRESH (gli 8 bit più significativi) e ADRESL (i 2 bit meno significativi) se si sceglie l’allineamento a sinistra. ADCON1 Bit 7 ADFM Bit 6 - Bit 5 - Bit 4 - Bit 3 PCFG3 Bit 2 PCFG2 Bit 1 PCFG1 Bit 0 PCFG0 ADFM=1 I bit più significativi di ADRESH sono posti a zero (allineamento a destra) ADRESH 0 0 0 0 0 0 X X ADRESL X X X X X X X X ADFM=0 I bit meno significativi di ADRESL sono posti a zero (allineamento a sinistra) ADRESH X X X X X X X X ADRESL X X 0 0 0 0 0 0 Bit 3 Bit 2 Bit 1 Bit 0 PCFG3 PCFG2 PCFG1 PCFG0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 1 1 X 1 0 0 0 1 1 0 1 1 1 1 0 1 1 1 1 RA5 AN4 AN AN DIG DIG DIG AN DIG DIG DIG RA3 AN3 AN Vref+ AN Vref+ DIG Vref+ Vref+ DIG Vref+ RA2 AN2 AN AN DIG DIG DIG VrefVrefDIG Vref- RA1 AN1 AN AN AN AN DIG AN AN DIG DIG RA0 AN0 AN AN AN AN DIG AN AN AN AN Vref+ Vref- Vdd RA3 Vdd RA3 Vdd RA3 RA3 Vdd RA3 Vss Vss Vss Vss Vss RA2 RA2 Vss RA2 ADCON0 Bit 7 ADCS1 Bit 6 ADCS0 ADCS1 ADCS0 0 0 Fosc/2 0 1 Fosc/8 1 0 Fosc/32 1 1 Frc Bit 5 CHS2 Bit 4 CHS1 Bit 3 CHS0 Bit 2 GO/DONE Bit 1 Bit 0 ADON Massima frequenza possibile per Fosc 2 Tosc 1.25 MHz 8 Tosc 5 MHz 32 Tosc 20 MHz Trc Clock derivato da un osc. RC interno CHS2 CHS1 CHS0 Canale selezionato 0 0 0 AN0 (su RA0) 0 0 1 AN1 (su RA1) 0 1 0 AN2 (su RA2) 0 1 1 AN3 (su RA3) 1 0 0 AN4 (su RA4) GO/DONE 1 Conversione in atto. Si avvia la conversione quando il bit è posto ad 1 0 Conversione non in atto.Il bit è posto automaticamente a 0 al termine della conversione ADON 1 Modulo A/D è operativo 0 Modulo A/D non è operativo Considerazioni Con l’allineamento a destra si ottiene direttamente il risultato della conversione a 10 bit. Il numero in base 10 si ottiene dalla seguente formula: N10=(VIN*210)/VREF Esempio: il valore di N10 è espresso con il suo valore corrispondente in esadecimale VIN N ADRESH ADRESL 1 V 0CCh 00000000 11001100 2 V 199h 00000001 10011001 3 V 265h 00000010 01100101 Con l’allineamento a sinistra, il convertitore fornisce nel registro ADRESH, direttamente il valore del dato corrispondente ad una conversione con convertitore a 8 bit. In questo caso N e calcolato con la seguente relazione: N10=(VIN*28)/VREF il valore di N10 è espresso con il suo valore corrispondente in esadecimale VIN N ADRESH ADRESL 1 V 33h 00110011 00000000 2 V 66h 01100110 01000000 3 V 99h 10011001 01000000 Antonello Micci