analog-to-digital converter lecture 4.3. reference atd_10b8c block user guide v02.10...
TRANSCRIPT
Method of Successive Approximation
1111 1110 1101 1100 1011 1010 1001 1000 0111 0110 0101 0100 0011 0010 0001 00000V
5V
2.5V
3.75V
3.125V3.4375V Vin = 3.5V
step 1 step 2 step 3 step 4
voltage
1111 1110 1101 1100 1011 1010 1001 1000 0111 0110 0101 0100 0011 0010 0001 00000V
5V
2.5V
3.75V
3.125V3.4375V Vin = 3.5V
step 1 step 2 step 3 step 4
voltage
Control
D/A Converter
V
V
in
DA
Binary OutputC+
-
Implementing Successive Approximation
A/D Converter Registers in the HCS12 Name Register Addr Description
ATD0CTL2 0082 ATD Control Register 2 ATD0CTL3 0083 ATD Control Register 3 ATD0CTL4 0084 ATD Control Register 4 ATD0CTL5 0085 ATD Control Register 5 ATD0STAT 0086 ATD Status Register (H) ATD0STATL 0087 ATD Status Register (L) ADR00H 0090 A/D Result Register 0 ADR01H 0092 A/D Result Register 1 ADR02H 0094 A/D Result Register 2 ADR03H 0096 A/D Result Register 3 ADR04H 0098 A/D Result Register 4 ADR05H 009A A/D Result Register 5 ADR06H 009C A/D Result Register 6 ADR07H 009E A/D Result Register 7
; A/D Converter
atd0ctl2 equ $0082atd0ctl4 equ $0084atd0ctl5 equ $0085atd0stat equ $0086adr00H equ $0090
ad_onldaa #$83 ;8-bit resolution /8 clockstaa atd0ctl4ldaa #$c0 ;set ADPU & AFFCstaa atd0ctl2rts
adconvanda #$07 ;ch. 0 - 7 oraa #$80 ;right just SCAN=0 MULT=0staa atd0ctl5
ad1 ldaa atd0stat ;wait for convanda #$80beq ad1bsr avg4rts
avg4pshx ;save regldx #adr00Hldd 2,x+ ;adr0addd 2,x+ ;+adr1addd 2,x+ ;+adr2addd 2,x+ ;+adr3lsrdlsrd ;divide by 4pulx ;restore regrts
adr00H
adr01H
adr02H
adr03H
; adtest.asm; read channel 2 of adconv; and display as decimal number on screen
org $800outa equ $FF4F ;output ascii char in Aoutcrlf equ $FF5B ;carriage ret, line feed to termbase dw 10dnum rmb 4buff rmb 12pad db 0
org $4000
base
dnum
mainjsr ad_onldd #10std base ;decimalldd #0std dnum ;clear dnumHjsr outcrlf
mn1 ldaa #7 ;channel 7jsr adconv ; convertstd dnum+2 ;save valueldx #padjsr sharps
mn2 ldaa 1,x+jsr outacpx #padblo mn2jsr outcrlfldy #30jsr ms_delaybra mn1
1234/10 = 123 Rem = 4
123/10 = 12 Rem = 3
12/10 = 1 Rem = 2
1/10 = 0 Rem = 1 34
33
32
31
PAD
Figure 12.6 Steps for creating an ASCII number string
base
dnum