AVR + Си + мультиплексор = Матрица
Re: AVR + Си + мультиплексор = Матрица
Там только пдключение к ЮСБ и всё! Больше ничего нет. Жмём на одну из этих 64-х кнопок, сигнал обрабатывается, и в зависимости от результата посылается число от 1 до 64.
Порты остальные всё заняты будут. Здесь я предполагаю будет возможность обработки одновременно нажатых нескольких кнопок. И деталей минимум. Вместо 8-ми мультиков, всего 2.
Порты остальные всё заняты будут. Здесь я предполагаю будет возможность обработки одновременно нажатых нескольких кнопок. И деталей минимум. Вместо 8-ми мультиков, всего 2.
- Реклама
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: AVR + Си + мультиплексор = Матрица
В сторону: чем-то это напоминает маторичика.
Docendo discimus
Re: AVR + Си + мультиплексор = Матрица
ibiza11, вы всё правильно понимаете). Сейчас таким способом у меня свободно работают 8 мультиплексоров. Все они настроены на приём данных. Ну а если принцип работы не понятен, то попытаюсь ещё подробней разъяснить. Вот к примеру:
Смотрим на скрин который я прислал. Пусть левый МК отвечает за выход.
Теперь смотрим только на сетку. Подаём на верхнюю синюю дорожку высокий уровень. Теперь поочерёдно считываем инфу со второго мультика (тоесть, поочерёдно опрашиваем его ноги, они зелёные.) И так поочерёдно со всеми ногами. Когда кнопка нажата, то на зелёную ногу пойдёт сигнал с синей.
Сейчас основной вопрос в том, как сделать ВЫХОД с мультиплексора. ВХОД работает нормально , а выход пропадает в мультиплексоре.
pyzhman маторичика - а это что такое?
Смотрим на скрин который я прислал. Пусть левый МК отвечает за выход.
Теперь смотрим только на сетку. Подаём на верхнюю синюю дорожку высокий уровень. Теперь поочерёдно считываем инфу со второго мультика (тоесть, поочерёдно опрашиваем его ноги, они зелёные.) И так поочерёдно со всеми ногами. Когда кнопка нажата, то на зелёную ногу пойдёт сигнал с синей.
Сейчас основной вопрос в том, как сделать ВЫХОД с мультиплексора. ВХОД работает нормально , а выход пропадает в мультиплексоре.
pyzhman маторичика - а это что такое?
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: AVR + Си + мультиплексор = Матрица
http://radiokot.ru/forum/viewtopic.php?f=3&t=48284. Читать с начала до конца. 
Docendo discimus
Re: AVR + Си + мультиплексор = Матрица
Хахх.. мдя... похож затея плохая.... Буду сам ковырять))
- Реклама
Re: AVR + Си + мультиплексор = Матрица
Ничего личного, никого не желая обидеть, но тут автоматом всплыло из В.Высоцкого :pyzhman писал(а):В сторону: чем-то это напоминает маторичика.
"Он над нами издевался --
Сумасшедший, что возьмешь..."
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: AVR + Си + мультиплексор = Матрица
Затея хорошая, если это опрос 64-ех кнопок двумя лапками мк. Но вы бы привели схему. Она даст гораздо больше нежели все описания; лучше один раз увидеть, чем сто раз услышать.
Docendo discimus
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: AVR + Си + мультиплексор = Матрица
Вы здесь сами себе противоречите:isx писал(а):Подаём на верхнюю синюю дорожку высокий уровень. Теперь поочерёдно считываем инфу со второго мультика (тоесть, поочерёдно опрашиваем его ноги, они зелёные.)
Если "подаем на верхнюю синюю дорожку высокий уровень", то на адресных входах мультиплексора установившееся состояние, например 001. Далее Вы пишете "поочерёдно считываем инфу со второго мультика". Как Вы это будете делать? Изменять состояние адресных входов? Но ведь они у Вас объединены с первым "мультиком"(с), следовательно он тоже будет переключаться, одновременно со вторым.
Ставим плюсы: )
Re: AVR + Си + мультиплексор = Матрица
На другом форуме сейчас тоже обсудили этот момент. Решил освободить ещё 3 пина для второго мультика. Теперь проблема с выходом. Почему из мультика ничего не выходит не смотря на то, что с ноги МК выходит высокий уровень...
Ну показал же скрин, как ещё подробней то? Чес слово не знаю. Схемы нет, собиралось всё на ходу. Остальные элементы сейчас значения не имеют (вам ведь не станет понятней если я кварц нарисую и светодиоды на пинах)...
Ну показал же скрин, как ещё подробней то? Чес слово не знаю. Схемы нет, собиралось всё на ходу. Остальные элементы сейчас значения не имеют (вам ведь не станет понятней если я кварц нарисую и светодиоды на пинах)...
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: AVR + Си + мультиплексор = Матрица
Думаю тут надо уже думать не о принципе или программе, а проверять работу самого мультиплексора.
для полноты картины приведу схему, которую неспеша набросал за 15 минут.

неужели так сложно было это сделать??? вместо того, чтобы разводить флуд аж на 2 страницы, после которых понятно лишь одно: если бы автор нарисовал схему с самого начала, то вопроса бы не возникло, как такового или вопрос ограничился бы одним ясным ответом - разделить адресные шины.
для полноты картины приведу схему, которую неспеша набросал за 15 минут.
неужели так сложно было это сделать??? вместо того, чтобы разводить флуд аж на 2 страницы, после которых понятно лишь одно: если бы автор нарисовал схему с самого начала, то вопроса бы не возникло, как такового или вопрос ограничился бы одним ясным ответом - разделить адресные шины.
- Вложения
-
- Schematic Prints.PNG
- Схема
- (67.84 КБ) 1175 скачиваний
Ставим плюсы: )
Re: AVR + Си + мультиплексор = Матрица
Мультиплексоры исправны. Проверял неоднократно...
Мне вот что ещё написали на другом форуме:
ibiza11 Это то же самое что и я делал, только по другому нарисовано. Схем я никогда не рисовал таких, а если б нарисовал чё нидь не так, то потом тут чёрт пойми что было. Вы же всё прекрасно поняли с первого раза и без иллюстраций, наверное другие просто не дочитали или прочли невнимательно......
Мне вот что ещё написали на другом форуме:
Про это я не в курсе... Как это делается никто не знает?а сам мультиплексор переводил в режим демельтиплексора ? т.е сигнал на com in/out менял ?
ibiza11 Это то же самое что и я делал, только по другому нарисовано. Схем я никогда не рисовал таких, а если б нарисовал чё нидь не так, то потом тут чёрт пойми что было. Вы же всё прекрасно поняли с первого раза и без иллюстраций, наверное другие просто не дочитали или прочли невнимательно......
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: AVR + Си + мультиплексор = Матрица
как вы проверяли что они исправны?
для вашего сведения у этого мультиплексора нет настроек "in/out" и потому он называется аналоговым, что проводит ток в обе стороны.
вся информация по микросхеме содержится в ее документации и я вам советую изучить ее. если у вас проблемы с английским языком, при должном желании можно найти русскоязычную документацию на микросхему в интернете. также существует вариант найти советский аналог этой микросхемы и почитать на нее описание, которых в гугле навалом.
для вашего сведения у этого мультиплексора нет настроек "in/out" и потому он называется аналоговым, что проводит ток в обе стороны.
вся информация по микросхеме содержится в ее документации и я вам советую изучить ее. если у вас проблемы с английским языком, при должном желании можно найти русскоязычную документацию на микросхему в интернете. также существует вариант найти советский аналог этой микросхемы и почитать на нее описание, которых в гугле навалом.
Ставим плюсы: )
Re: AVR + Си + мультиплексор = Матрица
Как ВХОДЫ они работают исправно (все 8 мультиков) как выход ни один. Документацию уже читаю, пытаюсь найти причину...
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: AVR + Си + мультиплексор = Матрица
ibiza11, вы дружище заслуживаете монумента "Железные нервы, или отсутствие таковых". Я восхищен.

Docendo discimus
Re: AVR + Си + мультиплексор = Матрица
За что ему ОГРОМНОЕ ЧЕЛОВЕЧЕСКОЕ спасибо)
Re: AVR + Си + мультиплексор = Матрица
Блин, теперь ещё одна проблема всплыла... Первый мультик стоял на пинах PB2 PB3 и PB4 . Освободил ещё под второй мультик пины PB0 PB1 и PB5, подключаю, а ничё не пашет(сигнал принимает только с нулевого входа мультиплексора, а остальные вообще "не в теме")...
PORTB = 0b10000000;
DDRB = 0b01111111;
..............
PORTB &= 0b11011100;
PORTB |= multa << 2;
Вот код на СИ, вроде всё верно. Может пины подряд идти должны(больше не знаю к чему прикопаться)?
PORTB = 0b10000000;
DDRB = 0b01111111;
..............
PORTB &= 0b11011100;
PORTB |= multa << 2;
Вот код на СИ, вроде всё верно. Может пины подряд идти должны(больше не знаю к чему прикопаться)?
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: AVR + Си + мультиплексор = Матрица
повторяю вопрос "как вы их проверяли?"
вы только и твердите, что ничего не работает. ваши посты напоминают отчет о результате, а не описание процесса. для того, чтобы кто-нибудь мог вам помочь, нужно описать все свои действия, вывести читателя к проблеме, а не тыкать в нее и говорить "ниче не пашет". объясните нормально, разложите все по полочкам.
вы только и твердите, что ничего не работает. ваши посты напоминают отчет о результате, а не описание процесса. для того, чтобы кто-нибудь мог вам помочь, нужно описать все свои действия, вывести читателя к проблеме, а не тыкать в нее и говорить "ниче не пашет". объясните нормально, разложите все по полочкам.
Ставим плюсы: )
Re: AVR + Си + мультиплексор = Матрица
Вообщем проверял так:
Есть у меня устройство некое (микшер самопальный) У него на мультиплексорах весит потенциометр (как делитель напряжения). Напряжение регулируется от 0 до 5В. В этом промежутке на каждые 5 мВ нога реагирует изменением сигнала (от 0 до 1024 соответственно). На каждой ноге такого мультиплексора весит по одному делителю, и когда сигнал изменяется, то в компьютер идёт миди команда (от 0х00 до 0x7f соответственно). Вот на место этого мультиплексора я ставил свои подопытные, и микшер исправно работает...
Второй мультиплексор я поставил, всё заработало... Нужно было изменить код, так как шли пины не по порядку а с разрывом (0; 1 и 5):
PORTB |= (multa & 3)|((multa & 4)<<3);
Осталась только проблема с демультиплексированием. Выхода нет по прежнему..
Есть у меня устройство некое (микшер самопальный) У него на мультиплексорах весит потенциометр (как делитель напряжения). Напряжение регулируется от 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 + Си + мультиплексор = Матрица
pyzhman, только сейчас заметил Ваш пост) Спасибо) Эх погубит меня доброта)
isx, так бы и сказали, что проверили мультиплексоры в другом устройстве. зачем говорить про всякие там 5мВ и потенциометры...
в общем не знаю, что вы там делаете, весь код вы не выкладываете. пишу так, как я себе это представляю.

Код специально написан и сделан скрин, дабы лень истреблять))) хоть как то)
isx, так бы и сказали, что проверили мультиплексоры в другом устройстве. зачем говорить про всякие там 5мВ и потенциометры...
в общем не знаю, что вы там делаете, весь код вы не выкладываете. пишу так, как я себе это представляю.
Код специально написан и сделан скрин, дабы лень истреблять))) хоть как то)
- Вложения
-
- mux_code.png
- (46.87 КБ) 1008 скачиваний
Ставим плюсы: )
Re: AVR + Си + мультиплексор = Матрица
Спасибо за код, но я его как то поверхностно воспринимаю (в школе бейсик учил, и месяца два назад начал с си знакомство). Код то могу выложить, не очень секретный
Касательно вашего кода. Делали ли вы какие нибудь различая при использовании микросхемы как мультиплексор и демультиплексор?
Вот вообщем что я делал:
В вышеуказаном коде я подключал мультики как входы. Оба сигнал воспринимают нормально.
Затем 3-ю ногу (которая должна принимать сигнал и мультиплицировать его) первого мультика я кидал на землю, но на выходе у него ничего не выходило ни из одной ноги.
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-ю ногу (которая должна принимать сигнал и мультиплицировать его) первого мультика я кидал на землю, но на выходе у него ничего не выходило ни из одной ноги.


