Il convertitore ADC

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.


Registro ADR (Registro dati A/D - indirizzo D0h, sola lettura)

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.


Registro ADCR (Registro controllo A/D - indirizzo D1h, lettura-scrittura)

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.


Esempi d'uso del convertitore AD

Routine con controllo del bit EOC

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

Routine con l'uso dell'interrupt

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