Страница 1 из 1

АЦП на Мега8

Добавлено: Чт мар 29, 2012 11:47:21
Pingvinus
Не получается запустить АЦП в режиме непрерывного преобразования.
Делал все как http://samou4ka.net/page/analogo-cifrov ... mk-atmega8
Может у кого то завалялся рабочий кусок кода на Асме?



RESET: rjmp START
INT_0: reti
INT_1: reti
TIMER2_COMP: reti
TIMER2_OVF: reti
TIMER1_CAPT: reti
TIMER1_COMPA: reti
TIMER1_COMPB: reti
TIMER1_OVF: reti
TIMER0_OVF: reti
SPI_STC: reti
USART_RXC: reti
USART_UDRE: reti
USART_TXC: reti
A_D_C: rjmp ADC_
EE_RDY: reti
ANA_COMP: reti
TWI: reti
SPM_RDY: reti



START:
;Иницилизация стека
ldi r16,low(ramend)
out SPL,r16
ldi r16,high(ramend)
out SPH,r16

;Настройка порта D на выход
ser r16
out DDRD,r16


ldi r16,0b01000000 ;0b[01]000000 - Выбор оборного напряжения AVCC подключаю через LC фильтр
out ADMUX,r16


ldi r16,0b11101111 ;АЦП вкл, старт, Непрерыв. режим, разр. прерыв., СК/32
out ADCSRA,r16
sei


cicle:
rjmp cicle




ADC_:
in r16,ADCL
out PORTD,r16
reti

Re: АЦП на Мега8

Добавлено: Чт мар 29, 2012 12:25:11
Engineer_Keen
Pingvinus писал(а):

Код: Выделить всё

ADC_:
in r16,ADCL
out PORTD,r16
reti
Почему читается только ADCL? Результат преобразования не обновится пока не будет прочитан старший байт, читайте даташит внимательнее.

Re: АЦП на Мега8

Добавлено: Чт мар 29, 2012 12:35:53
Pingvinus
Engineer_Keen писал(а):
Pingvinus писал(а):

Код: Выделить всё

ADC_:
in r16,ADCL
out PORTD,r16
reti
Почему читается только ADCL? Результат преобразования не обновится пока не будет прочитан старший байт, читайте даташит внимательнее.
Спасибо огромное! Тема закрыта