Rodion (23.10.2007 15:44, просмотров: 3053)
Запуск ADC в ATmega32 по совпадению таймера счетчика T/C0
Среда AVRStudio 4.13 выставил настройки ADC для того, чточы он запускался при установке флага совпадения - OCF0, по прошествии 4 мs флаг ставится, а АЦП не запускается, причем если выставить флаг принудительно, то после положенного количества тактов прога уходит на обработку прерывания, Что я не правильно сделал или АВРСтудия не обрабатывает эту ситуацию
код:
.def temp0 = r16
.cseg
.org 0
jmp RESET ; Reset Handler
.org 0x20
jmp IntADC; ADC Conversion Complete Handler
IntADC:
in ResL,ADCL
in ResH,ADCH
;арифметика
in temp0, TIFR ;Сбрасываем флаг прерывания
andi temp0, 0x02
out TIFR, temp0
sei
reti
RESET:
Initial:
ldi temp0,high(RAMEND) ; Main program start
out SPH,temp0 ; Set Stack Pointer to top of RAM
ldi temp0,low(RAMEND)
out SPL,temp0
InitADC:
sbi ACSR,ACD ;Установить бит ACD, Выключение компаратора
ldi temp0, 0xC0 ;0b11000000, Встроенный ИОН,
out ADMUX, temp0 ;выравнивание вправо, вход ADC0=PA0
;
;ldi temp0, 0xAF ;0b10101111 разрешить работу ADC в
ldi temp0, 0xA8 ;Для отладки работаю без предделителя
out ADCSR, temp0;
in temp0, SFIOR ;Источник для периодического запуска ADC
ori temp0, 0x60 ;совпадение таймера-счетчика Т/С0
out SFIOR, temp0
InitTC0:
ldi temp0, 0xF9
out OCR0, temp0
ldi temp0, 0x0C
out TCCR0, temp0
sei ;Разрешить прерывания