Фотолог: пайка чипов STM8L051f3p6 и STM8L151c8t6 в адаптерах TSSOP-DIP и QFN48-DIP48

разделы: STM8, дата: 30 марта 2016г.

В свое время, на меня произвели впечатление своими возможностями чипы STM8, но проблемой было то, что они как правило, выпускаются в "многоножных" корпусах QFN48 и выше.

У меня была готовая плата с STM8S103F3, но мне хотелось поработать с самыми совершенными 8-битными микроконтроллерами серии L, спроектированными для батарейного питания и имеющие такую полезную вещь как DMA.

В результате недолгого поиска я пришел к выводу, что для прототипирования на макетке можно использовать переходник в DIP разъем. Оставалось только суметь запаять чип в этот адаптер. Проблема усугублялась, тем, что SMD компоненты я в жизни никогда не паял, даже резисторы, не говоря уж о микросхемах.

Итак, спустя многие месяцы ожидания я получил на руки пачку адаптеров и кулек микросхем. У меня было пяток STM8L051f3p6 и две STM8L151c8t6. Первые я собирался использовать для изучения особенностей L-серии, а вторые, когда возможностей первых будет не хватать. Забегая вперед скажу 051-серия мои ожидания не оправдала, т.к. имеет ресурс на перезапись флеш памяти всего 100 циклов. Т.е. это чип для готового устройства: прошил - забыл. Ok. Зато теперь разбираюсь.

Мои инструменты: обычный паяльник с полукруглым жалом, припой ПОС-61 с канифолью, активный флюс "Прима-2", увеличительное стекло 73мм 3-х с подсветкой, пинцеты, зажимы и т.д.

Сперва я взялся за STM8L051f3p6. Микросхема на 20 выводов, к ней у меня был адаптер ТSSOP24. Четыре лишних вывода меня не смущали, стоил он одинаково с TSSOP20 на Али.

Читать дальше

Магнитометр HMC5883L - калибровка и использование в Arduino

разделы: HMC5883L, Arduino, дата: 30 марта 2016г.


hmc5883l

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

В качестве электронного компаса может служить магнитометр HMC5883L. В данном посте я хочу разобрать документацию, процесс калибровки и программный код работы с датчиком под Arduino чтобы впоследствии портировать его под AVR/STM8/STM32.

Читать дальше

V-REP симулятор роботов

разделы: myRobot, дата: 24 марта 2016г.

    Разработку робота можно разделить на несколько этапов:
  • разработка математической модели;
  • составление алгоритма;
  • написание программы;
  • разработка проекта;
  • изготовление;
  • испытание.

Симулятор роботов позволит проверить математическую модель и алгоритм перед тем как приступать к изготовлению робота. V-REP компании Coppelia Robotics - один из самых совершенных симуляторов в настоящее время. Программный комплекс является кроссплатформенным и бесплатным для использования в образовательных целях. Симулятор состоит из физического и графического движка, что позволяет достаточно комфортно работать с программой.

На скорую руку я отметил важнейшие элементы в интерфейсе V-REP:

Читать дальше

Отладка прошивки в Linux с помощью эмулятора SimulAVR и отладчика AVR-GDB. Чтение из Flash памяти AVR

разделы: AVR, дата: 20 марта 2016г.

Обычно, чем больше размер программы, тем чаще приходится пользоваться отладчиком. В AVR Studio встроен замечательный эмулятор микроконтроллеров, на котором можно проверить работоспособность прошивки, и можно порадоваться за Windows пользователей, но что делать пользователям Linux?

В Linux в качестве эмулятора может выступить SimulAVR, а отладчиком avr-gdb. Собственно, работе с этим отладчиком и посвящен этот пост, потому-что им же производится отладка по JTAG. Но, пока я JTAG не разжился, придется пользоваться эмулятором. SimulAVR поддерживает небольшой набор микроконтроллеров и к том уже не всю периферию он эмулирует, но таймеры и порты преимущественно работают.

При запуске SimulAVR без параметров отобразится справка по ключам и список поддерживаемых микроконтроллеров:
Supported devices: at90can128 at90can32 at90can64 at90s4433 at90s8515 atmega128 atmega1284 atmega1284a atmega16 atmega164 atmega164a atmega168 atmega32 atmega324 atmega324a atmega328 atmega48 atmega644 atmega644a atmega8 atmega88 attiny2313 attiny25 attiny45 attiny85

К сожалению XMega не поддерживается ;) поэтому тренироваться будем на ATmega8. Для работы с отладчиком нужно будет скомпилировать прошивку с опцией -ggdb и убрать оптимизацию кода опцией -O0.

SimulAVR и AVR-GDB работают по клиент-серверной архитектуре. Первый выступает в роли сервера, второй в роли клиента.

Для отладки возьмем такой пример:

Читать дальше

STM8 + IAR + ST-LINK2: программирование, прошивка и отладка из под Windows

разделы: STM8, среда разработки, дата: 14 марта 2016г.


STM8S103F3P6 и ST-Link2

Если в прошлый раз я писал о работе с STM8 из под Linux, то сейчас мне бы хотелось раскрыть этот вопрос с позиций Windows.

В качестве ОС я выбрал "старушку" Windows XP SP3, а в качестве "подопытного" чипа, так же как и в прошлый раз, у меня STM8S103F3P6 распаяный на плате как на картинке слева. Используемый мною программатор, это китайский клон ST-Link2.

Этот пост можно назвать "быстрым стартом" STM8в Windows.

1. Драйвера

Первым делом нужно будет поставить драйвера для программатора ST-Link2. Для этого заходим на домашний адрес компании ST в раздел данного программатора:

http://www.st.com/web/catalog/tools/FM146/CL1984/SC724/SS1677/PF251168

Читать дальше

ATmega168: колесный энкодер на дополнительном внешнем прерывании

разделы: AVR, myRobot, дата: 11 марта 2016г.


колесо в сборе с двигателем постоянного тока, редуктором и диском энкодера

Дополнительные внешние прерывания, относительно новая штука в периферии AVR. В микроконтроллерах ATmega8/ATmega16 их нет, зато они есть в ATmega88/ATmega168. В официальной документации они описаны в главе 13 "Внешние прерывания". В отличии от обычных внешних прерываний, в дополнительных, одно прерывание отведено на один порт (т.е. на восемь пинов), и в них нельзя выставить условия срабатывания. Прерывание будет генерироваться при любом изменении сигнала, даже если он был изменен программно, самим микроконтроллером.

    Т.о. задача состоит в следующем. Дано одно прерывание, и на него подключено два энкодера. Нужно:
  • определить какой именно энкодер вызвал прерывание;
  • определить время прошедшее с предыдущего срабатывания энкодера, т.е. интервал;
  • обеспечить защиту от "дребезга"
    Рассмотрим матчасть:
  • Диск энкодера имеет двадцать прорезей. Следовательно, поворот на одно деление примерно равно ~0.1π
  • Диаметр колеса около 66мм. Окружность 20.5 см, т.е. поворот на одно деление диска, равно примерно 1см пройденного пути.

Читать дальше

ATmega168: подключение нескольких ультразвуковых сенсоров HC-SR04 используя аналоговый компаратор

разделы: AVR, HC-SR04, myRobot, дата: 6 марта 2016г.

Компаратор это единственная периферия в AVR которая включена по умолчанию. Поэтому, если он не используется, его следует выключать. Допустимая ошибка (напряжение смещения) не более 40мВ, время отклика не более 0,5 мкс. Рабочие пины: прямой AIN0 и инверсный AIN1. Так же AIN0 называют положительным, а AIN1 отрицательным. Результат заносится в ACO бит регистра ACSR.

Официальный datasheet на ATmega168: http://www.atmel.com/images/doc2545.pdf работа компаратора описана в главе 23.2 на странице 246

    Хорошие справочные обзоры по работе компаратора в AVR можно найти здесь:
  1. Учебный курс AVR. Аналоговый компаратор
  2. AVR. Учебный курс. Использование аналогового компаратора

Я потратил немного времени на перевод официального руководства, с которым и предлагаю далее ознакомится.

Описание регистра ACSR

Компаратор управляется через регистр "Analog comparator control and status register" т.е. ACSR:

Читать дальше

Использование MS Visual Studio Community 2015 в качестве среды разработки Arduino

разделы: Arduino, среда разработки, дата: 1 марта 2016г.


Visual Studio Community 2015 с плагином Visual Micro

Вопрос, о замене штатного Arduino IDE на что-то более приличное, рано или поздно, встает наверное перед всеми, кто всерьез подружился с Arudino. В свое время, я не скрою, что готов был отдать душу за нормальную среду разработки. Впоследствии, я много раз видел сообщения с критикой штатного IDE, что привело меня к мысли что тема более чем имеет право на жизнь. Однако, нельзя взять просто так notepad++ и начать писать на нем скетчи. Потому что эти скетчи еще нужно компилировать, загружать на микроконтроллер, отлаживать через терминал. Я знаю, что под Linux многие используют самописные Makefile. Пользователям Windows повезло больше и они могут использовать бесплатную MS Visual Studio Community 2015 в качестве Arduino IDE, с минимальными трудностями для себя. Реализует эту возможность плагин для MS Visual Studio Visual Micro. О нем и будет речь.

Читать дальше