AVR + Си + мультиплексор = Матрица

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: AVR + Си + мультиплексор = Матрица

Сообщение isx »

Там только пдключение к ЮСБ и всё! Больше ничего нет. Жмём на одну из этих 64-х кнопок, сигнал обрабатывается, и в зависимости от результата посылается число от 1 до 64.

Порты остальные всё заняты будут. Здесь я предполагаю будет возможность обработки одновременно нажатых нескольких кнопок. И деталей минимум. Вместо 8-ми мультиков, всего 2.
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: AVR + Си + мультиплексор = Матрица

Сообщение pyzhman »

В сторону: чем-то это напоминает маторичика.
Docendo discimus
Реклама
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: AVR + Си + мультиплексор = Матрица

Сообщение isx »

ibiza11, вы всё правильно понимаете). Сейчас таким способом у меня свободно работают 8 мультиплексоров. Все они настроены на приём данных. Ну а если принцип работы не понятен, то попытаюсь ещё подробней разъяснить. Вот к примеру:
Смотрим на скрин который я прислал. Пусть левый МК отвечает за выход.
Теперь смотрим только на сетку. Подаём на верхнюю синюю дорожку высокий уровень. Теперь поочерёдно считываем инфу со второго мультика (тоесть, поочерёдно опрашиваем его ноги, они зелёные.) И так поочерёдно со всеми ногами. Когда кнопка нажата, то на зелёную ногу пойдёт сигнал с синей.
Сейчас основной вопрос в том, как сделать ВЫХОД с мультиплексора. ВХОД работает нормально , а выход пропадает в мультиплексоре.

pyzhman маторичика - а это что такое? :)
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: AVR + Си + мультиплексор = Матрица

Сообщение pyzhman »

http://radiokot.ru/forum/viewtopic.php?f=3&t=48284. Читать с начала до конца. :)
Docendo discimus
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: AVR + Си + мультиплексор = Матрица

Сообщение isx »

Хахх.. мдя... похож затея плохая.... Буду сам ковырять))
Реклама
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6312
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: AVR + Си + мультиплексор = Матрица

Сообщение Jack_A »

pyzhman писал(а):В сторону: чем-то это напоминает маторичика.
Ничего личного, никого не желая обидеть, но тут автоматом всплыло из В.Высоцкого :

"Он над нами издевался --
Сумасшедший, что возьмешь..."
Реклама
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: AVR + Си + мультиплексор = Матрица

Сообщение pyzhman »

Затея хорошая, если это опрос 64-ех кнопок двумя лапками мк. Но вы бы привели схему. Она даст гораздо больше нежели все описания; лучше один раз увидеть, чем сто раз услышать.
Docendo discimus
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: AVR + Си + мультиплексор = Матрица

Сообщение ibiza11 »

isx писал(а):Подаём на верхнюю синюю дорожку высокий уровень. Теперь поочерёдно считываем инфу со второго мультика (тоесть, поочерёдно опрашиваем его ноги, они зелёные.)
Вы здесь сами себе противоречите:
Если "подаем на верхнюю синюю дорожку высокий уровень", то на адресных входах мультиплексора установившееся состояние, например 001. Далее Вы пишете "поочерёдно считываем инфу со второго мультика". Как Вы это будете делать? Изменять состояние адресных входов? Но ведь они у Вас объединены с первым "мультиком"(с), следовательно он тоже будет переключаться, одновременно со вторым. :kill:
Ставим плюсы: )
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: AVR + Си + мультиплексор = Матрица

Сообщение isx »

На другом форуме сейчас тоже обсудили этот момент. Решил освободить ещё 3 пина для второго мультика. Теперь проблема с выходом. Почему из мультика ничего не выходит не смотря на то, что с ноги МК выходит высокий уровень...
Ну показал же скрин, как ещё подробней то? Чес слово не знаю. Схемы нет, собиралось всё на ходу. Остальные элементы сейчас значения не имеют (вам ведь не станет понятней если я кварц нарисую и светодиоды на пинах)...
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: AVR + Си + мультиплексор = Матрица

Сообщение ibiza11 »

Думаю тут надо уже думать не о принципе или программе, а проверять работу самого мультиплексора.
для полноты картины приведу схему, которую неспеша набросал за 15 минут.
Изображение
неужели так сложно было это сделать??? вместо того, чтобы разводить флуд аж на 2 страницы, после которых понятно лишь одно: если бы автор нарисовал схему с самого начала, то вопроса бы не возникло, как такового или вопрос ограничился бы одним ясным ответом - разделить адресные шины.
Вложения
Schematic Prints.PNG
Схема
(67.84 КБ) 1175 скачиваний
Ставим плюсы: )
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: AVR + Си + мультиплексор = Матрица

Сообщение isx »

Мультиплексоры исправны. Проверял неоднократно...
Мне вот что ещё написали на другом форуме:
а сам мультиплексор переводил в режим демельтиплексора ? т.е сигнал на com in/out менял ?
Про это я не в курсе... Как это делается никто не знает?
ibiza11 Это то же самое что и я делал, только по другому нарисовано. Схем я никогда не рисовал таких, а если б нарисовал чё нидь не так, то потом тут чёрт пойми что было. Вы же всё прекрасно поняли с первого раза и без иллюстраций, наверное другие просто не дочитали или прочли невнимательно......
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: AVR + Си + мультиплексор = Матрица

Сообщение ibiza11 »

как вы проверяли что они исправны?
для вашего сведения у этого мультиплексора нет настроек "in/out" и потому он называется аналоговым, что проводит ток в обе стороны.
вся информация по микросхеме содержится в ее документации и я вам советую изучить ее. если у вас проблемы с английским языком, при должном желании можно найти русскоязычную документацию на микросхему в интернете. также существует вариант найти советский аналог этой микросхемы и почитать на нее описание, которых в гугле навалом.
Ставим плюсы: )
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: AVR + Си + мультиплексор = Матрица

Сообщение isx »

Как ВХОДЫ они работают исправно (все 8 мультиков) как выход ни один. Документацию уже читаю, пытаюсь найти причину...
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: AVR + Си + мультиплексор = Матрица

Сообщение pyzhman »

ibiza11, вы дружище заслуживаете монумента "Железные нервы, или отсутствие таковых". Я восхищен.
:)
Docendo discimus
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: AVR + Си + мультиплексор = Матрица

Сообщение isx »

За что ему ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ спасибо)
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: AVR + Си + мультиплексор = Матрица

Сообщение isx »

Блин, теперь ещё одна проблема всплыла... Первый мультик стоял на пинах PB2 PB3 и PB4 . Освободил ещё под второй мультик пины PB0 PB1 и PB5, подключаю, а ничё не пашет(сигнал принимает только с нулевого входа мультиплексора, а остальные вообще "не в теме")...

PORTB = 0b10000000;
DDRB = 0b01111111;
..............
PORTB &= 0b11011100;
PORTB |= multa << 2;

Вот код на СИ, вроде всё верно. Может пины подряд идти должны(больше не знаю к чему прикопаться)?
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: AVR + Си + мультиплексор = Матрица

Сообщение ibiza11 »

повторяю вопрос "как вы их проверяли?"
вы только и твердите, что ничего не работает. ваши посты напоминают отчет о результате, а не описание процесса. для того, чтобы кто-нибудь мог вам помочь, нужно описать все свои действия, вывести читателя к проблеме, а не тыкать в нее и говорить "ниче не пашет". объясните нормально, разложите все по полочкам.
Ставим плюсы: )
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: AVR + Си + мультиплексор = Матрица

Сообщение isx »

Вообщем проверял так:
Есть у меня устройство некое (микшер самопальный) У него на мультиплексорах весит потенциометр (как делитель напряжения). Напряжение регулируется от 0 до 5В. В этом промежутке на каждые 5 мВ нога реагирует изменением сигнала (от 0 до 1024 соответственно). На каждой ноге такого мультиплексора весит по одному делителю, и когда сигнал изменяется, то в компьютер идёт миди команда (от 0х00 до 0x7f соответственно). Вот на место этого мультиплексора я ставил свои подопытные, и микшер исправно работает...

Второй мультиплексор я поставил, всё заработало... Нужно было изменить код, так как шли пины не по порядку а с разрывом (0; 1 и 5):
PORTB |= (multa & 3)|((multa & 4)<<3);

Осталась только проблема с демультиплексированием. Выхода нет по прежнему..
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Re: AVR + Си + мультиплексор = Матрица

Сообщение ibiza11 »

pyzhman, только сейчас заметил Ваш пост) Спасибо) Эх погубит меня доброта)

isx, так бы и сказали, что проверили мультиплексоры в другом устройстве. зачем говорить про всякие там 5мВ и потенциометры...
в общем не знаю, что вы там делаете, весь код вы не выкладываете. пишу так, как я себе это представляю.
Изображение
Код специально написан и сделан скрин, дабы лень истреблять))) хоть как то)
Вложения
mux_code.png
(46.87 КБ) 1008 скачиваний
Ставим плюсы: )
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: AVR + Си + мультиплексор = Матрица

Сообщение isx »

Спасибо за код, но я его как то поверхностно воспринимаю (в школе бейсик учил, и месяца два назад начал с си знакомство). Код то могу выложить, не очень секретный :))
if (usbInterruptIsReady())
{ // if no key event check analog input
if (multa == 7 ) {multa = 0;} else {multa++;}

PORTB &= 0b11011100;
PORTB |= (multa & 3)|((multa & 4)<<3); // change mux input line PB4..PB2
_delay_ms(1);

for(multt=0;multt<=5;multt++){

PORTB &= 0b11100011;
PORTB |= multt << 2; // change mux input line PB4..PB2
_delay_ms(1);
valuea = adc(5);
// hysteresis
if (adcOld[5 + multt*10] - valuea > 7
|| adcOld[5 + multt*10] - valuea < -7) {

adcOld[5+multt*10] = valuea;
// MIDI CC msg
midiMsg[0] = 0x0b;
midiMsg[1] = 0xb0;
midiMsg[2] = multt; // cc 70..77
midiMsg[3] = valuea >> 3;
sendEmptyFrame = 0;
usbSetInterrupt(midiMsg, 4);
};


}




}

Касательно вашего кода. Делали ли вы какие нибудь различая при использовании микросхемы как мультиплексор и демультиплексор?

Вот вообщем что я делал:
В вышеуказаном коде я подключал мультики как входы. Оба сигнал воспринимают нормально.
Затем 3-ю ногу (которая должна принимать сигнал и мультиплицировать его) первого мультика я кидал на землю, но на выходе у него ничего не выходило ни из одной ноги.
Закрыто

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