Подключение кнопок через АЦП

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
MS24
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

Подключение кнопок через АЦП

Сообщение MS24 »

Ребят, столкнулся с такой проблемой, Смог подключить только 4 кнопки к ацп, хотя нужно подключить гораздо больше, именно 21, знаю, что считывать с входов ацп нужно записью в ADMUX, но никак не могу понять, как это сделать, подскажите пожалуйста.
Вложения
main.c
(2.21 КБ) 652 скачивания
Реклама
MS24
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

Re: Подключение кнопок через АЦП

Сообщение MS24 »

Или может кто нибуль подскажет, как к одному порту можно подключить много кнопок?
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Подключение кнопок через АЦП

Сообщение Engineer_Keen »

Программу внимательно не смотрел, вроде структура верная. Возможно надо поколдовать с порогами (с которыми сравниваются значения АЦП).
Подключал 20 штук, работало, можно и больше. Главное чтобы номиналы резисторов были поточнее, хотя у меня 5% стояли.
MS24
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

Re: Подключение кнопок через АЦП

Сообщение MS24 »

А свой исходник дать не можешь? Или может расскажешь как ты подключал?
Реклама
Эиком - электронные компоненты и радиодетали
MS24
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

Re: Подключение кнопок через АЦП

Сообщение MS24 »

А свой исходник дать не можешь? Или может расскажешь как ты подключал?
Реклама
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Подключение кнопок через АЦП

Сообщение Engineer_Keen »

Исходника сейчас нет, система голая (только поставил), документы где-то в общем бардаке затерялись... Но схема была самая обычная.
Реклама
MS24
Нашел транзистор. Понюхал.
Сообщения: 172
Зарегистрирован: Пн мар 19, 2012 13:04:11

Re: Подключение кнопок через АЦП

Сообщение MS24 »

В общем у меня задача, что бы кнопки зажигали диоды. Но портов не хватает на всю систему. Я думаю настроить кнопки через АЦП, остальные порты освободиь для диодов. Думаю сделать так, считываю пин порта ( в атмеге 128 АЦП подключен к порту F) и если на него подано напряжение, то запускаем АЦП и находим через уровень напряжения какая кнопка нажата, иначе сканируем след пин и так далее, узнав какая кнопка нажата зажигаем диод. Может поможешь с реализацией? У меня сроки горят, а я совем новичек.
s64
Потрогал лапой паяльник
Сообщения: 321
Зарегистрирован: Пн окт 18, 2010 21:18:21

Re: Подключение кнопок через АЦП

Сообщение s64 »

если просто зажигать диоды от кнопки, то можно проще - т.к. каждый пин может быть и входом и выходом, то настраиваем пины на выход в состоянии "1", led при этом не светится. Каждые 20-50мСек переводим порт в состояние вход с подтяжкой и проверяем на 0xff ну или каждый пин в отдельности на "0" (в случае если кнопка нажата) После проверки возвращаем порт в исходное состояние и если кнопка была нажата, соответствующий пин переводим в "0" вот led и загорелся. Есть один недостаток - led всегда будет загораться пока нажата кнопка, даже если повторным нажатием он должен выключаться. Если интересно могу поискать исходники
под все это безобразие, делал давно, сразу не найду.
Вложения
Безымянный.jpg
схема примерно такая
(112.53 КБ) 322 скачивания
Аватара пользователя
Smoker
Прорезались зубы
Сообщения: 202
Зарегистрирован: Пт июн 04, 2010 21:58:36

Re: Подключение кнопок через АЦП

Сообщение Smoker »

Есть микросхемы специально предназначенные для управления светодиодами типа М66313FP у нее последовательный вход для сигнала и параллельный выход на 32 светодиода. 15-20 портов + 5 микросхем = 160 светодиодов. И разводку легче делать, так как к микросхеме только 3-4 проводника вести.
Когда я был маленький, - микросхемы были большими. Имели четыре ножки и две ручки - для переноски.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Подключение кнопок через АЦП

Сообщение Engineer_Keen »

Вот мой вариант.
Код:

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

	CLR	KEY_CODE
	IN	R16,ADCH ;читаем АЦП
	LSR	R16 ;делим на 8, с меньшими числами проще работать
	LSR	R16
	LSR	R16
	INC	ADC_CHANNEL ;переключаем номер канала
	ANDI	ADC_CHANNEL,0x01 ;
	BREQ READ1 ;если 1-й читаем кнопки
	RJMP	READ2 ;если 0-й - переменный резистор
READ1:	CPI	R16,0x00 ;0 - кнопки не нажаты
	BRNE	K01
	RJMP	NO_KEY 
K01:	CJNE	R16,0x01,PC+3 ;первая кнопка (cjne - макрос: CJNE="CPI	@0,@1"+"BRNE	@2")
	LDI	KEY_CODE,KEY_ENTER
	RJMP	KEY_0
K02:	CJNE	R16,0x02,PC+3 ;вторая
	LDI	KEY_CODE,KEY_JOGR
	RJMP	KEY_0
K03:	CJNE	R16,0x03,PC+3 ;третья
	LDI	KEY_CODE,KEY_JOGL
	RJMP	KEY_0
[...]
K22:	CJNE	R16,0x1C,PC+3
	LDI	KEY_CODE,KEY_CH2
	RJMP	KEY_0
K23:	CJNE	R16,0x1E,PC+3
	LDI	KEY_CODE,KEY_CH1
KEY_0:
	SBI	GPIOR0,KEY_PRESSED ;ставим флаг что кнопка была нажата
NO_KEY:
	OUTI	ADMUX,0x00 ;переключаем канал (0)
    RETI
После строки READ2 идет примерно такая-же структура, только с другими кодами и в конце АЦП переключается на 1-й канал...
А вот так подключены кнопки:
Вложения
ADC_KEYS.PNG
(25.62 КБ) 247 скачиваний
Аватара пользователя
Cat
Электрический кот
Сообщения: 1087
Зарегистрирован: Вт май 05, 2009 10:43:42
Откуда: Россия
Контактная информация:

Re: Подключение кнопок через АЦП

Сообщение Cat »

Для чего использовать АЦП? Как же матричная клавиатура?
Боевой ватник.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Подключение кнопок через АЦП

Сообщение Engineer_Keen »

Cat писал(а):Для чего использовать АЦП? Как же матричная клавиатура?
Че, много портов лишних есть? :)))
Аватара пользователя
Cat
Электрический кот
Сообщения: 1087
Зарегистрирован: Вт май 05, 2009 10:43:42
Откуда: Россия
Контактная информация:

Re: Подключение кнопок через АЦП

Сообщение Cat »

Engineer_Keen писал(а): Че, много портов лишних есть? :)))
Тоже мне, нашли дефицит. А что покажет АЦП если нажать сразу несколько кнопок? Резисторы надо подбирать... ИМХО матричная проще, хотя я может малость не в теме.
Боевой ватник.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Подключение кнопок через АЦП

Сообщение Engineer_Keen »

Ну да, фигню покажет, но это же для в основном для ПДУ используется, а не для синтезаторов, так что все нормально. Ну а резисторы, это еще как программу написать, у меня 5% работают...
Аватара пользователя
Cat
Электрический кот
Сообщения: 1087
Зарегистрирован: Вт май 05, 2009 10:43:42
Откуда: Россия
Контактная информация:

Re: Подключение кнопок через АЦП

Сообщение Cat »

Как с надежностью данного решения?

Вот такое милое изделие, 140 руб, займет всего 8 ножек. http://chip-nn.ru/find.php?f=%EA%EB%E0% ... 2%F3%F0%E0
Боевой ватник.
Аватара пользователя
Engineer_Keen
Друг Кота
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Re: Подключение кнопок через АЦП

Сообщение Engineer_Keen »

Cat писал(а):Как с надежностью данного решения?
Ну, год работает, сбоев нет, правда в комнатных условиях. Там изначально 3 пальчика AA, т.е. питание 4.5В, при нажатии контроллер еще белым светиком (Vf=3V) моргает, так вот когда батарейки садятся так что он уже не моргает, кнопки все равно пашут :)
Cat писал(а):Вот такое милое изделие, 140 руб, займет всего 8 ножек. http://chip-nn.ru/find.php?f=%EA%EB%E0% ... 2%F3%F0%E0
А у меня всего 6 ножек, из них 1 ресет, 1 светодиод, 2 для RS485 (TX+R/W), остается 2 :P Ну не ставить же другой контроллер, да и кнопки элементарно разводятся на плате.
ramid
Встал на лапы
Сообщения: 133
Зарегистрирован: Ср июл 16, 2008 21:23:37
Откуда: Україна, Київ

Re: Подключение кнопок через АЦП

Сообщение ramid »

MS24 писал(а):как к одному порту можно подключить много кнопок?
Теоретически - как здесь, или здесь
eufs
Опытный кот
Сообщения: 772
Зарегистрирован: Вс апр 10, 2011 02:24:06
Откуда: г.Северодонецк

Re: Подключение кнопок через АЦП

Сообщение eufs »

Лучше светодиоды подключить через сдвиговые регистры, а кнопки матрицей. Через АЦП и резисторы больше десятка кнопок лучше не подключать, потому что возрастают требования к их контактам.
C0FFEE=‭12648430‬
Аватара пользователя
radteh
Друг Кота
Сообщения: 3087
Зарегистрирован: Пт мар 09, 2007 15:01:52
Откуда: Биробиджан

Re: Подключение кнопок через АЦП

Сообщение radteh »

Cat писал(а):Как с надежностью данного решения?
ты про АЦП? Если да, то такое решение стоит в некоторых автомагнитолах, кнопки на руле, передние анели телевизоров.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Подключение кнопок через АЦП

Сообщение GP1 »

ramid писал(а):
MS24 писал(а):как к одному порту можно подключить много кнопок?
Теоретически - как здесь, или здесь
Почему теоретически?
Проверено работает! :solder:
Чем дальше, тем больше становлюсь занудой...
Изображение
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»