Il convertitore AD dei micro ST6 e' gestito tramite 2 registri chiamati ADR (A/D data register) che si trova all'indirizzo D0h e ADCR (A/D control register) che si trova all'indirizzo D1h.
BIT 0-7 = Risultato conversione A/D (8 bit)
Il registro dati ADR contiene il risultato della conversione, ed occupa uno spazio di 8 bit. ADR e' un registro di sola lettura.
BIT 0-3 = Non usati
BIT 4 = PDS controllo alimentazione ADC
BIT 5 = STA avvio conversione A/D
BIT 6 = EOC fine della conversione A/D
BIT 7 = EAI abilita interrupt convertitore AD
Il registro di controllo ADCR e' composto sempre da 8 bit, ma i primi 4 bit meno significativi
(0, 1, 2, 3) sono riservati alla CPU, mentre i rimantenti 4 bit sono a disposizione dell'utente.
Il bit 7 (EAI) permette di abilitare o disabilitare l'interrupt della periferica ADC. Ponendo questo
bit a 1 si abilita l'ADC a generare un interrupt al termine della conversione A/D.
Il bit 6 (EOC) e' di sola lettura. Esso viene automaticamente posto a 1 quando l'ADC ha terminato la
conversione, e viene invece posto uguale a 0 quando inizia la conversione.
Il bit 5 (STA) consente di avviare la conversione. Portando questo bit a livello 1, la conversione ha inizio
e il micro porta a 0 il bit EOC.
Il bit 4 (PDS) consente di abilitare o disabilitare la periferica ADC. Portando questo bit a 1, l'ADC viene attivato,
mentre portando il bit PDS a 0, la periferica viene disattivata. In questo stato il consumo di corrente
dell'ADC e' nullo. E' quindi consigliabile portare questo bit a 1 solo quando si deve utilizzare il convertitore AD, in modo
da ridurre il consumo di corrente del circuito.
leggiadc ldi wdog,255 ; carica il watchdog ldi adcr,00110000b ; attiva l'ADC attendi jrr 6,adcr,attendi ; attendi fine conv. A/D ld a,addr ; leggi il risultato ldi adcr,0 ; disattiva ADC
Questa routine mette in pausa la CPU durante la conversione A/D per mezzo di una istruzione WAIT. In questo modo, il funzionamento del convertitore non viene disturbato dalla frequenza di clock della CPU con un miglioramento della stabilita' della lettura.
leggiadc ldi wdog,255 ; carica watchdog ldi adcr,10110000b ; Avvia ADC nop ; attesa 2 cicli wait ; attende interrupt ld a,addr ; legge risultato ldi adcr,0 ; disattiva ADC tim_int ; routine interrupt timer ldi adcr,10h ; azzera interrupt reti
Per ulteriori informazioni, vedere le routine di esempio.
© Giuseppe Di Paolo '98
Aggiornato giovedì 6 agosto 1998