Не работает АЦП, как проверить

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
kras
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Не работает АЦП, как проверить

Сообщение kras »

Хочу протестировать АЦП на AtMega8a. Списал код http://radioparty.ru/index.php/device-p ... vr?start=1, спастил его в AVR Studio, получил пустой eep и hex для flash. Подстроечный резистор 5кОм. Прошил через CV AVR, все по проекту, мерю вольтметром портD, везде 5В. Думаю ладно, дело в соотношении сопротивлений (кстати, я не ставлю токоограничительный резистор, не знаю, норм ли это?). Подкручиваю подстроечный резистор, соотношение сопротивлений меняется. А на выходе та же вечная полная единица. Что делать? Можете что-то предположить, или посоветуйте тест попроще.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Реклама
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Не работает АЦП, как проверить

Сообщение ploop »

или посоветуйте тест попроще.
Именно. Сделайте мигалку, хотя бы уверенность будет, что контроллер правильно прошит и работает.
Реклама
kras
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Re: Не работает АЦП, как проверить

Сообщение kras »

Скопипастил http://radioaktiv.ru/publ/stati/uroki_p ... k/12-1-0-4, все работает. Ну не знаю. А могут быть проблемы из-за различий между атмега8 и атмега8а? А что написать попроще, чтобы обрабатывало аналоговые сигналы? Можно и на асм, так как когда-то я с него в пиках начинал и мне проще найти ошибку.

Кстати, сори за оффтоп, титул по количеству сообщений соответствует реальности, у меня только-только стало получаться качественно паять. Теперь не так волнуюсь за косяки с железом:)
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Не работает АЦП, как проверить

Сообщение Engineer_Keen »

kras писал(а):А могут быть проблемы из-за различий между атмега8 и атмега8а?
Это вряд ли
kras писал(а):А что написать попроще, чтобы обрабатывало аналоговые сигналы? Можно и на асм, так как когда-то я с него в пиках начинал и мне проще найти ошибку.
Можно написать простенькую программу, которая данные с АЦП тупо выводит в порт в двоичном виде. Она получится коротенькая, ее тем более проще на асме написать.

Да, и все таки надо резисторы ставить, а то светодиоды сгорят нафиг, а может уже сгорели :)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Не работает АЦП, как проверить

Сообщение Engineer_Keen »

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

	.include "m8def.inc"
	.macro	OUTI ;макрос, так в итоге короче
	LDI	R16,@1
	.if	@0>63
	STS	@0,R16	
	.else
	OUT	@0,R16
	.endif
	.endm
START:	OUTI	SPH,High(Ramend) ;инициализация стека, хотя он тут не нужен...
	OUTI	SPL,Low(Ramend)
	OUTI	DDRD,0xFF ;порт D на выход - светодиоды
	OUTI	ADMUX,(1<<ADLAR)|(1<<REFS0) ;канал АЦП0, опорное=AVCC, результат смещен влево
	OUTI	ADCSRA,(1<<ADEN)|(1<<ADPS2)|(1<<ADSC) ;включаем АЦП, прескалер 16, старт преобразования
LOOP:	SBIS	ADCSRA,ADIF ;ждем окончания
	RJMP	LOOP ;преобразования
	IN	R16,ADCH ;читаем АЦП
	OUT	PORTD,R16 ;выводим в порт
	SBI	ADCSRA,ADSC ;запуск следующего преобразования
	RJMP	LOOP ;вцикл...
Реклама
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Не работает АЦП, как проверить

Сообщение ploop »

Это вряд ли
На асме - могут. Там много memory-mapped регистров.
Именно у АЦП они и используются. Так что OUT не прокатит, только STS / LDS

------

Вру. Вопрос был про 8а, перепутал с 88-й :oops:
Реклама
kras
Опытный кот
Сообщения: 782
Зарегистрирован: Вт апр 26, 2011 18:37:06

Re: Не работает АЦП, как проверить

Сообщение kras »

Работает. Извините за нескромные вопросы, но мне теперь нужно сделать цифровой фильтр. Проблема в том, что плохо разбираюсь в асм, поэтому:
1. Как использовать регистры общего назначения типа R16?
2. Как обратиться к памяти? когда непосредственно пытаюсь записать константу (mov adr,R16), то говорит, что нужен регистр.

...Вспомнил, это же мк, поэтому in/out и тп, вроде разобрался с вопросами. Но насчет фильтра, если есть каке-то примеры пооптимальнее - был бы не против.

А как применить таймер?
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Не работает АЦП, как проверить

Сообщение ploop »

2. Как обратиться к памяти? когда непосредственно пытаюсь записать константу (mov adr,R16), то говорит, что нужен регистр.
LDI регистр, константа
STS адрес, регистр

in/out работает только с портами ввода-вывода, и то не со всеми.
А как применить таймер?
Настроить его на нужный режим, записав значения в регистры конфигурации, и включить. В даташите всё есть.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»