пʼятниця, 26 лютого 2016 р.

Далекомір HC-SR04 -- GPIO/C++

Раз вже цей приклад представлено в стількох варіантах, продемонструю, як C++ може бути корисним під час роботи з контролерами. Людина із ніком fede.tft запропонувала цікавий підхід спрощення роботи з STM32 і подібними пристроями, з використанням шаблонів та інших сучасних фішок С++: "STM32 GPIOs and Template Metaprogramming". Замість або плутаного, або багатослівного, підходів, описаних в попередніх постах, без втрати продуктивності (!), можна робити так:

typedef Gpio<GPIOB_BASE,1>  trig;
trig::mode(Mode::OUTPUT);
trig::high();
trig::low();

typedef Gpio<GPIOB_BASE,2>  echo;
echo::mode(Mode::INPUT);
if( echo::value() )
{
...
}

середа, 24 лютого 2016 р.

Далекомір HC-SR04 -- використовуючи GPIO/HAL/STM32CubeMX

Як вже говорилося, CMSIS -- занадто низькорівнева, SPL від неї не далеко втекла. Після років роздумів та роботи, інженери STMicroelecronics випустили чергову спробу --- пакет STM32Cube. Він складається із двох частин: 
  • Коду для мікроконтролерів: бібліотеки, призначеної замінити SPL -- HAL, (Hardware Abstraction Layer) та всіляких middleware ("проміжних")  компонент -- бібліотеку підтримки FAT, бібліотеку для роботи із USB, TCP/IP  стек, RTOS, тощо.
  • STM32CubeMX -- програми для комп'ютера, яка дозволяє графічно конфігурувати периферію, генеруючи код мовою С, який реалізує "намальоване". 
Після  кількох років дозрівання проект став дуже потужним. Особисті враження: як мало треба для щастя -- лише не виставляти ті сотні бітиків вручну, медитуючи над даташітами і аппнотами (appnotes). 

Подивимося, як із ним працювати, на прикладі нашого простенького коду роботи із далекоміром.

Інсталяція 


вівторок, 23 лютого 2016 р.

Далекомір HC-SR04 -- використовуючи GPIO/CoX

Структура CoX
Мушу зізнатися, написано цю серію постів було ще в 2012-му році. На фоні тодішньої ситуації, бібліотека периферії від CooCox - розробників CoIDE, виглядала перспективною. Зараз я в цьому вже дуже сумніваюся -- вона, на жаль, практично закинута. Однак, викидати тодішній приклад шкода, тому ось.

COX


CooCox, автори CoIDE, розробили також свою бібліотеку роботи із периферією, аналог SPL -- COX. Її перевага -- вона платформонезалежна (кросплатформова), працює і з контролерами ARM Cortex від інших виробників -- підтримуються пристрої від Nuvoton, NXP, ST, TI, Holtek, FreeScale, тоді як код із попередніх постів ([1], [2]), працюватиме лише на STM32 від STMicroelectronics.

Апаратна конфігурація та ж, що й в інших GPIO-прикладах:
  • PB1 -- Trig
  • PB2 -- Echo
  • PC8 -- синій світлодіод
  • PC9 -- зелений світлодіод

понеділок, 22 лютого 2016 р.

Далекомір HC-SR04 -- використовуючи GPIO/SPL

Ієрархія засобів програмування, орієнтована на SPL.
Клікабельно. (c) STMicroelectronics
CMSIS, про яку йшла мова минулого разу, штука потужна, але дуже вже низькорівнева. (Кожен раз себе так відчуваю, ніби попав у кабіну авіалайнера -- ті сотні бітиків, які треба правильно сконфігурувати, інакше нічого не працюватиме.) В STMicroelectronics теж розуміли, що користуватися нею, в більшості випадків, не дуже зручно. Першою спробою надати більш високий рівень абстракції для роботи із їхніми мікроконтролерами, була SPL -- Standard Peripherals Library. (Нагадую, основа CMSIS універсальна, від розробника ядра ARM Cortex-M, ARM Inc., виробники конкретних мікроконтролерів її хіба розширяють, а ось SPL -- специфічна для STM32). 
Зауваження -- не плутайте SPL із STL з С++ -- стандартною бібліотекою шаблонів. ;-)
Повторимо те ж, що і в попередньому пості, засобами  Standard Peripherals Library, SPL. Апаратна конфігурація та ж:
  • PB1 -- Trig
  • PB2 -- Echo
  • PC8 -- синій світлодіод
  • PC9 -- зелений світлодіод

неділя, 21 лютого 2016 р.

Далекомір HC-SR04 -- використовуючи GPIO/CMSIS

Структура GPIO-піна, з
офіційної документації.
Клікабельно.
В попередньому пості було описано цікавий пристрій -- ультразвуковий далекомір, HC-SR04. Він може служити хорошим демонстраційним прикладом для багатьох технік роботи із мікроконтролерами. 

Подальші пости використовуватимуть плату STM32VLDiscovery із її мікроконтролером  STM32F100RB, архітектури ARM Cortex M3, котрий має 128Кб пам'яті програм та 8Кб RAM. Для інших споріднених мікроконтролерів відмінності будуть мінімальними. 

Спершу розглянемо найбільш базову (але, відповідно, і найбільш низькорівневу) методику -- із використанням CMSIS. Також, буде використано найбільш примітивну техніку роботи із пристроєм -- безпосереднє смикання ніжок мікроконтролера та читання рівнів на них (іншими словами, самим GPIO, без використання переривань).

CMSIS -- GPIO


субота, 20 лютого 2016 р.

Далекомір HC-SR04 -- огляд

Купив я колись, багато років тому, собі таку штуку, як на фото -- ультразвуковий далекомір-"ехолокатор", HC-SR04. (Взагалі, перша моя покупка на e-bay. Купляв по 2.5 бкс, зараз менше 2. Та й продавець той, "Чіп партнер", як показала практика,  цілком приємний).

Пристрій простий, як двері. Datasheet -- аж дві сторінки крупним шрифтом із малюнками. 

четвер, 31 грудня 2015 р.

Эндрю Шульман - Неофициальная Windows 95

Трапилася мені книжечка із далекого минулого, "Неофициальная Windows 95", проглядав її останні місяці, на пару із Таненбаумом, про якого пізніше. Такої "ніжності" та "ностальгії" як до FCB та DOS я до неї аж ніяк не відчуваю, тому детальної рецензії, як до "Extending DOS" by Ray Duncan et. al  не писатиму. Однак, дечим із неї поділитися хотілося б.