![]() |
|
Модераторы: PILOT, ManiaK, Mazzi |
![]()
|
|
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 12 |
Работаю с микросхемами МАХ7219, это драйверы-контроллеры семимегментных (и не только) индикаторов.
С работой поодиночке проблем нет, но вот соединил их последовательно (Вход DOUT первой с входом DIN второй и т.д., CLK и LOAD объядинил вместе). И что-то странные вещи стали происходить с ними. Есть у кого опыт по такому их включению? -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| PILOT |
|
|||
|
производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Соединил правильно, скорее всего в программе напутал.
СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 12 |
Именно. Но вот уже дня два не найти. У меня почему-то данные из первой микросхемы иногда проходят во вторую. Делаю, как написано в дата-шите. Например, мне надо отправить данные во вторую микросхему. (А их у меня всего две пока что ) Тогда я делаю так: 1. Записываю нужный мне код последовательно во вход DIN, тактируя его восходящим фронтом CLK. Все сигналы держатся не мнее 1 мкс, так как работаю с процессором AT89C55WD с кварцем 11.059 МГц. Поэтому сразу же сигнал CLKвозвращаю в ноль, то есть в его исходное положение. 2. Во вход DIN запихиваю шестнадцать нулей, тактируя их все тем же CLK. Это соответствует записи в регистр "NoOperation". 3. На вход LOAD подаю восходящий вронт 0-1, после этого возвращаю его обратно в 0. По идее, в этом случае первая микросхема должна получить по приходу восходящего фронта LOAD код "пустой операции", а вторая - как раз нужный мне код. Если же мне наоборот надо сделать так, чтобы код получила первая микросхема, то я сначала засылаю код "пустой операции", а затем - код операции для первой микросхемы. Я правильно понял Дата-шит? Потому что в работе с этой микросхемой у меня опыт достаточно большой, и программирование ее регисторв у меня уже давно не вызывало проблем. А вот последовтельно включить решил впервые. -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 12 |
Хм...Написал -то я правильно, а вот на деле послал то же самое, забыв сделать все наоборот. Теперь все наконец-то ожило и работает. PILOT Все равно спасибо за поддержку. -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| PILOT |
|
|||
|
производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Ты должен загонять всегда 32 бита. Даже если тебе нужно изменять только 16-ть последних. Тогда все будет так как ты хочешь. В даташите есть описание подключения которое ты тут привел, так что по схеме проблем нет.
По команде ЛОАД данные в сдвиговом регистре перезаписыватся в регистры данных (т.е. актуализируются), до команды ЛОАД данные в сдвиговом регистре не учитываются. Сдвиг происходит по положительному фронту, значит дей2ствуешь так: выставляешь следующий записываемый бит на ноге DIN, дергаешь CS (период 200-300мкс). Загнал 32 бита: дергаешь ЛОАД. Все. СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
| Dreamer_0x01 |
|
||||||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 12 |
CLK наверное, а не CS?
А это откуда такая задержка большая? У меня вот уже и с 1 мск заработало.
Да это-то ясно с самого начала, я ж говорю, проблема была в том, что я их не в той последовательности заслал. А вот про задержки допустимые все-таки интересно бы узнать. В даташите про это не нашел. Кстати раз уж тема поднялась - а ты не знаешь аналогов подобных микросхем? А то уж больно стоят дорого, очень чувствительны к статике (приходится программно в кажом цикле ресетить и заново конфигурировать), и греются как не знамо что. Да, режимом декодирования я естественно не пользуюсь, он у них глючный очень, да и самому несложно проргаммно все дешефрировать, так что дешефрирование не обязательный параметр, самые важные - цена, потребление, количество управляемых сегментов и условия эксплуатации (в частности - температурные диапазоны). -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
||||||
|
|||||||
| PILOT |
|
|||
|
производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Тогда твой выбор это восьмиразрядные регистры с последовательным входом и параллельным выходом 74HC164, соединяешь 4 последовательно. Только развертку придется самому делать.
СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 12 |
Может быть, для этого задействовать отдельный какой-нибудь совсем простенький контроллер тогда? -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| PILOT |
|
|||
|
производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Я думаю и основной контрлллер с этим справится.
СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 12 |
Основному контроллеру и там есть чем заняться =)
А тут еще следить, чтобы хотя бы раз в 20 мс зажигались/выключались диоды, а у меня каждые 40 мс измерения идут, обработка которых занимает от 20 до 30 мс. Хочется оставить чуток драгоценного времени в резерве =) Да и не сложно это на отдельном контроллере сделать ведь... Единственное, найти чуток места на плате ;) -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| PILOT |
|
|||
|
производство ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2724 Регистрация: 4.4.2002 Где: москва Репутация: 20 Всего: 54 |
Я думаю 200мкс ты выжмешь из основного цикла
Если есть возможность сделать что-то программно, то это нужно делать программно СУВ. -------------------- тут могла быть Ваша реклама... |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: 1 Всего: 12 |
да, но учитывая то, что необходимо будет самому воспроизводить развертку (все сразу сегменты ведь если зажигать, то получится очень большой ток в импульсе). Получается, что нужно будет действовать по следующему алгоритму - нужно будет последовательно зажигать каждый сегмент, при выключенных остальных, после этого зажигать следующий, и т.д. Причем весь этот цикл придется делать не реже, чем 20 мс, иначе будет откровенно заметно мерцание, кроме того, диоды имеют инерционность и нужно эксперементально подбирать длительность импульса, которая позволит добиться от диода достаточной интенсивности свечения...
Не знаю, может быть, в дальнейшем это и реально сделать, но для первых опытов все-таки стоит собрать макет с дополнительным контроллером, чтобы поэксперементировать с частотами развертки, длительностью импульсов и прочими тонкостями. Ведь микросхема МАХ наверняка имеет в себе некое подобие либо контроллера, либо ПЛД...
При использовании контроллеров на 51 ядре, максимум, что я могу добиться, это 1 МГц. А именно на таких контроллерах делается наша продукция. Знаю, это каменный век, но ничего с этим не поделаешь, нет времени переходить на новую базу. Добавлено @ 20:20 хотя, это меня достаточно интересовало..Не мог бы ты мне сказать, какое время нужно удерживать ток через светодиод, чтобы он успел засветиться, прежде чем подавать ток на следующий диод? -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
![]()
|
| Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |