Tips & Tricks - PIC

 

ADRESH:L


Alcune considerazioni sui registri ADRESH e ADRESL.


Giustificazione dei registri ADRESH:L

Il modulo convertitore AD dispone di due bytes dedicati, chiamanti ADRESH e ADRESL in cui viene depositato il risultato della conversione.

Il risultato della conversione a 10 bit viene accumulato in due registri, ADRESH e ADRESL.
Siccome si tratta di registri a 8 bit, il dato a 10 bit può essere presentato in due modi :

  • Giustificato a destra
    ADRESH ADRESL
    0 0 0 0 0 0 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0


  • Giustificato a sinistra
    ADRESH ADRESL
    D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0

(Il discorso vale anche per la conversione a 12 bit: solamente i bit si estenderanno a D11:10).

Queste due modalità di presentazione non sono solamente la conseguenza del fatto meccanico di dover presentare più di 8 bit, ma hanno anche una funzione specifica. 
Infatti questa doppia possibilità consente una ampia flessibilità di uso dei risultati della conversione.

 

La giustificazione a sinistra

La giustificazione a sinistra sarà utilizzata quando non serve avere l' intero numero a 10 bit (o 12 bit), ma basterà una risoluzione a 8 bit. 
Allineando i dati a sinistra, si potrà leggere solamente ADRESH, considerandolo come il risultato di una conversione a 8 bit. In questo caso il contenuto di ADRESL che conserva solamente i bit meno significativi, può venire scartato.
 

La giustificazione a destra

E' evidente che la giustificazione a destra sarà la forma migliore quando serve avere l' intero numero a 10 bit (o 12 bit), utilizzando il contenuto di entrambi i registri. 
ADRESL
conterrà la parte bassa del risultato e ADRESH i due (o quattro) bit più alti.

Ma non solo questo.

Se consideriamo una conversione a 10 bit, D8 e D9 suddividono il range del risultato in 4 parti:

D9:8 Vin rispetto al range
della conversione
00 0 < Vin < 1/4
01 1/4 < Vin < 1/2
10 1/2 < Vin < 3/4
11 3/4 < Vin < 4/4


Se occorre verificare solamente che il risultato della conversione sia all' interno di uno di questo segmenti, non occorrerà una comparazione sul numero complessivo a 10 bit, ma si potrà analizzare solamente lo stato dei bit più alti, come se si trattasse in qualche modo di un comparatore a 4 stati.
Tipica applicazione può essere quella di un regolatore termostatico oppure dell' analisi di una tastiera o di un ingresso a 4 linee (che diventano 16 per la conversione a 12 bit), realizzati commutando precisi livelli di tensione sull' ingresso analogico. La cosa è facilmente realizzabile utilizzando la tensione di alimentazione e un partitore con resistenze sufficientemente precise per produrre 4 gradini di tensione, ognuno al centro di un segmento (per 16 gradini probabilmente potrà essere più opportuno usare un riferimento di tensione stabile oppure un generatore di corrente costante per alimentare il partitore).

Si ricorda che la scelta tra le due presentazioni è effettuata con ADFM, il bit 7 di ADCON2.
Al reset il contenuto dei due registri è casuale.


Utilizzo alternativo di ADRESH, ADRESL

Quando il convertitore non è utilizzato questi due bytes possono essere utilizzati come locazioni di memoria per uso generico.

Infatti sono leggibili e scrivibili senza alcun problema attraverso le normali istruzioni.

Ad esempio:

; delay 100 ms @ 8MHz
d1   equ  ADRESL
d2   equ  ADRESH


Dealy_100ms     	;199998 cycles
	movlw	0x3F
	movwf	d1
	movlw	0x9D
	movwf	d2
Delay_0	decfsz	d1, f
	goto	$+6
	decfsz	d2, f
	goto	Delay_0
	goto	$+4     ;2 cycles

Questo sistema evita la dichiarazione di nuove variabili: le label ADRESH e ADRESL sono già dichiarate nel file .INC del processore


Note

    L' impiego di ADRESH e ADRESL come generici registri di RAM è privo di contro indicazioni se la conversione AD non viene utilizzata nel programma.

    Se viene usata la conversione, occorre verificare con cura che l' uso dei due registri come locazioni generiche non sia in conflitto con  il risultato della conversione.

 


Copyright © afg . Tutti i diritti riservati.
Aggiornato il 11/09/11 .