На Atmega16 4 канала АЦП управлять кнопками.

Обсуждаем контроллеры компании Atmel.
Ответить
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Сб апр 20, 2013 16:38:32
Откуда: Страна Чудес

Сообщение ATMEL86 »

Помогите пожалуйста с кодом
На Atmega16 4 канала АЦП управлять кнопками: Нажимаю на кнопку опрашиваем 1 канал АЦП , нажимаю на кнопку 2 следующий канал 2 и т.д.
Вложения
схема.png
(27.5 КБ) 381 скачивание
Последний раз редактировалось aen Вс июн 15, 2014 13:16:21, всего редактировалось 1 раз.
Причина: Исправил. Нарушение Правил форума п. 1.4
Реклама
Опытный кот
Аватара пользователя
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США

Сообщение Pink-Pank »

А в чем проблема-то? По нажатию кнопки устанавливаете в регистре ADMUX номер соответствующего канала - и меряете.
Fucking static initialization order fiasco
Контактная информация:
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Сб апр 20, 2013 16:38:32
Откуда: Страна Чудес

Сообщение ATMEL86 »

Напишите пожалуйста для образца , если не трудно.
pcb
Опытный кот
Сообщения: 833
Зарегистрирован: Пт авг 12, 2011 09:14:27
Откуда: Млечный путь/Земля/РФ/Екатеринбург

Сообщение pcb »

ATMEL86 писал(а):Помогите пожалуйста с кодом
Помощь подразумевает действия и работу просящего.
ATMEL86 писал(а):Напишите пожалуйста
Просьба сделать за вас. Для этого есть спец раздел "Работа"
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Аватара пользователя
Сообщения: 120
Зарегистрирован: Сб апр 20, 2013 16:38:32
Откуда: Страна Чудес

Сообщение ATMEL86 »

Я не прошу за меня написать целую программу! Я по просил пример опроса входов АЦП кнопками , так как я только начал изучать АЦП... :(
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18785
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

#define REF (1<<REFS1) | (1<<REFS0)
#define ADC_PRESCALER (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0)

int get_adc(unsigned char chanel){
   ADMUX = REF | (chanel & 0x1F);
   ADCSRA = (1<<ADEN) | (1<<ADSC) | ADC_PRESCALER;
   while(ADCSRA & (1<<ADSC));
   return ADC;
}
передаете в параметре функции номер канала АЦП, а функция возвращает вам измеренный результат. REF задает источник опорного напряжения для АЦП, а ADC_PRESCALER - тактовую частоту АЦП.
подробности см. в документации на микроконтроллер (даташит).
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Ответить

Вернуться в «AVR»