Показ дописів із міткою Методичка. Показати всі дописи
Показ дописів із міткою Методичка. Показати всі дописи

субота, 15 серпня 2020 р.

Онлайн інструменти для С++

Compiler explorer logo
Попередній пост задумувався як приклад використання онлайн-засобів для роботи із С++, однак, осмислено показати більшість із них не вдавалося. Тому пишу ще один.

Ремарка: пам'ятайте, що більшість із цих проектів -- приватні, на особистих (чи арендованих своїм коштом) серверах авторів, хай і з залученням пожертв. Будьте акуратні -- не зловживайте, не заваліть DDoS-ом.
Щоб нормально роздивитися зображення -- клікніть по них. На жаль, не вдається мені за розумний час дійти толку із ресайзером Blogpost, вони виходили або заширокі, або нечитабельні.

Compiler explorer -- https://godbolt.org

Напевне, перший і найпопулярніший із них. 

середа, 12 серпня 2020 р.

Навіщо розуміти комп'ютер, якщо сучасні мови та їх бібліотеки такі потужні?

Працюю із дуже розумними та працьовитими студентами. Тому основне обмеження -- рівень їх мотивації. Важливо показати їм -- навіщо все це. Звісно, власний похід по граблях дає глибший і стабільніший результат, але це довга дорога, хотілося б її спростити. Тому -- очевидні для них приклади плюс практика. 

Байка - 1


Типовий "мотиваційний" приклад -- історії про вирішення задачі підрахунку слів у текстових файлах. Фабула наступна, пропонуєш цю задачу новій аудиторії, наступного разу: 

пʼятниця, 23 березня 2018 р.

Книги по C++ -- список літератури

Завдяки Українському Католицькому Університету маю можливість розповідати про сучасний С++ дуже хорошим слухачам -- нашим студентам, представникам компаній тощо. Написаний раніше, в 2013-му, якраз для таких розповідей, список літератури: "Книги по C++ -- деякі конкретні рекомендації", встиг помітно застаріти. З того часу відбулося багато змін в С++ та відповідній екосистемі: вийшло ще два стандарти С++14 і С++17, а С++11/С++14 нарешті ввійшов у (широку) практику. Та й мої погляди на вибір літератури з того часу теж трохи змінилися. Тому вирішив написати новий.
Суміжний текст, "Загальні міркування", (крім природного врахування нових стандартів), залишається актуальним.
В принципі, всі згадані книжки можна знайти  в Інтернеті. Але посилань не наводитиму. Якщо дуже критично -- пишіть.

Українських перекладів жодної із них не існує, або я не зміг знайти... На російськомовні варіанти книг часто даю посилання із магазину "Гіада" у Львові. Я з ними ніяк не афілійований (ну, крім того, що іноді книжки там купляю), але цей магазин мені подобається, крім того, єдиний у своєму класі у Львові -- не хотілося б, щоб його спіткала доля аналогічного у 5-му корпусі Політехнічного.

Англомовні -- або на авторську сторінку, або на Амазон чи іншого видавця.
Мушу зізнатися, не всі із цих джерел -- книг, посилань, я прочитав акуратно, від початку до кінці. Тому могли затесатися неоднозначні, які мені цю неоднозначність не встигли показати. Про можливість такого наголошуватиму в описі джерела. Також, є ряд джерел, про які мені точно відомо -- у них є виражені негативні елементи, однак є і щось варте уваги -- про це теж писатиме.

Карта С++17 від Алена С++. Клікабельно!

середа, 11 жовтня 2017 р.

Література до принципів організації комп'ютера -- Інтернет

Взято тут.
Продовжуючи список літератури, тепер -- значно більш ефемерні джерела, посилання в Інтернеті. Зате їх більше. :-)

Цей список складається із двох частин -- літератури для безпосереднього вивчення теми та окремий історичний підрозділ. Прочитайте хоча б вступ до нього! :-)

Почнемо із вікіпедії. Звичайно, тут легко втонути, список може стати величезним, тому, в основному, посилання "першого рівня" -- вглиб треба рухатися самостійно.

Загальні посилання:
Елементна база:
  • 7400 series -- найбільш популярна серія мікросхем, включає реалізації всіх тих компонент, про які пише Токхейм та інші. 
  • List of 7400 series integrated circuits -- список членів цього сімейства мікросхем.
  • 4000 series -- ще одна така серія. Зараз, на загал, менш популярна, ніж 74хх, але трапляється. 
  • List of 4000 series integrated circuits.
  • NE555 -- таймер, генератор імпульсів і взагалі дуже корисна штука.
  • Не на вікі, ще один список мікросхем серії 74xx, привабливий тим, що містить схеми розташування виводів більшості мікросхем серії -- сильно спрощує практичну роботу із ними. 

Мікропроцесорний "напрямок":

вівторок, 10 жовтня 2017 р.

Література до принципів організації комп'ютера -- книги

Взято тут.
Один із курсів, що викладаю в УКУ -- "Принципи організації комп'ютера". Він складається із двох частин. Перша присвячена елементарним блокам комп'ютера, від способів представлення даних -- чисел та тексту, до простих логічних елементів, мультиплексорів, тригерів та защібок, з яких будуються блоки пам'яті, арифметичні та арифметично-логічні (ALU) модулі тощо. Друга -- програмуванню простих обчислювальних систем без допомоги операційної системи -- так-би мовити, bare metal. 
На жаль, через обмеження часу, в цьому курсі доводиться користуватися такою собі логарифмічною шкалою -- стрибати між рівнями абстракцій, не заповнюючи проміжки щільно. Після арифметичних модулів, мінімалістичних блоків пам'яті та оглядом функціонування ALU зразу слідує bare-metal програмуванням сучасних систем.

В ролі bare metal системи обрано демоплату на базі мікроконтролера STM32 -- з одного боку, це цілком серйозний 32-бітний процесор, із 4Гб адресним простором, перериваннями із підтримкою пріоритету, DMA, MPU (але, на жаль, без MMU) і все таке (на противагу крихітним і простеньким AVR8), мікропроцесори. З іншого боку, у них немає великої і плутаної стандартної периферії машин на базі x86 та складнощів із кешем, суперскалярністю, перевпорядкуванням команд і т.д. "великих процесорів". (Про них говоримо в наступному курсі, але це -- окрема історія. :-). Взагалі, про STM32 в цьому блозі написано багато.

четвер, 27 жовтня 2016 р.

Зовсім просто про акселерометр та магнітометр LSM303DLHC із HAL

Простий акселерометр. (c) Wiki
Плата STM32F3Discovery обладнана двома дуже цікавими сенсорами -- акселерометром і магнітометром, об'єднаними в одному корпусі -- LSM303DLHC та гіродатчиком (MEMS-гіроскопом) L3GD20.

Почнемо із акселерометра-магнітометра.

Документація на нього знаходиться тут: "Ultra compact high performance e-compass: 3D accelerometer and 3D magnetometer module", там же можна скачати офіційну документацію -- так-званий Datasheet (на жаль, посилання доволі швидко псуються, сайт часто реорганізовують, чи що, так що шукайте на сторінці). Щоб зрозуміти, як користуватися описаним в документації, варто почитати так-звані Appnote, наприклад: "AN3192 Application note: Using LSM303DLH for a tilt compensated electronic compass" (На жаль, на цей документ немає посилань із сторінки LSM303DLHC -- все ж, трішки інша модифікація, є хіба значно коротші, виду: "DT0058: Computing tilt measurement and tilt-compensated e-compass"). Бо із самої документації витягнути необхідне трохи важко -- це довідник, а не підручник...

Опишемо коротко його основні характеристики:

четвер, 20 жовтня 2016 р.

Зовсім просто про далекомір HC-SR04 із GPIO/HAL

Взято тут.
Пост: "Далекомір HC-SR04 -- використовуючи GPIO/HAL/STM32CubeMX" написано виходячи із того, що попередні тексти, зокрема: "Далекомір HC-SR04 -- використовуючи GPIO/CMSIS" читачу відомі, виклад зосереджено лише на нюансах роботи з Cube/CoIDE/HAL. 

Для деяких моїх задач це виявилося незручним. Тому вирішив написати даний текст, де розглянуто роботу із далекоміром, не відволікаючись на подробиці реалізації внутрішньої HAL. 

Подробиці генерації проекту та роботи із середовищем тут не описуватимемо, за ними див., посилання вище та "GPIO мікроконтролерів STM32F303 з використанням HAL". Нам достатньо знати, що один пін, в режимі GPIO-Output, виділено під Trig, один -- в режимі GPIO-Input, під Echo:
Звертаюся самі-знаєте-до-кого -- бездумно "перемальовувати" схему із скріншота -- погана ідея. Для запобігання, тут, за можливості, наводжу лише важливі фрагменти.
Підключаємо їх до відповідних пінів далекоміра.  Увага -- він нормально спрацьовує від логічної одинички 3.3В-мікроконтролера, але для свого живлення потребує 5 вольт!

Принципи роботи із даним пристроєм описані тут: "Далекомір HC-SR04 -- огляд", коротко нагадаємо їх:

Мікросекундні затримки та відлік мікросекунд для STM32

Взято тут.
Затримки тривалістю в мікросекунди, які, наприклад, потрібні для роботи із нашим ультразвуковим далекоміром, не підтримуються HAL. При тому, HAL використовує SysTick, конфігуруючи його так, щоб той лічив мілісекунди, а переконфігуровувати його не завжди можна і не завжди хочеться.
Про те, як переконфігурувати, якщо є таке бажання, див. "Далекомір HC-SR04 -- використовуючи GPIO/HAL/STM32CubeMX", після слів "Ось з відліком часу складніше".
Аналогічно, HAL_GetTick() повертає, по замовчуванню, кількість мілісекунд. Це доволі велика одиниця...

В цьому пості розглянемо альтернативи:
  • Активне очікування -- затримку можна зробити, скориставшись так званим busy loop (холостим циклом).
  • Лічильник тактів -- його використання дозволяє вирішити обидві задачі, і створення затримок і відлік часу із мікросекундною точністю. (Старші моделі STM32 обладнані лічильником, схожим на той, який на x86 читає команда RDTSC -- DWT->CYCCNT).
  • Найбільш загальний варіант -- використання повноцінних таймерів.
Закінчимо виклад кодом, що дозволяє легко переключатися між розглянутими варіантами.

четвер, 29 вересня 2016 р.

GPIO мікроконтролерів STM32F303 з використанням HAL

STM32F3Discovery
Виникла чисто практична потреба написати коротке введення в GPIO контролера STM32F303 плати STM32F3Discovery. Подумав, що є сенс зробити його в блозі. 
Серія про таймери, далекомір і продовження -- написана ще весною, але, на жаль, катастрофічно бракує часу довести її до ладу і опублікувати. Вірю, що скоро мені нарешті вдасться це зробити. Done. Див. відповідні теги: таймери, далекомір.
Працюватимемо із використанням візуального генератора конфігурації STM32CubeMX, бібліотеки роботи із периферією HAL та середовища System Workbench for STM32 (SW4STM32). 

Update 20-11-2016: виправлено прикру помилку -- додано заборону переривань при звертанні до змінних, що можуть бути модифіковані в їх обробниках. Прикру -- бо в таких простих прикладах вона себе проявляє рідко, але є дуже "фундаментальною", якщо можна так сказати про помилку.

Update 17-09-2017:  додано вирішення кількох типових проблем, що виникають при роботі із SW4STM32, оновлено пару посилань, дрібні стилістичні зміни.