Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Аппаратные возможности МК серии Atmega » Исследование АЦП в МК Atmega


Исследование АЦП в МК Atmega

Сообщений 1 страница 9 из 9

1

Здраствуйте

вопрос к автору:

Александр, а как в примере от 2014-01-18 06:33:44
изменить канал АЦП, с 0-го например на 6
сам не смог разобраться
заранее спасибо за ответ

0

2

"kestrel написал(а):

"а как в примере от 2014-01-18 06:33:44

Укажите конкретную ссылку на пример.

0

3

Исследование АЦП в МК Atmegaxxx и Attinyxxx
четвертый сверху, там ссылка на скачивание не рабочая
код скопировал, компилируется без ошибок в протеусе работает.

----------------------------------
Ссылочку подправил.
Скачивание может и не сработать, 8 лет прошло как-никак...
Возможно, файлообменника этого уже нет. ;)

0

4

kestrel написал(а):

изменить канал АЦП, с 0-го например на 6

В данном примере - только переключиться физически на ADC6 (на другую ножку МК).
Прерывание (в данном примере) будет отрабатывать при изменении на любом канале ADC.

Александр давненько уже не появлялся, попробуем своими силами решить... ;)

UPD.
Возможно, изначально я был не совсем прав...  :blush:
Есть еще регистр ADMUX - выбор канала ADC (см. даташит).
В данном примере этот регистр указывает на ADC0 (по умолчанию), поэтому никаких переуказаний этого регистра Александр и не делал и схема составлена соответственно.

0

5

да, Вы оказались правы
добавил в код

Admux = &B0100_0110

и все заработало, да и сам тупанул в протеусе
подцепил вывод резистора к PORTC.6 (это аппаратный ресет)
создал тему задал вопрос и только после Вашего последнего ответа
обратил на это внимание.
Спасибо за ответы.

0

6

kestrel написал(а):

добавил в код
Admux = &B0100_0110

Я предпочитаю делать так:
Admux.1 = 1
Admux.2 = 1

В таком случае можно не заморачиваться состоянием остальных битов регистра.

0

7

возьму на заметку

0

8

Nord написал(а):

можно не заморачиваться состоянием остальных битов регистра.

Почему? REFS1, REFS0 - выбор опорного,  да и ADLAR может пригодиться.  :crazyfun:
https://upforme.ru/uploads/0000/25/b8/1811/813067.jpg

0

9

Andrusha написал(а):

Почему?

А потому ;) что:
При опросе АЦП силами Bascom мы не заморачиваемся выбором канала, а просто пишем
a = Getadc(2), подразумевая использование канала ADC2.
Тут же следом мы можем выполнить
d = Getadc(1) и программа не запутается.
Потому, что компилятор сам "выполнит" установку битов MUX в регистре.

В обсуждаемом тут примере опрос АЦП ведется другими командами... ;)

Andrusha написал(а):

REFS1, REFS0 - выбор опорного,  да и ADLAR может пригодиться.

Да, неоспоримо, что изначально может быть выполнено конфигурирование АЦП (REFS1, REFS0, ADLAR), отличное от "по-умолчанию".
В этом случае придется считывать состояние регистра ADMUX, заново формировать его состояние с учетом включенных ранее битов или при написании программы постоянно помнить об этом.

В #6 я описал возможность обойти этот шаг.
Просто включаем/выключаем нужные нам биты, не оказывая влияния на выполненные ранее предустановки АЦП.

+2


Вы здесь » Программирование ATMEL в BASCOM. » Аппаратные возможности МК серии Atmega » Исследование АЦП в МК Atmega