Здраствуйте
вопрос к автору:
Александр, а как в примере от 2014-01-18 06:33:44
изменить канал АЦП, с 0-го например на 6
сам не смог разобраться
заранее спасибо за ответ
Программирование ATMEL в BASCOM. |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » Программирование ATMEL в BASCOM. » Аппаратные возможности МК серии Atmega » Исследование АЦП в МК Atmega
Здраствуйте
вопрос к автору:
Александр, а как в примере от 2014-01-18 06:33:44
изменить канал АЦП, с 0-го например на 6
сам не смог разобраться
заранее спасибо за ответ
"а как в примере от 2014-01-18 06:33:44
Укажите конкретную ссылку на пример.
Исследование АЦП в МК Atmegaxxx и Attinyxxx
четвертый сверху, там ссылка на скачивание не рабочая
код скопировал, компилируется без ошибок в протеусе работает.
----------------------------------
Ссылочку подправил.
Скачивание может и не сработать, 8 лет прошло как-никак...
Возможно, файлообменника этого уже нет. 
изменить канал АЦП, с 0-го например на 6
В данном примере - только переключиться физически на ADC6 (на другую ножку МК).
Прерывание (в данном примере) будет отрабатывать при изменении на любом канале ADC.
Александр давненько уже не появлялся, попробуем своими силами решить... 
UPD.
Возможно, изначально я был не совсем прав...
Есть еще регистр ADMUX - выбор канала ADC (см. даташит).
В данном примере этот регистр указывает на ADC0 (по умолчанию), поэтому никаких переуказаний этого регистра Александр и не делал и схема составлена соответственно.
да, Вы оказались правы
добавил в код
Admux = &B0100_0110
и все заработало, да и сам тупанул в протеусе
подцепил вывод резистора к PORTC.6 (это аппаратный ресет)
создал тему задал вопрос и только после Вашего последнего ответа
обратил на это внимание.
Спасибо за ответы.
добавил в код
Admux = &B0100_0110
Я предпочитаю делать так:
Admux.1 = 1
Admux.2 = 1
В таком случае можно не заморачиваться состоянием остальных битов регистра.
возьму на заметку
можно не заморачиваться состоянием остальных битов регистра.
Почему? REFS1, REFS0 - выбор опорного, да и ADLAR может пригодиться.

Почему?
А потому
что:
При опросе АЦП силами Bascom мы не заморачиваемся выбором канала, а просто пишем
a = Getadc(2), подразумевая использование канала ADC2.
Тут же следом мы можем выполнить
d = Getadc(1) и программа не запутается.
Потому, что компилятор сам "выполнит" установку битов MUX в регистре.
В обсуждаемом тут примере опрос АЦП ведется другими командами... 
REFS1, REFS0 - выбор опорного, да и ADLAR может пригодиться.
Да, неоспоримо, что изначально может быть выполнено конфигурирование АЦП (REFS1, REFS0, ADLAR), отличное от "по-умолчанию".
В этом случае придется считывать состояние регистра ADMUX, заново формировать его состояние с учетом включенных ранее битов или при написании программы постоянно помнить об этом.
В #6 я описал возможность обойти этот шаг.
Просто включаем/выключаем нужные нам биты, не оказывая влияния на выполненные ранее предустановки АЦП.
Вы здесь » Программирование ATMEL в BASCOM. » Аппаратные возможности МК серии Atmega » Исследование АЦП в МК Atmega