Страница 1 из 1

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

Добавлено: Вс июн 15, 2014 13:08:48
ATMEL86
Помогите пожалуйста с кодом
На Atmega16 4 канала АЦП управлять кнопками: Нажимаю на кнопку опрашиваем 1 канал АЦП , нажимаю на кнопку 2 следующий канал 2 и т.д.

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

Добавлено: Вс июн 15, 2014 13:32:43
Pink-Pank
А в чем проблема-то? По нажатию кнопки устанавливаете в регистре ADMUX номер соответствующего канала - и меряете.

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

Добавлено: Вс июн 15, 2014 14:21:36
ATMEL86
Напишите пожалуйста для образца , если не трудно.

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

Добавлено: Вс июн 15, 2014 16:57:41
pcb
ATMEL86 писал(а):Помогите пожалуйста с кодом
Помощь подразумевает действия и работу просящего.
ATMEL86 писал(а):Напишите пожалуйста
Просьба сделать за вас. Для этого есть спец раздел "Работа"

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

Добавлено: Вс июн 15, 2014 17:15:42
ATMEL86
Я не прошу за меня написать целую программу! Я по просил пример опроса входов АЦП кнопками , так как я только начал изучать АЦП... :(

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

Добавлено: Вс июн 15, 2014 19:35:55
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 - тактовую частоту АЦП.
подробности см. в документации на микроконтроллер (даташит).