art_maestro Опубликовано 10 января, 2013 Поделиться Опубликовано 10 января, 2013 Здравствуйте. Хочу связать платформу launchPad на базе MSP430G2553 , светодиодный драйвер MAX7219 и светодеодную матрицу 8*8. Обратился за помощью к Гуглу, на что он мне ответил.. Нашел хороший пример реализации моей задачи, но только для ардуино, но не сомотря на это, я подумал, что должно получиться и на основе прилагаемой схемы на сайте Скачал с сайта, библиотеку LedControl.h, подключил для начала к среде energia. Подключил выводы к launchPad следующим образомra SerialDataIn к MOSI LOAD к CS Clock к CSK Прошил МК следующей программой #include "LedControl.h" // need the library LedControl lc=LedControl(P1_7,P1_5,P2_0,1); void setup() { lc.shutdown(0,false); lc.setIntensity(0,8); lc.clearDisplay(0); } void loop() { for (int row=0; row<8; row++) { for (int col=0; col<8; col++) { lc.setLed(0,col,row,true); delay(10); lc.setLed(0,col,row,false); delay(10); } } } Я добился только мигания матрицы, причем всех фонарей. Не могу понять, что я не так сделал. В голову приходила мысль, что данная библиотека по работе с матрицей не подходит МК MSP430, а только предназначена для ARDUINO, но на сколько моя мысль верна не могу сказать. Если кто знает или если есть идеи как решить эту проблему, пожалуйста подскажите. Спасибо 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IIIytNIK Опубликовано 11 января, 2013 Поделиться Опубликовано 11 января, 2013 (изменено) LedControl.h выложите пожалуйста. MSP430 имеет аппаратный spi? Управлять подобными драйверами от максим очень просто на самом деле. UPD: Для примера, просто по приколу Изменено 11 января, 2013 пользователем IIIytNIK 0 Молодых и талантливых чрезвычайно много. Целеустремлённых и готовых довести дело до конца — гораздо меньше. Ссылка на комментарий Поделиться на другие сайты Поделиться
Реле, вентиляторы, корпуса, разъемы, а так же любые электронные компоненты в нашем каталоге! Бесплатная доставка + 15% кэшбэк + скидки!Перейти на сайт ТМ Электроникс Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
art_maestro Опубликовано 11 января, 2013 Автор Поделиться Опубликовано 11 января, 2013 (изменено) Да SPI есть. Возможно я допустил ошибку при подключении. Хотя сейчас сравниваю, с чертежем. все нормально. Матрица пока вся светится и имгает. Изменил подключение. Присоеденил выход MISO на МК ко входу DIN на MAX7219 -нечего не изменилось. LedControl.zip Изменено 11 января, 2013 пользователем art_maestro 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
IIIytNIK Опубликовано 11 января, 2013 Поделиться Опубликовано 11 января, 2013 Выход MISO(Master input, slave output) к DIN цеплять не надо. Подключите обратно MOSI. Ардуиновские библиотеки можете не цеплять, они к msp430 все равно не подойдут. Можно их попробовать переписать, но проще написать новые. Работать с SPI умеете? MAX7219 управляется путем записи в него через интерфейс SPI 16 битных слов (две пачки по 8 бит). Первые 4 бита ничего не значат, следующие 4 бита адрес нужного регистра, и последние 8 бит необходимая информация. Список адресов регистров и нужной информации находятся в даташите. Начало\конец записи осуществляется дерганьем вывода LOAD(CS) Я не знаю как будет выглядеть код для MSP430, но на AVR с аппаратным spi это будет выглядеть так: К примеру мне нужно вывести драйвер из спящего режима в рабочее состояние. Для этого в регистр Shutdown я должен записать единицу. Смотрим по даташиту адрес: Shutdown Register Format (Address (Hex) = 0xXC) Большой X перед С означает что там может быть что угодно, так как это и есть те самые ничего не значащие 4 бита. Пишем код: LOAD = 0; //начинаем передачу, вывод LOAD опускаем в ноль spi(0x0C); //Шлем первые 8 бит - адрес регистра spi(0x01); //Шлем следующие 8 бит - единица LOAD = 1; //Заканчиваем передачу, вывод LOAD поднимаем. Данные после этого запишутся в регистр И так далее со всеми остальными регистрами. В AVR аппаратный spi сделан так, что может слать только пачками по 8 бит. Для некторых микросхем это недопустимо (например нужно посылать 12 бит) и поэтому приходится писать программную реализаию spi. Но это немного другая история. Могу еще подсказать, что перед выводом индикации с драйвера его необходимо подготовить и настроить. Для этого необходимо: 1)Вывести драйвер в рабочее состояние из спящего режима (Записать 0x01 в регистр 0x0C, выше это показал) 2)Установить предел динамической индикации (Записать 0x07 в регистр 0x0B для индикации восьми разрядов) 3)Установить яркость сегментов (Записать 0x0F в регистр 0x0A для максимальной яркости) 4)Установить режим декодирования информации (Записать 0xFF в регистр 0x09 для режима перевода двоичного кода в семисегментым режим, или записать 0x00 в регистр 0x09 для отключения декодирования и управления сегментами вручную. Так нужно будет сделать в вашем случае для управления матрицей) Много букв, много слов, многое по началу не понятно, но если вы научитесь работать с spi, то подниметесь на уровень выше в освоении МК. Похожим образом управляются множество других микросхем, наичная от простых цифровых потенциометров и внешних АЦП, заканчивая драйверами TFT панелей. 1 Молодых и талантливых чрезвычайно много. Целеустремлённых и готовых довести дело до конца — гораздо меньше. Ссылка на комментарий Поделиться на другие сайты Поделиться
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке. Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
art_maestro Опубликовано 11 января, 2013 Автор Поделиться Опубликовано 11 января, 2013 Спасибо за хорошую подсказку. Насчет библиотеки я догадывался. С SPI можно сказать не знаком, Читал только за CS, CLK, MOSI и MISO. Еще раз огромное спасибо 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Литиевые батарейки и аккумуляторы от мирового лидера EVE в КомпэлКомпания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
art_maestro Опубликовано 11 января, 2013 Автор Поделиться Опубликовано 11 января, 2013 (изменено) Следуя Вашим советам, получилось следующее. Матрица начала ярко гореть и не мерцать как было раньше. В ДатаЩит нашел описание адресов и значений. Но я не могу все равно понять, как управлять отдельной лампочкой, вернее ногой драйвера. Смотрю на таблицу 2 в ДатаЩите. Я не могу понять, что нужно записать и в какой регистр. Вот сейчас у меня светиться матрица, как мне погасить один любой светодиод, что и куда я должен записать. Писал адрес: 0xD1 значение 0х00, но я так понял, что управлять ногой Д1 нельзя таким образом. Спасибо огромное. Датащит ниже. MAX7219-MAX7221.pdf Изменено 11 января, 2013 пользователем art_maestro 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
croc19 Опубликовано 13 января, 2013 Поделиться Опубликовано 13 января, 2013 http://mcucpu.ru/index.php/pdevices/41-indicators/60-max7219 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
art_maestro Опубликовано 13 января, 2013 Автор Поделиться Опубликовано 13 января, 2013 Спасибо за ссылку. Не могли бы Вы написать простой пример, как например на матрице отключить хотя бы один светодиод. Я не могу это понять, скачал русскую версию датаЩита. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
croc19 Опубликовано 14 января, 2013 Поделиться Опубликовано 14 января, 2013 (изменено) Для загрузки данных в микросхему используется последовательный пакет длиной 16 бит. Младшие 8 бит являются информационными, следующие 4 задают номер регистра микросхемы, старшие 4 не используются. Первым передается старший бит Т.е, чтобы зажечь или погасить светодиод, нужно сначала записать в регистры управления нужные параметры. Режим декодирования, Интенсивность свечения, Использование индикаторов, Включить MAX7219 , Выключить ТЕСТ. Затем в регистры Индикатор 0 -- Индикатор 7 записать информацию, которая выведется на индикаторы. На страничке по ссылке есть ссылка на работа с драйвером индикаторов MAX7219 Там описана последовательность загрузки команд и данных. Микросхема в режиме динамической индикации выводит данные на дисплей. Сначала на индикатор 0, потом на индикатор 1 и так по кругу на все 8 индикаторов. Если вы запишете в регистр Индикатор 0 например 11110000, то четыре светодиода будут светиться, четыре нет. Изменено 14 января, 2013 пользователем croc19 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
croc19 Опубликовано 16 января, 2013 Поделиться Опубликовано 16 января, 2013 Разобрался? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
art_maestro Опубликовано 20 января, 2013 Автор Поделиться Опубликовано 20 января, 2013 Нет. Я не могу в датащите понять, куда нужно отправлять, чтобы управлять отдельным светодиодом на матрице. Вот например, Таблица 2 в ДатаЩите. HEX-code - я так понимаю, что это область памяти в которую нужно отправить ряд бит. Например, Digital 0 - последовательность бит 0001 а куда именно не могу понять. Написано в HEX-code 0xX1. Что я должен указать за место большого Х. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IIIytNIK Опубликовано 20 января, 2013 Поделиться Опубликовано 20 января, 2013 Ничего не нужно указывать. Отправляйте 0x01 0 Молодых и талантливых чрезвычайно много. Целеустремлённых и готовых довести дело до конца — гораздо меньше. Ссылка на комментарий Поделиться на другие сайты Поделиться
croc19 Опубликовано 21 января, 2013 Поделиться Опубликовано 21 января, 2013 Каждая команда или данные состоят из 2 байт. Старший байт отпраляется первым. Он обозначает регистр. Вместо Х ставьте ноль. Младший байт обозначает команду или данные. Итак. посылаете сначала адрес регистра, следом данные. Х1=01=11=21 и т.д. Не важно, что вместо Х, но ставьте лучше ноль, т.е. адрес регистра 01. Это адрес первых восьми светодиодов подключенных к DIG0 . следом посылаете информационный байт, каждый бит которого --- это один из этих восьми светодиодов. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
croc19 Опубликовано 21 января, 2013 Поделиться Опубликовано 21 января, 2013 Получилось? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
art_maestro Опубликовано 22 января, 2013 Автор Поделиться Опубликовано 22 января, 2013 Все равно матрица не реагирует. Только горят все светодиоды и все. Продемонстрирую весь код: digitalPotWrite(0x0C,0x01); //вывести драйвер из спящего режима digitalPotWrite(0x0B,0x07); // уст. предела динамической индикации digitalPotWrite(0x0F,0x0A); // уст. яркость сегментов digitalPotWrite(0x00,0x09); //установить режим декодирования digitalPotWrite(0x01,0x11110000); //управление светодиодами digitalPotWrite - функция в которую передаю две переменных. Первая - адрес, вторая - значение. Ее код ниже int digitalPotWrite(int address, int value) { //LOAD переводим в 0 digitalWrite(slaveSelectPin,LOW); // Отправляем адрес и значение SPI.transfer(address); SPI.transfer(value); //LOAD переводим в 1 digitalWrite(slaveSelectPin,HIGH); } Может я что-то не так делаю 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
croc19 Опубликовано 22 января, 2013 Поделиться Опубликовано 22 января, 2013 (изменено) Попробуй добавить выключение тестового режима . Возможно при включении он включается и все светится. Я в СИ не силен. Но думаю, что сигналы в схеме правильно разведены. И CLK правильно работает. Изменено 23 января, 2013 пользователем croc19 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 22 января, 2013 Поделиться Опубликовано 22 января, 2013 digitalPotWrite(0x01,0x11110000); //управление светодиодами может так??? digitalPotWrite(0x01,0xF0); //управление светодиодами или digitalPotWrite(0x01,0b11110000); //управление светодиодами 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
croc19 Опубликовано 23 января, 2013 Поделиться Опубликовано 23 января, 2013 Изменил предыдущее сообщение. ДОБАВИТЬ выключение режима теста. В тестовом режиме все включено. Возможно при включении схемы он включается. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
croc19 Опубликовано 23 января, 2013 Поделиться Опубликовано 23 января, 2013 digitalPotWrite(0x0F,0x0A); // уст. яркость сегментов ------ здесь ты включаешь тестовый режим, т.е. в регистр 0F записываешь 0А digitalPotWrite(0x00,0x09); //установить режим декодирования ----- здесь в регистр нет операции записываешь 09 Поменяй аргументы местами. И на всякий случай добавь digitalPotWrite(0x0F,0x00) выключить тест дисплея. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
croc19 Опубликовано 24 января, 2013 Поделиться Опубликовано 24 января, 2013 Завел? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Геннадий Опубликовано 24 января, 2013 Поделиться Опубликовано 24 января, 2013 Однако, схемку бы глянуть и конфигурацию SPI. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
croc19 Опубликовано 24 января, 2013 Поделиться Опубликовано 24 января, 2013 (изменено) Вот и я подумал про SPI. Если не завелось, то нужно всю программу глянуть. Хотя с СИ у меня хреново. И я не пользовался SPI, запуская драйвер. Изменено 24 января, 2013 пользователем croc19 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
art_maestro Опубликовано 24 марта, 2013 Автор Поделиться Опубликовано 24 марта, 2013 Спасибо, ребята. Сейчас попробую. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
art_maestro Опубликовано 24 марта, 2013 Автор Поделиться Опубликовано 24 марта, 2013 (изменено) LedControl.h выложите пожалуйста. MSP430 имеет аппаратный spi? Управлять подобными драйверами от максим очень просто на самом деле. UPD: Для примера, просто по приколу Бросил я launchPad, взял arduino. Cкопипастил код на одном из сайтов, скомпилировал его, перевел в HEX и загрузил в proteus. Та же самая ерунда, матрица светится. Вижу (через proteus) как по проводникам подается напряжение , все вроде правильно, но матрица не как не реагирует, просто светиться. Я немного изменил схему, согласно тому,как описывал ее автор сайта: Atmega 328 MAX7219 19 -> 1 17 -> 13 16 -> 12 Кстати, брал Демо пример, который входит в состав с библиотекой LedControl.h - тоже само. матрица светиться и все. по проводникам видно, что сигналы передаются по другому. Изменено 24 марта, 2013 пользователем art_maestro 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
art_maestro Опубликовано 26 марта, 2013 Автор Поделиться Опубликовано 26 марта, 2013 Вот как я соединил драйвер и матрицу. Возможно я не правильно соединил хотя смотрел по схеме как делал автор, так же соеденял по схеме, как порекомендовали на форуме (Изображение выше). 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.