ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
4 июля
103355 Топик полностью
Rodion (23.10.2007 16:39, просмотров: 66) ответил Rodion на Запуск ADC в ATmega32 по совпадению таймера счетчика T/C0 Среда AVRStudio 4.13
Принимаю критику, поправил. выставил настройки ADC для того, чточы он запускался при установке флага совпадения - OCF0, по прошествии 4 мs флаг ставится, а АЦП не запускается, причем если выставить флаг принудительно, то после положенного количества тактов прога уходит на обработку прерывания, Что я не правильно сделал или АВРСтудия не обрабатывает эту ситуацию код: <asm> .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 ;Разрешить прерывания </asm>