Преобразование аналогового сигнала

Обсуждаем контроллеры компании Atmel.
Ответить
sanya839
Родился
Сообщения: 6
Зарегистрирован: Вт окт 21, 2014 15:09:10

Преобразование аналогового сигнала

Сообщение sanya839 »

Всем привет :)) Начал изучать програмирование asm для avr. Пишу программу которая по нажатию кнопки выводила бы минимальный и максимальный результат преобразования АЦП. собственно вот код который я написал. Результат выводится по нажатию PD2.
Код под спойлером
Спойлер

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

.include "8535def.inc"	;файл определений AT90S8535
.def temp = r16		;временный регистр
.def reg_led = r19	;регистр индикации
.org $0
	rjmp init
.org $001
	rjmp inter
.org $00E
	rjmp analog

init:
	ldi temp,low(RAMEND)	;установка
	out SPL,temp		; указателя стека
	ldi temp,high(RAMEND)	; на последнюю
	out SPH,temp		; ячейку ОЗУ
	ser temp		;порт PC 
	out DDRC,temp		; на вывод
	out PORTC,temp 		 
	ldi temp,0xFB		;инициализация 2-ого вывода
	out DDRD,temp		; порта PD на ввод
	clr temp		         ;аналоговые входы 
	out DDRA, temp		; порта PA,

	ldi temp,0x40		;разрешение внешнего
	out GIMSK,temp		; прерывания 
	ldi temp,0x02		;обработка прерывания INT0
	out MCUCR,temp		; по перепаду 1/0
	ldi temp, 0x8D		; ADEN=1, ADIE=1, Fadc=Fclk/32
	out ADCSR, temp		
	ldi temp, 0		         ; Канал 0 АЦП (вход PA0)
	out ADMUX, temp
	sei			         ;разрешение прерываний	
	sbi ADCSR, ADSC	;пуск преобразования
loop:				          ;цикл ожидания прерываний
	rjmp loop

;обработка прерывания от АЦП
analog:
	in r18, ADCL		;считывание ADCL:ADCH	
	in r17, ADCH
	reti
; Обработка внешнего прерывания от кнопки для просмотра результатов.	
inter:
	cbi ADCSR, ADIE		;запрет прерывания от АЦП	
	mov reg_led, r17                    ;скопируем r17 в reg_led
	com reg_led                            ;дополнение до 1
         cp r17,r18                             ;сравнение регистра
	brcs r17_less                       ;переход на метку, если установлен флаг переноса, т.е. r17 меньше
	rjmp t0                             ;переход на метку, если r18 меньше
	r17_less:
	out PORTC, reg_led         ;вывод на порт C
	reti                                   
t0:
	mov reg_led, r18               ;скопируем r18 в reg_led
	com reg_led                        ;дополнение до 1
	out PORTC, reg_led          ;вывод на порт C

 	sbi ADCSR, ADIE		;разрешение прерывания с АЦП
	sbi ADCSR, ADSC		;пуск преобразования
	reti
В итоге всегда выводит в порт C один и тот же результат, не могу понять почему.В чем ошибка?
Собрал в протеусе схемку, но к успеху это не привело. скрин под спойлером
СпойлерИзображение
Вложения
acp.rar
Мой проект(создан в AVR Studio 4.13)
(4.98 КБ) 138 скачиваний
Последний раз редактировалось sanya839 Вт фев 03, 2015 15:22:46, всего редактировалось 1 раз.
Реклама
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: Преобразование аналогового сигнала

Сообщение ChipKiller »

для начала разобраться, как работает (и что такое) делитель напряжения
Реклама
sanya839
Родился
Сообщения: 6
Зарегистрирован: Вт окт 21, 2014 15:09:10

Re: Преобразование аналогового сигнала

Сообщение sanya839 »

ChipKiller писал(а):для начала разобраться, как работает (и что такое) делитель напряжения
А что конкретно? В регистре ADCSRA 2-0 биты отвечают за предделитель.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Преобразование аналогового сигнала

Сообщение Z_h_e »

sanya839, поясню для Вас замечание ChipKiller.

Встаньте вольтметром на вход АЦП контроллера. Убедитесь, что напряжение в любом положении переменного резистора равно напряжению батареи.

Для того чтобы понять почему так, берете закон Ома и считаете какое падение напряжения на переменном резисторе. Напомню что падение напряжения прямо пропорционально силе тока и сопротивлению.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Эиком - электронные компоненты и радиодетали
sanya839
Родился
Сообщения: 6
Зарегистрирован: Вт окт 21, 2014 15:09:10

Re: Преобразование аналогового сигнала

Сообщение sanya839 »

Z_h_e писал(а):sanya839, поясню для Вас замечание ChipKiller.

Встаньте вольтметром на вход АЦП контроллера. Убедитесь, что напряжение в любом положении переменного резистора равно напряжению батареи.

Для того чтобы понять почему так, берете закон Ома и считаете какое падение напряжения на переменном резисторе. Напомню что падение напряжения прямо пропорционально силе тока и сопротивлению.
опорное 5В, измеренное значение АЦП = 512, коэффициент делителя =2, АЦП 10разрядный.

(5*512*2)/1024=5В — реальное измеренное значение напряжения.
Значит надо загрузить ADCSRA последнии три бита нулями, коэф делителя будет 2.
Я праивльно понимаю?
Реклама
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Преобразование аналогового сигнала

Сообщение Z_h_e »

Встаньте вольтметром на вход АЦП контроллера.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
sanya839
Родился
Сообщения: 6
Зарегистрирован: Вт окт 21, 2014 15:09:10

Re: Преобразование аналогового сигнала

Сообщение sanya839 »

ChipKiller писал(а):для начала разобраться, как работает (и что такое) делитель напряжения
Исправил схему. Теперь схема работает корретктно. Тоесть например Подаю с батареии 5 вольт, потенциометр на 50% в итоге на ножке АЦП 2.5 вольта.
А что касательно программы?почему она работает не корректно??
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Преобразование аналогового сигнала

Сообщение Z_h_e »

Если бы Вы сразу прислушались к советам, то схему бы исправили за 5 минут после первого совета , а не ночью.

Вы в какое среде прошивку пишете? Там же есть режим отладки, ставте точки останова и ищите баг. Я думаю, если это было сделано Вами, то ошибка была бы найдена лично и исправлена, конечно после исправления схемы.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Re: Преобразование аналогового сигнала

Сообщение zero648 »

Ноги AVCC и AREF подключите к питанию контроллера.
Ответить

Вернуться в «AVR»