DEN - , 0 - , 1 - .
ADSC - , , - .
ADFR - , 1 - , 0 - .
ADIF - , . 1 . 1 - , 1 . 82, 81, 820 - , :
0 - 2,
1 - 2,
10 - 4,
11 - 8,
100 - 16,
101 32,
110- 64,
111- 128.
, "idle". . L.
, .
Fast PWM Timer1 . , AVR Studio. ATmega8, RC - 1.
, AVR Studio:
01.; Atmega8, crystal 1MHZ (internal)
02.; Timer Counter 1
03.; Fast PWM & ADC
04.
05..include "m8def.inc"
06.
07..def wreg =R16
08..def duration =R17
09..def wreg2 =R18
10.
11.
12.init:
13.
14. ldi wreg,low(RAMEND)
15. out SPL,wreg
16.
17. ldi wreg,high(RAMEND); Stack Pointer = $45F
18. out SPH,wreg
19.
20. cli;
21.
22.
23. ldi wreg, 0b10000011; . , . ., , /8 (125 kHz)
24. out ADCSR, wreg
25.
26. ldi wreg, 0b01101110; AVcc, . . Aref, . . , channel 1.23V bg
27. out ADMUX, wreg
28.
29. rcall adc_convert
30.
31.
32.;******************* TIMER1 ***********************
33.
34. ldi wreg,0x00
35. out PORTB,wreg; 0
36.
37. ldi wreg,0b00000010; PortB.1 (OC1A) - Output
38. out DDRB,wreg
39.
40.
41. ldi wreg, 0b10000001; . 8
42. out TCCR1A, wreg
43.
44. ldi wreg, 0b00001001; CK/1
45. out TCCR1B, wreg
46.
47. ldi wreg, 0b00000000
48. out TIMSK, wreg
|
|
49.
50.
51.main:
52.
53. ldi wreg, 250; 25mS
54. rcall delay
55.
56. ldi wreg, 0b01100101; ADC Channel 5 (PortC.5; pin 28)
57. rcall adc_convert
58.
59. ldi wreg2, 0x00
60. out OCR1AH, wreg2
61.
62. out OCR1AL, wreg
63.
64.
65.rjmp main
66.
67.
68.
69.;*********************** DELAYS **************************
70.
71.delay:; 0.1mS * wreg
72. ldi duration, 24
73. cycle:
74. nop
75. dec duration
76. brne cycle
77. dec wreg
78. brne delay
79.ret
80.
81.
82.;********************** AD CONVERTION *******************
83.
84.adc_convert:
85.
86. out ADMUX, wreg; wreg contains channel
87.
88. sbi ADCSR, ADSC; Start Convertion
89. sbic ADCSR, ADSC
90. rjmp PC-1
91. in wreg, ADCL; ( ADCL)
92.
93. in wreg, ADCH; wreg contains result
94.
95.ret