Не работает АЦП, как проверить
Не работает АЦП, как проверить
Хочу протестировать АЦП на AtMega8a. Списал код http://radioparty.ru/index.php/device-p ... vr?start=1, спастил его в AVR Studio, получил пустой eep и hex для flash. Подстроечный резистор 5кОм. Прошил через CV AVR, все по проекту, мерю вольтметром портD, везде 5В. Думаю ладно, дело в соотношении сопротивлений (кстати, я не ставлю токоограничительный резистор, не знаю, норм ли это?). Подкручиваю подстроечный резистор, соотношение сопротивлений меняется. А на выходе та же вечная полная единица. Что делать? Можете что-то предположить, или посоветуйте тест попроще.
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
- Реклама
Re: Не работает АЦП, как проверить
Именно. Сделайте мигалку, хотя бы уверенность будет, что контроллер правильно прошит и работает.или посоветуйте тест попроще.
Re: Не работает АЦП, как проверить
Скопипастил 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: Не работает АЦП, как проверить
Это вряд лиkras писал(а):А могут быть проблемы из-за различий между атмега8 и атмега8а?
Можно написать простенькую программу, которая данные с АЦП тупо выводит в порт в двоичном виде. Она получится коротенькая, ее тем более проще на асме написать.kras писал(а):А что написать попроще, чтобы обрабатывало аналоговые сигналы? Можно и на асм, так как когда-то я с него в пиках начинал и мне проще найти ошибку.
Да, и все таки надо резисторы ставить, а то светодиоды сгорят нафиг, а может уже сгорели
- Engineer_Keen
- Друг Кота
- Сообщения: 3872
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Не работает АЦП, как проверить
Код: Выделить всё
.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 ;вцикл...
- Реклама
Re: Не работает АЦП, как проверить
На асме - могут. Там много memory-mapped регистров.Это вряд ли
Именно у АЦП они и используются. Так что OUT не прокатит, только STS / LDS
------
Вру. Вопрос был про 8а, перепутал с 88-й
Re: Не работает АЦП, как проверить
Работает. Извините за нескромные вопросы, но мне теперь нужно сделать цифровой фильтр. Проблема в том, что плохо разбираюсь в асм, поэтому:
1. Как использовать регистры общего назначения типа R16?
2. Как обратиться к памяти? когда непосредственно пытаюсь записать константу (mov adr,R16), то говорит, что нужен регистр.
...Вспомнил, это же мк, поэтому in/out и тп, вроде разобрался с вопросами. Но насчет фильтра, если есть каке-то примеры пооптимальнее - был бы не против.
А как применить таймер?
1. Как использовать регистры общего назначения типа R16?
2. Как обратиться к памяти? когда непосредственно пытаюсь записать константу (mov adr,R16), то говорит, что нужен регистр.
...Вспомнил, это же мк, поэтому in/out и тп, вроде разобрался с вопросами. Но насчет фильтра, если есть каке-то примеры пооптимальнее - был бы не против.
А как применить таймер?
На практике можно не успеть сделать того, что можно хорошо обосновать в теории. Но без практики теория может отдаляться от нее, и когда они встретятся снова - не узнает даже неприкосновенное шампанское профессора в лаборатории. Моя практика: robofeya.ru
Re: Не работает АЦП, как проверить
LDI регистр, константа2. Как обратиться к памяти? когда непосредственно пытаюсь записать константу (mov adr,R16), то говорит, что нужен регистр.
STS адрес, регистр
in/out работает только с портами ввода-вывода, и то не со всеми.
Настроить его на нужный режим, записав значения в регистры конфигурации, и включить. В даташите всё есть.А как применить таймер?


