пятница, 30 сентября 2011 г.

Дисплейный шилд.

Наконец-то руки дошли окончательно завершить дисплейный шилд для отладочных плат типа Arduino. В процессе работы несколько изменилась плата. Кнопок теперь стало всего три, но в принципе и этого достаточно. Тут увидел контроллер тепловой автоматики, так там вообще кнопок нет, только поворотный энкодер. В принципе все то же самое управление можно сделать тремя кнопками.

После изготовления печатной платы проект был опробован. Первым делом запустил индикатор и микросхему часов на PCF8583. Далее проверил работоспособность кнопок. Все функционирует и теперь шилд можно использовать для разработки чего-то более интересного. В процессе программирования посетила мысль изготовить законченный модуль, схемотехнически повторяющий контроллерную часть отладочной платы Amicus18 и дисплейного шилда. В итоге программы разрабатывать на основе шилдов, а затем использовать их в готовом конечном модуле. Преимущества такого решения - простота разработки и компактность готового устройства.
Здесь можно подробнее посмотреть схему проекта и описание.

пятница, 23 сентября 2011 г.

Оптимизация кода.

Одной из проблем использования языков высокого уровня является объем получаемого в результате компиляции машинного кода. Особенно остро эта проблема ощущается для микроконтроллеров. Если для больших ПК, с их гигабайтами памяти и HDD, объем кода практически не имеет значения, то ограниченность ресурсов даже топовых МК предъявляет особые требования. Так, например, объем одного и того же алгоритма на ассемблере и языке высокого уровня может отличаться в десятки раз. В качестве примера можно привести IDE Arduino, в которой даже простейший код занимает очень много места.
К счастью, многие разработчики стали встраивать в свои компиляторы оптимизаторы кода. Так в системе программирования Amicus18 IDE, оптимизатор идет дополнительной опцией, при этом глубину оптимизации можно настраивать. Несколько иной подход в среде MicroPascal, предлагаемой фирмой Microelectronica. Оптимизация там выполняется в процессе компилирования. при этом более новые версии имеют более компактный код. Для опыта была откомпилирована одна и та же программа термометра на микроконтроллере PIC12F629. Использовались среды MicroPascal ver.6 и MicroPascalPro ver.4.6. В первом случае объем кода составил 844 команды, во втором 743. Прогресс явный, хотя все то же самое можно вполне уместить пару сотен ассемблерных команд. Меньший объем у версии PRO порадовал, учитывая ограничение в бесплатной версии на 2 кб.

среда, 14 сентября 2011 г.

Первый опыт запуска GSM-модема.

Долгое время купленный GSM-модем лежал без дела. Попробовать его руки не доходили. За это время на основной службе были получены два модема MC35i от Siemens. Естественно запустить их надо стало срочно. И тут выяснилось, что всех знаний в области микропроцессорной техники не хватает, так как беспроводная связь несколько более сложна, чем представлялось ранее.
В итоге куча опробованных вариантов не привела к нормальной работе. Модемы мигали лампочкой, чуть слышно свистели, но ничего не делали.
Придя домой решил продолжить опыты, но уже со своим WISMO228. Воткнув питание и запустив HyperTerminal, получил все ту же картину отсутствия связи. Пришлось разбираться и читать документацию. Первая проблема оказалась просто в не включенном модеме. Кнопка ON перевела его в нормальный режим, загорелась зеленая лампочка. Как не странно, тут же запустился HyperTerminal. Дальше пришлось разбираться с AT-командами. Первые попытки связи и отправки SMS ни к чему не привели. К счастью, проблема оказалась в синтаксисе команд и их перепутывании между собой, так как они имеют практически одинаковое написание. В итоге первая смска ушла на телефон дочери. Туда же был сделан первый звонок. Осталось разобраться с передачей данных. Пока есть желание попробовать режим CSD, так как именно он используется в оборудовании.
В процессе изучения было перерыто множество сайтов и некоторые варианты повергли в шок. Особенно напугали длинные числовые последовательности. Видимо придется разбираться и с этим.

пятница, 9 сентября 2011 г.

Arduino на базе 32-разрядных микроконтроллеров.

Одна из самых известных фирм - производителей отладочных и ознакомительных плат OLIMEX, не так давно приступила к выпуску Arduino-совместимых плат. При этом в ее линейке, кроме классических вариантов на базе процессоров от AVR, появились и варианты на базе STM32 и PIC32. Оба варианта изготавливаются в форм-факторе Arduino UNO.
Плата на базе STM32 получила название OLIMEXINO-STM32. Ее основу составляет контроллер STM32F103. Кроме стандартных для Arduino устройств, плата содержит кнопку, держатель карт SD/MMC, CAN-интерфейс, UEXT-коннектор, контроллер заряда Li-Ion аккумуляторов, а также дополнительный разъем для выводов. Для программирования используется клон родной среды под названием MAPLE IDE.
Olimexino-STM32. Фото с olimex.com
Плата под процессор PIC32 изготавливается в двух вариантах - простом и OTG. Первый содержит PIC32MX440F256H, оснащенный 256KB Flash и 32KB RAM. Из устройств - часы реального времени, UEXT-коннектор, контроллер заряда Li-Ion аккумуляторов. Имеется также несколько дополнительных отверстий для портов ввода-вывода. Вариант OTG отличается наличием держателя карт SD/MMC и некоторыми другими особенностями. Для программирования предлагается среда PINGUINO. На сайте производителя olimex.com доступны схемы и описания плат. Сами платы есть в Терраэлектронике по цене, примерно 2000 рублей.
PINGUINO-PIC32 Фото с Olimex.com