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
|