Страница 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 - тактовую частоту АЦП.
подробности см. в документации на микроконтроллер (даташит).