Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Тема закрыта

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

Чт июн 21, 2012 05:39:27

Хочу протестировать АЦП на AtMega8a. Списал код http://radioparty.ru/index.php/device-pic/285-lesson-adc-avr?start=1, спастил его в AVR Studio, получил пустой eep и hex для flash. Подстроечный резистор 5кОм. Прошил через CV AVR, все по проекту, мерю вольтметром портD, везде 5В. Думаю ладно, дело в соотношении сопротивлений (кстати, я не ставлю токоограничительный резистор, не знаю, норм ли это?). Подкручиваю подстроечный резистор, соотношение сопротивлений меняется. А на выходе та же вечная полная единица. Что делать? Можете что-то предположить, или посоветуйте тест попроще.

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

Чт июн 21, 2012 06:43:38

или посоветуйте тест попроще.

Именно. Сделайте мигалку, хотя бы уверенность будет, что контроллер правильно прошит и работает.

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

Чт июн 21, 2012 12:33:41

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

Кстати, сори за оффтоп, титул по количеству сообщений соответствует реальности, у меня только-только стало получаться качественно паять. Теперь не так волнуюсь за косяки с железом:)

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

Чт июн 21, 2012 12:48:36

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

Можно написать простенькую программу, которая данные с АЦП тупо выводит в порт в двоичном виде. Она получится коротенькая, ее тем более проще на асме написать.

Да, и все таки надо резисторы ставить, а то светодиоды сгорят нафиг, а может уже сгорели :)

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

Чт июн 21, 2012 13:07:17

Код:
   .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: Не работает АЦП, как проверить

Чт июн 21, 2012 15:39:46

Это вряд ли

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

------

Вру. Вопрос был про 8а, перепутал с 88-й :oops:

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

Пт июн 22, 2012 04:43:27

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

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

А как применить таймер?

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

Пт июн 22, 2012 07:46:23

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

LDI регистр, константа
STS адрес, регистр

in/out работает только с портами ввода-вывода, и то не со всеми.

А как применить таймер?

Настроить его на нужный режим, записав значения в регистры конфигурации, и включить. В даташите всё есть.
Тема закрыта