воскресенье, 23 декабря 2012 г.

Главный недостаток компилятора mikroC.

Компилятор mikroC для процессоров ARM представляет собой законченную среду программирования, поддерживающую большое число процессоров Stellaris и STM32. Простота установки и большое количество встроенных библиотек выделяют его из ряда подобных программ. Большим достоинством mikroC является поддержка STLink, что позволяет программировать такие платы как STM32 Discovery.
Но при всех достоинствах, mikroC не лишен недостатков. Главный из них не совместимость с библиотеками STMicroectronics. Это не позволяет использовать весь богатый арсенал готовых решений для STM32. Проблема заключается в том, что Mikroelektronika создала свое описание регистров, а прямое подключение стандартных CMSIS не возможно, по причине отсутствия некоторых определений. Конечно можно вручную переопределить все имена регистров, но это достаточно трудоемкая задача. Второй вариант - адаптация CMSIS, требует хороших знаний библиотеки. Попытка решить эту задачу в лоб не прошла.
В процессе подключения пока CMSIS были обнаружены следующие проблемы:
1. Отсутствие файла stdint.h, который можно найти в поставке какого-либо другого компилятора. После его записи в папку библиотеки проявилась следующая ошибка.
2. Не определенность константы _I. В microC определено только _IO и _О. Удаление данного типа привело к продолжению компиляции, но вылезли новые ошибки.
Далее пока нет сил разбираться и есть большое желание перейти на другой компилятор, что опять же не хорошо. Радует, что разработчики знают о проблеме и обещали выпустить новую версию компилятора до конца года. Правда год уже почти кончился, а результатов пока нет, хотя для других процессоров новые компиляторы появляются. В общем остается пытаться разбираться и ждать.

вторник, 18 декабря 2012 г.

Неудачи - путь вперед.

За последние несколько дней пришлось наступить на кучу граблей и полностью разочароваться в своих способностях. При этом винить можно только себя - спешка ни к чему хорошему не приводит.
Первое - заказал несколько плат для своих проектов. Первая же пришедшая плата была отправлена в брак - перепутаны верхняя и нижняя сторона. В общем все хорошо, но работать не будет.
Второе - на три платы запаял процессоры. На одной проц работать отказался - видимо перегрел феном. На второй установил не правильно - поспешил и не посмотрел маркировку квадрата LQFP. На третьей - припой закоротил шины питания, опять же под корпусом LQFP. При демонтаже последнего - обломил ножку и фактически камень можно выкинуть.
В итоге только одна плата - последняя заработала, так как был запасной проц. Все наполеоновские планы пошли прахом. Полное разочарование и потеря порядка 2К денег.
Единственное что успокаивает - пословицы и поговорки, вроде не ошибается тот кто ничего не делает. Сейчас сделаны выводы, но взяться за составление программ пока сил нет.

суббота, 15 декабря 2012 г.

STM32F4 Discovery


STM32F4 Discovery
В последнем заказе Farnell, кроме рассыпухи радиодеталей и нового паяльника приехали две платы STM32F4 Discovery. После появления в продукции STM этих изделий, желание получить возникло сразу. Но по разным причинам это сделать долго не удавалось. Пришедшие платы несколько удивили и разочаровали одновременно. Удивление вызвал в первую очередь увеличившийся, по сравнению с STM32VL Discovery размер. На рекламных фото это как-то не заметно. Разочарование постигло, когда мысли начали крутиться вокруг использования плат. Конечно посмотреть как работает аудио-обработка можно, но возможности процессора здесь попросту огромны. И главное что не хватает плате - дисплея. При этом в состав процессора входит и дисплейный интерфейс и интерфейс камеры. Разработчикам платы следовало бы вывести эти элементы на отдельные разъемы и цены бы набору не было.

Рассмотрение интернета показало несколько возможностей по увеличению возможностей Discovery. Первая была найдена опять же на Farnell, но на момент последнего заказа не доступна. Представляет она собой продукцию EMBEST в виде платы носителя с разъемами STM32F4DIS-BB, дисплея и камеры. В общем все то, что хочется. Но к сожалению в предварительном заказе были выставлены весьма невкусные цены. Все вместе зашкаливало далеко за 100$. Сам STM32F4DIS-BB есть в предварительном заказе по цене 28$ без доставки, что в принципе приемлемо, но поезд пока ушел.

STM32F4DIS-BB
Набор от Embest
Второй вариант нашелся на китайском сайте Aliexpress в виде конструктора Open407. По своей сути он представляет собой ту же плату носитель для Discovery, к которой создано свыше десятка модулей расширения, в том числе дисплей, камера, беспроводные модули и т.п. Китайцы предлагают все это как по отдельности, так и в виде набора. При этом полный набор включая плату STM32F4 Discovery стоит 130$. Единственный его недостаток - все потроха раскладываются "звездой" на столе, тогда как STM32F4DIS-BB позволяет собрать более компактную конструкцию, которая может потянуть на законченное устройство. 
Китайский набор Open407
Третий вариант - и пока по моему мнению - самый лучший - плата mikroMedia for STM32F4. Данная плата имеет точно такой же процессор как и STM32F4 Discovery, дисплей, аудиопроцессор, слот карты памяти, датчик движения. Также к ней предлагается множество модулей расширения. Стоит она 99$ без доставки. Единственное чего в ней пока нет - видеокамеры. Ну и Discovery к ней не прикрутить.
Сейчас заказан Open407 и несколько интересных плат к нему, включая камеру и дисплей. Все вместе с доставкой обошлось в 82$. Возможно что в январе месяце уже можно будет пробовать китайскую продукцию на вкус.
Кстати у китайцев есть аналогичные платы и для других вариантов Discovery. Также они предлагают собственные модели под процессоры STM и многие другие. Есть и еще несколько интересных устройств, купить которые - жаба душит, да и заниматься времени нет.

понедельник, 10 декабря 2012 г.

Посылка от Farnell

Пришла очередная посылка от Farnell. В общем-то ничего необычного кроме двух моментов. Первый - шло на удивление долго. С чем связано - сказать сложно. Одновременно ждал три посылки и все были задержаны. Одна вообще не дошла - вернули деньги. От Farnell  шла больше месяца, хотя ранее доходила дней за 10. Третья была задержана отправителем по неизвестным причинам и пока все еще в пути. Возможно проблемы связаны со снегопадом и проблемами в дороге на трассах. Но хотелось бы большей оперативности. Здесь в укор Farnell следует поставить отсутствие трек-номеров для отслеживания. Во всяком случае мне их не сообщают.
Второй момент - упаковка. В огромной коробке были положены три технологические кассеты для микроконтроллеров. При этом в каждой из них находились один или два процессора. Здоровенные пластмассовые "фиговины" придали весу практически на килограмм. К счастью у Farnell доставка в Россию имеет фиксированную стоимость, и повышенная масса никак не сказалась.
Технологическая кассета
Кассета и процессоры в ней

Да еще одно - посылка пришла поврежденной. Аккуратный надрез шел через одну из сторон коробки. Но все было на месте - возможно поигралась таможня.

пятница, 7 сентября 2012 г.

Термометр с линейной шкалой.


Классический термометр на микроконтроллере строится с использованием светодиодного или жидкокристаллического цифрового индикатора. Информативность и удобство использования таких устройств не вызывают сомнений, но иногда хочется чего-то более интересного. Одним из вариантов измерителя температуры может стать термометр с линейной шкалой, имитирующий работу жидкостных или ртутных приборов. Реализовать подобное устройство оказалось не очень сложно.
Проект термометра с линейной шкалой вынашивался несколько лет. Основная идея предполагала использование простого процессора типа PIC12F629 и микросхемы светодиодной индикации MAX7219. Главным сдерживающим фактором оказалась печатная плата. Вырисовывалась она только двухсторонней. Желание попробовать сделать ее с помощью ЛУТ наталкивалось на опасения получить неудачный экземпляр. К счастью появилась возможность получить экземпляр промышленного качества, что и было сделано. При этом габариты термометра очень сильно уменьшились от первоначального проекта. 
Основу схемы термометра составляет связка микроконтроллера PIC12F629 и драйвера MAX7219. Выбор на эти компоненты пал по одной причине –есть в наличии. В принципе все то же самое можно реализовать на каком-либо одном контроллере. Учитывая, что сегодня появились многоножечные модели, есть вариант обойтись даже без динамической индикации.
Микросхема MAX7219 может управлять свечением 64 отдельных светодиодов, либо 8 семисегментных индикаторов. Для проекта была применена комбинированная схема, в которой задействованы 40 светодиодов и 3 индикатора. Количество светодиодов позволяет выполнить отображение температуры в диапазоне от 0 до 40 градусов, с шагом в 1 градус, что вполне достаточно для комнатного термометра. При желании можно изменить диапазон на -40 +40 градусов, но шаг уже составит 2 градуса.
Микроконтроллер PIC12F629 предназначен для опроса датчиков, преобразования температуры и управления драйвером. Работает он от встроенного тактового генератора, и не требует никаких дополнительных элементов. В качестве датчиков изначально планировалось использовать DS18B20, но в процессе изготовления появилась идея применить какой-либо измеритель с шиной I2C. В качестве такового опробован датчик STLM75.
Печатная плата полностью разведена в Eagle. Потребовалась некоторая дополнительная доработка, но в остальном все получилось неплохо. Уже на этапе программирования проявилась одна небольшая ошибка. Светодиод, отвечающий за десятичную точку(при использовании индикаторов), был установлен первым, а зажигается последним в линейке. Проблема устранена программно, но хотелось бы что бы ее вообще не было.
Печатная плата была заказана на сайте http://newpcb.ru/. Большое спасибо производителям за быстрое и качественное изготовление.
Управляющая программа микроконтроллера написана в среде mikroPascal. Использована демонстрационная версия компилятора. Объем генерируемого кода в этой версии ограничен 2Кб, что вполне достаточно для PIC12F629, имеющего на борту 1Кб ПЗУ. В процессе написания кода были использованы встроенные библиотеки для работы с датчиками, вернее с шинами 1-Wire и I2C.
В процессе изготовления постоянно мешали новые варианты, применения данной конструкции. В первую очередь напрашиваются два датчика. Для этого предусмотрены два светодиода, связанные с неиспользуемыми десятичными точками на индикаторах. Второй вариант – линейная шкала для разнообразных приборов. При этом если использовать процессор PIC12F675, имеющий АЦП, то можно получить вольтметры, амперметры и другие устройства. Единственное, что может потребоваться – изменить расположение семисегментных индикаторов.
P.S. Если кого-то заинтересует конструкция, есть несколько печатных плат и комплект деталей. Пишите.

пятница, 20 июля 2012 г.

Демо-примеры Mikromedia

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

Hello-Word

Пример Hello-Word
Простенький пример, показывающий возможности отображения текста и графики.

Calculator

Калькулятор
Простенький калькулятор, оперирующий с двухбайтовыми числами

Mapping

Пример Mapping
Интерактивная карта мира. При нажатии на страну выдается ее название.

SimpleMaze

Заготовка игры в лабиринт. Ничего особо интересного. На сайте производителя есть картинка с игрой PacMan. Увидеть ее в примерах было бы здорово.

Accel 

Работа с акселерометром. Выдается три числа, отображающих ускорение по осям. Числа меняются при движении платы. Но как пока не понятно.

Progress

Линейная шкала, показывающая изменение какого-либо процесса.

SerialFlash

Тест микросхемы памяти.

Примеры с MP3 и картой MMC не запустились, так как требуют наличие карты с файловой системой FAT16.
Просмотр исходного кода удивил. Некоторые примеры состоят из нескольких строк. Очевидно, что вся графическая часть делается в специальном ПО. Объем загружаемых HEX файлов не порадовал. Меньше 50Кб ничего нет. Конечно, большую часть наверняка занимает графика, но тратить 150 Кб на элементарный калькулятор - помоему не хорошо.  Здесь сразу же всплывает сравнение с моими первыми ПК. РК86 имел 32Кб ОЗУ, которых хватало на игры, примитивные офисные программы и т.п. Следующий компьютер имел уже 64Кб ОЗУ и поддерживал относительно неплохую графику. Первый мой IBM-совместимый ПК имел 640Кб ОЗУ и казался чудом по графическим и иным возможностям. Здесь же процессор превосходит их все по многим характеристикам. Хочется надеяться, что программирование реальных задач не принесет столь объемного кода, или хотя бы оправдает столь большой занимаемый объем памяти..

среда, 18 июля 2012 г.

Плата Mikromedia for STM32


Итак, коробка с Mikromedia получена и вскрыта и можно посмотреть, что внутри. 
В комплект поставки платы входит следующее:
  • непосредственно сама плата.
  • кабель USB с прозрачной изоляцией. Выглядит очень красиво.
  • переходник для ST-Link с коротеньким плоским кабелем
  • диск со всем программным обеспечением, предлагаемым фирмой и описанием всей ее продукции. В принципе всю эту информацию можно загрузить с сайта.
  • книжечка с описанием платы, с большим количеством качественных иллюстраций
  • картонка с описанием выводов платы. Весьма полезное и практически бесплатное дополнение, облегчающее разработчику жизнь – можно не рыться в документации, а просто посмотреть где находится нужный пин.
  • картонка со схемой платы. Тоже что и предыдущий пункт.
  • картонка, объясняющая где находится штатная кнопка Reset и куда можно поставить вторую.

Для платы сразу же был заказан шилд с держателем батарей. Этот шилд также был вложен в коробку, плюс к нему положили комплект разъемов.

Как только плата была извлечена, сразу же возникло желание ее включить. Штатный кабель был воткнут в USB, и чудо свершилось. Включилась подсветка и через пару секунд, на дисплее появилось изображение гепарда. Видимо производители подобным образом пытались подчеркнуть быстродействие процессора. Во всяком случае, фотография красивая и ей самое место в качестве заставки. Больше ничего встроенное ПО не делает, но и на этом спасибо.
На плате установлен микроконтроллер STM32F207VGT6. Процессор достаточно мощный, содержит 1Мб флэш, 128кБ ОЗУ, 83 линии ввода/вывода. К нему подключены дисплей с тач-панелью, MP3-кодек VS1053, микросхема флэш-памяти на 8 Мбит,  разъем micro-SD и акселерометр. Дисплей поддерживает свыше 200 тысяч цветов при разрешении 320х240 пикселей. Дополнительно имеется система питания от USB или внешних батарей с контроллером заряда аккумуляторов.
Альтернативным изделием может стать плата с процессором Cortex-M4, на которой установлен STM32F407VGT6. Но, к сожалению, на момент заказа она была недоступна.
Первое впечатление от платы весьма положительное. Мощность устройства можно сравнить с уже солидными КПК, выпуска примерно начала-середины «нулевых» годов. Возможности превышают пока самые смелые идеи. Дело остается за малым - начать создавать свои проекты.