- (Analog-to-Digital Converter) , . AVR .
:
10- .
0.5 . .
2 . .
65 - 260 .
15 . . .
8 .
7 .
2 10 200.
16- .
0VCC.
2.56 .
.
.
.
ATmega128 10- . 8- , 8 F. 0 (.. GND). 16 . (ADC1, ADC0 ADC3, ADC2) : 0 (1x), 20 (10x), 46 (200x). (ADC1), . 1x 10x, 8- , 200x, 7-.
( -), .
AVCC ( ). AVCC 0.3 VCC. 2.56 AVCC. , AREF .
. 10- . GND, - AREF 1 . AREF AVCC 1.22 REFSn ADMUX. , 2.56 , , .. AREF.
MUX ADMUX. ADC0ADC7, GND 1,22 . .
|
|
, . . ,
ADEN ADCSRA. ADEN. ADEN = 0, , , .
10- , ADCH ADCL. 10- 16- ( ), 10- ( ) ADLAR ADMUX.
, 8- , .. ADCH. ADCL, ADCH, , . ADCL . , ADCL ADCH, . ADCH ADCH ADCL .
. ADCH ADCL , , .
. 1 ADSC. . , , .
. 1 ADFR ADCSRA. 1 ADSC ADCSRA. , ADIF .
(10 ), 50200 . 10 , , 200 .
, 100 CPU. ADPS ADCSRA. ADEN ADCSRA. ADEN=1 , ADEN=0.
|
|
ADSC ADCSRA, .
13 . ( ADEN ADCSRA) 25 .
- 1.5 , 13,5 . ADIF. ADSC. ADSC .
, ADSC .
. MUXn REFS1:0 ADMUX . , . . , . ( ADIF ADCSRA). , ADSC. , ADMUX 1- ADSC.
. 125 . , 125 . - , .
( REFS1:0 ADMUX).
JTAG, F 74 .
. , .
. 1 ADSC. .
. - 1 ADSC. , . , . .
|
|
- . , .
. () (V) . V, 0x3FF. V AVCC, 2,56 , AREF. AVCC . 2,56 VBG, . AREF , , AREF . V AREF . , V , , .
, AREF, , .. . AREF , AVCC 2.56 . .
. , CPU -. . :
1. , . .
2. ( ). , CPU.
3. , CPU . , , . sleep.
, , . , . 0 ADEN . , , , .
. , , , ADCn, . - , .
|
|
10 . , . , , - . , .. -.
. , f/2, . , .
ADC. , . , , :
1. () (), , .
2. AVCC VCC LC (RC)- . 2.24.
3. , CPU.
4. - , .
. 2.24.
ADMUX.
7, 6 - REFS1, REFS0. (. 2.43)
2.43. .
REFS1 | REFS0 | |
AREF, V | ||
AVCC AREF | ||
2.56 AREF |
5ADLAR. .
ADLAR . ADLAR=1, , - . ADLAR , (. - ADCL ADCH).
4:0 MUX4:0. (. 2.44).
, . , . , ( ADIF ADCSRA).
2.44.
MUX4..0 | , | ||||
ADC0 | |||||
ADC1 | |||||
ADC2 | |||||
ADC3 | |||||
ADC4 | |||||
ADC5 | |||||
ADC6 | |||||
ADC7 | |||||
ADC0 | ADC0 | ||||
ADC1 | ADC0 | ||||
ADC0 | ADC0 | ||||
ADC1 | ADC0 | ||||
ADC2 | ADC2 | ||||
ADC3 | ADC2 | ||||
ADC2 | ADC2 | ||||
ADC3 | ADC2 | ||||
ADC0 | ADC1 | ||||
ADC1 | ADC1 | ||||
ADC2 | ADC1 | ||||
ADC3 | ADC1 | ||||
ADC4 | ADC1 | ||||
ADC5 | ADC1 | ||||
ADC6 | ADC1 | ||||
ADC7 | ADC1 | ||||
ADC0 | ADC2 | ||||
ADC1 | ADC2 | ||||
ADC2 | ADC2 | ||||
ADC3 | ADC2 | ||||
ADC4 | ADC2 | ||||
ADC5 | ADC2 | ||||
1.23 (VBG) | NA | ||||
0 (GND) | |||||
ADCSRA
|
|
ADEN | ADSC | ADFR | ADIF | ADIE | ADPS2 | ADPS1 | ADPS0 | |
W/R | W/R | W/R | W/R | W/R | W/R | W/R | W/R | W/R |
7 ADEN. .
1 . 0, , .
6 ADSC. .
. , . , ADSC, 25 , 13 . .
ADSC 1, 0. 0 .
5 ADFR. .
1, . . 0 .
4 ADIF. .
. ADIE I ( SREG), . ADIF . ADIF 1 . , -- ADCSRA . SBI CBI.
3 ADIE. .
1 , , I SREG, .
2:0 ADPS2:0. .
, CPU (. 2.45)
2.45.
ADPS2 | ADPS1 | ADPS0 | |
ADCL ADCH.
ADLAR = 0.
ADCH | - | - | - | - | - | - | ADC9 | ADC8 |
ADCL | ADC7 | ADC6 | ADC5 | ADC4 | ADC3 | ADC2 | ADC1 | ADC0 |
W/R | R | R | R | R | R | R | R | R |
ADLAR = 1.
ADCH | ADC9 | ADC8 | ADC7 | ADC6 | ADC5 | ADC4 | ADC3 | ADC2 |
ADCL | ADC1 | ADC0 | - | - | - | - | - | - |
W/R | R | R | R | R | R | R | R | R |
. . ADCL, (.. ), ADCH.
, 8 . 8- ADCH , , ADCL . ADCL, ADCH.
. (ADIF=1) (ADCL, ADCH).
: , V ; V . 0x000 , 0x3FF - 1 .
:
,
: Vpos- ADC3, V NEG - ADC2, GAIN , VREF .
: ADMUX = 0xED (V=2.56 , , =10, ADC3 - ADC2), ADC3 = 300 , ADC2 = 500 , :
= 512 * 10 * (300 - 500) / 2560 = -400 = 0x270
() ADCL = 0x00, ADCH = 0x9C. (ADLAR=0), ADCL = 0x70, ADCH = 0x02.
, 0x200 (-512d) 0x1FF (+511d). (ADC9 ADCH). 1, , 0, .
.
; -
; .
; , .. 0 (PF0)
; .
;
;
; AD_CONV
;*****************************************************
;
.include "m128def.inc"
;
.def temp = r16
.def data_h= r18
;
.cseg
.org 0x000
rjmp RESET;
.org $002A
rjmp AD_CONV; ;*****************************************************
;
Reset:
;
ldi temp, low(RAMEND)
out SPL,temp
ldi temp, high(RAMEND)
out SPH,temp
;*****************************************************
Sei; (I=1 SREG )
ldi temp, 0xff;
out ddrc,temp
;*****************************************************
;
; REFS1, REFS0=11 2.56 ,
;ADLAR = 1 -
; ;
;MUX4:0- 00000 ( PF0),; ( - $E0)
ldi temp,0xe0
out admux,temp; $e0 admux
;(ADEN=1 , ADSC=1 ;, ADFR=0- ;, ADIF-
; , ADIE=1- ; , ADPS2:0 =000 - ; ( 2).
ldi temp,0xc8
out adcsra,temp; $c8 adcsra
;***************************************************
;
loop:
nop
nop
rjmp loop
;***************************************************
;
AD_CONV:
in data_h, adch;
out portc, data_h;
ldi temp,0xc8; ,
;
out adcsra,temp
reti;
. 2.25.
1. .
2. .
3. ?
4. . ?
5. () .
6. ?
7. ?
8. ?
9. .
10. ? .
11. ADMUX. ADMUX.
12. ADMUX.
13. ?
14. ADCSRA. .
15. ADCSRA .
16. ? .
AIN0 AIN1. AIN0 AIN1, ACO . - 1. , . , : , .
ACSR.
ACD | ACBG | ACO | ACI | ACIE | ACIC | ACIS1 | ACIS0 | |
W/R | W/R | W/R | R | W/R | W/R | W/R | W/R | W/R |
x |
7 ACD. . 1 . . . ACD ACIE ACSR. .
6 ACBG. . . AIN0 .
5 ACO. . ACO . 1 2 .
4 ACI. . , ACIS1 ACIS0. , ACIE ACSR I SREG. ACI . , ACI 1 .
3 ACIE. . ACIE ACSR I SREG, . .
2 ACIC. . - 1 . , , - 1. 0 . - 1 TICIE1 (TIMSK).
1, 0 ACIS1, ACIS0. . , . . 2.46.
2.46. ACIS1, ACIS0
ACIS1 | ACIS0 | |
ACIS1/ACIS0 ACSR. .
ADC7..0 . , , . ( ACME - SFIOR) (ADEN=0 ADCSRA), MUX2..0 ADMUX , (. . 2.47). ACME ADEN, AIN1.
2.47.
ACME | ADEN | MUX2..0 | |
x | xxx | AIN1 | |
xxx | AIN1 | ||
ADC0 | |||
ADC1 | |||
ADC2 | |||
ADC3 | |||
ADC4 | |||
ADC5 | |||
ADC6 | |||
ADC7 |
1. .
2. .
3. ACSR.
4. .
5. ADC7,...,0 ?