Микроконтроллеры

четверг, 5 июня 2014 г.

Часы на STM32VL Discovery


Плата STM32 Discovery несколько лет назад произвела настоящий «взрыв» интереса среди любителей микроконтроллерной техники. За прошедшее время появились как новые процессоры, так и новые варианты отладочных плат Discovery. Тем не менее, первую плату еще можно использовать в качестве основы разнообразных устройств. Одним из таких могут стать часы.

среда, 9 октября 2013 г.

LPC810 -ARM в DIP и SO



Ситуация долгого одновременного существования на рынке 8-ми и 32-разрядных микроконтроллеров создавала некоторое недоумение. Если найти 8-ми разрядный классический процессор можно только в музее, то такие микроконтроллеры используются сплошь и рядом. И это притом, что за такую же цену можно найти более высокопроизводительный 32-разрядный контроллер. Причин подобному можно назвать несколько. В их число, конечно же, войдут инерционность сообщества разработчиков, сложность новых моделей, необходимость пересмотра некоторых подходов к разработке и т.д. Но самый весомый довод был в отсутствии доступных корпусов. Развести плату под LQFP, в котором сегодня выпускаются большинство ARM-микроконтроллеров, а уж тем более распаять на нее микросхему сможет решиться далеко не каждый любитель. Альтернативой могли бы стать готовые платы – аналоги стандартных корпусов DIP, но их выбор ограничен, да и стоят они уже в десятки раз больше самого процессора.
Ситуация кардинальным образом поменялась примерно год назад, когда компания NXP анонсировала новую линейку микроконтроллеров под общим названием LPX800. Данная линейка углубляет решение производителя вытеснить с рынка 8-ми разрядные микроконтроллеры. Для этого в ее состав включены микросхемы в корпусах DIP-8 и SO-20. Также имеются варианты TSSOP-16 и TSSOP-20, но они уже менее интересны в любительских масштабах. Все микроконтроллеры выполнены на основе ядра Cortex-M0+, и имеют множество интересных особенностей. Несколько портит впечатление только малый объем памяти программ, не превышающий 16кБ. Для модели в 8-ми выводном корпусе он вообще равен 4кБ. И если 4кБ, для младшей модели еще как-то оправданы, то для процессоров с большим количеством выводов этого уже может оказаться мало. В общем, для серьезных проектов  лучше подобрать что-то другое.
Пока в линейке LPC800 3 модели процессоров. LPC810M выпускается в корпусе DIP8, LPC811M в TSSOP16, LPC812M в корпусах TSSOP16, TSSOP20, SO20. Для корпуса DIP8 есть еще одна проблема. Распиновка выводов питания выполнена собственным способом, не совпадающим с вариантами Microchip или Atmel. Конечно для новых проектов это не самое страшное, но была идея использовать этот процессор в старых разработках.
Среди других интересных решений NXP следует отметить конфигурируемый таймер и матрицу переключений выводов. Конфигурируемый таймер состоит из двух отдельных таймеров-счетчиков разрядностью 16 бит, которые могут работать совместно, создавая один общий таймер на 32 бита. Модуль позволяет использовать 4 входа и 4 выхода, и поддерживает функции ШИМ.
Матрица переключений выводов позволяет изменять назначение линий ввода/вывода, необходимым для работы образом. Фактически каждая альтернативная функция может быть подключена к любому выводу микроконтроллера. Столь революционное решение резко упрощает разводку печатной платы и делает ее некритичным к ошибкам. Пожалуй, это самое интересное и полезное новшество микроконтроллеров LPC.
К сожалению, пока не удалось приобрести данный процессор, так как во всех интерент-магазинах его ждут в конце октября/ноября. Придется немного подождать с экспериментами. Но похоже эра 8-ми битных процессоров прошла, и необходимо срочно избавиться от небольшого запаса микросхем. Также подождем, чем ответит STMicroelectronics.

пятница, 30 августа 2013 г.

Прищепка для программирования


Производители микроконтроллеров все больше уходят от старинных корпусов штыревого монтажа типа DIP. Связано это и с удешевлением производства и с увеличением количества входов/выходов. Также при автоматическом монтаже тип корпуса не играет особого значения. В любительской практике также в некоторых случаях выгодно использовать элементы поверхностного монтажа. При этом уменьшаются габариты готового изделия, и отпадает необходимость в сверлении печатной платы. Главным недостатком такого варианта становится невозможность использования панелек под микросхемы. Запрограммировать впаянный микроконтроллер можно только с помощью специально предусмотренного разъема внутрисхемного программирования (ICSP). Но такой разъем усложняет разводку платы и часто нарушает первоначальную идею устройства. Также он может иметь и значительные габариты.
Сравнительно недавно стал доступен еще один вариант, отлично подходящий для корпусов типа SOIC. Представляет он прищепку, оснащенную контактными пластинами. Установленная  на распаянную микросхему, прищепка обеспечивает электрический контакт. В итоге ее можно использовать как для  программирования, так и для измерения сигналов с выводов.
Прищепка SOIC-8
Приобретались прищепки в китайском интерент-магазине с целью программирования PICов. Взяты были две модели под корпуса SOIC-8 и SOIC-16. Первая из них пришла с распаянным кабелем и переходником под DIP8. Данный переходник отлично вписался в панельку на программаторе, соответственно не понадобилось никаких дополнительных устройств. Результат оказался выше всяких ожиданий. Если конструкция аналогичного назначения, но временной реализации постоянно теряла электрический контакт и программатор отказывался работать, то с прищепкой никаких проблем выявлено не было, во всяком случае, пока.
Прищепки SOIC-8 и SOIC-16
Вторая прищепка SOIC-16 имеет аналогичную конструкцию, но оказалась не востребованной. Используемые микроконтроллеры имеют все необходимые линии с одной стороны микросхемы, и запрограммировать, например, PIC16F676 в корпусе SOIC можно с помощью прищепки SOIC-8.
В целом оказалась очень удобная вещь. Теперь не надо дополнительно отвлекаться на разводку разъема ICSP и можно целиком сконцентрироваться на уменьшении габаритов конструкции. Теперь бы еще такую штуку для LQFP и было бы счастье J.

пятница, 15 февраля 2013 г.

Проба платы OPEN407


Одним из самых интересных вариантов использования платы OPEN407 можно считать возможность подключения графического дисплея и камеры. Что бы посмотреть эту возможность, в комплекте были заказаны модули трехдюймового дисплея HY32C и камеры OV7670. Естественно что сразу после возникло желание проверить их в работе. Благо для установки на плату не потребовалось практически никаких усилий. Дисплей встал сразу, а с камерой пришлось уточнить распиновку, так как ее разъем меньше, чем предусмотрен на плате  – носителе. В программы  был использован пример, поставляемый в комплекте. Написан он под Keil, дистрибутив которого также есть на диске.
Компиляция и загрузка прошла без проблем и чудо свершилось. На дисплее возникло изображение. Так как камера имеет фокусную линзу, то ее пришлось настроить. Для этого верхняя часть кожуха вращается на резьбе. После этого качество изображения даже слегка удивило. Дешевые вещи показали картинку ничуть не хуже чем камера телефона Samsung. Конечно, есть вопросы по цветам, но еще раз повторюсь – для столь дешевых элементов с низким разрешением, считаю полученную картинку неплохой.

Программа использует библиотеки и работы с устройствами непонятного происхождения. Тем не менее все работает.  Для передачи изображения задействован прямой канал доступа к памяти. Такое решение и позволило получить хорошее изображение, особенно при статичной картинке. Если картинка резко меняется, то на дисплее легко заметны диагональные полосы.

пятница, 8 февраля 2013 г.

Плата Open407V-D для STM32F4Discovery.



Долгое ожидание посылки из Гонконга с платой для  STM32F4Discovery наконец-то закончилось. Вся доставка в сумме заняла 53 дня. При этом традиционных претензий к Почте России нет. После появления отметки о выдачи посылки таможней, до ее получения прошла всего неделя. Учитывая столь долгий срок, попытался даже открыть диспут на Aliexpress, но поставщик убедительно попросил его снять. В итоге, если бы не продление срока доставки с его стороны, то диспут пришлось бы открывать повторно. Хотя виноват не продавец, а работа почтовых служб.

воскресенье, 13 января 2013 г.

Аналоговые часы для mikromedia.


Одной из самых популярных конструкций с использованием микроконтроллеров являются часы. Тысячи различных вариантов их можно найти в интернете. В качестве индикаторов в них наиболее часто применяются светодиодные или символьные жидкокристаллические индикаторы. Появление доступных плат с TFT дисплеями, таких как mikromedia, позволило создавать интересные конструкции с огромными возможностями по выводу графики. Естественно, что одним из первых проектов могут стать часы.
Возможности графического дисплея позволяют создавать не только цифровые, но и классические аналоговые часы. При этом на циферблате можно расположить различные стрелки и другую информацию. Так как в используемой плате mikromedia стоит процессор STM32F207VG, а на плате запаян часовой кварц, то практически никаких проблем с организацией часов нет. Единственная проблема кроется в особенностях часов микроконтроллера. Модуль часов реального времени в STM32F2xx не имеет возможности сформировать сигнал частотой 1Гц для обновления показаний. В младших и более старших моделях для этого предусмотрено отдельное прерывание. В серии F2xx его нет. Конечно можно использовать функцию таймера с постоянным обновлением, но это как-то не правильно. Единственный выход - использование прерывания для выхода из спящего режима - WakeUP. Его можно настроить на срабатывание с частотой 1Гц.
Сами часы не представляют особой сложности, особенно для таких мощных систем как STM32. Для определения направления стрелки используются тригонометрические функции. При этом часовая стрелка изменяет положение не раз в час, а раз в минуту. Ее положение находится в границах часового сектора времени, как и на обычных стрелочных часах. Для менее мощных систем можно поступить проще и заранее рассчитать все координаты стрелок. Применение математики позволило сделать часы настраиваемыми. Можно менять их угол положения, координаты центра и диаметр. В дальнейшем планируется использовать данные часы, например в проекте метеостанции.
Некоторую проблему создал механизм настройки времени. Графические библиотеки в mikroC не очень-то поворотливы, поэтому не получилось сделать плавный ручной поворот стрелок. Часовая и минутная стрелки настраиваются отдельно.
Программный код написан в среде mikroC. Готовый файл получился объемом чуть более 23 кБайт, что в принципе довольно много, но не критично для STM32. Найти проект можно в библиотеке программ LibStock, развиваемой производителем Mikroelektronika, по ссылке Analog Clock for STM32.

воскресенье, 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 и _О. Удаление данного типа привело к продолжению компиляции, но вылезли новые ошибки.
Далее пока нет сил разбираться и есть большое желание перейти на другой компилятор, что опять же не хорошо. Радует, что разработчики знают о проблеме и обещали выпустить новую версию компилятора до конца года. Правда год уже почти кончился, а результатов пока нет, хотя для других процессоров новые компиляторы появляются. В общем остается пытаться разбираться и ждать.