Програмування та проєктування мікропроцесорних систем

Спеціальність: Комп'ютерні науки (Проектування і програмування інтелектуальних систем та пристроїв)
Код дисципліни: 6.122.12.E.057
Кількість кредитів: 5.00
Кафедра: Системи автоматизованого проектування
Лектор: Старший викладач: Головацький Руслан Іванович
Семестр: 5 семестр
Форма навчання: денна
Мета вивчення дисципліни: 2. Мета та завдання навчальної дисципліни 2.1. Мета вивчення навчальної дисципліни та результати навчання Метою вивчення навчальної дисципліни є здобуття базових знань, умінь та навиків, розуміння, проектування, програмування та симуляції мікропроцесорних систем на основі мікроконтролерів. Вивчення архітектури і функціонування мікропроцесорних систем, принципів дії основних периферійних вузлів (портів вводу-виводу, таймерів/лічильників, АЦП, інтерфейсів UART, I2C, SPI) мікроконтролерів та застосовування їх для реалізації необхідного функціоналу в проектах на мікроконтролерах. Освоєння на базовому рівні програмування 8-розрядних RISC-мікроконтролерів AVR та плат на їх основі Arduino (UNO, Mega2560), 32-розрядних мікроконтролерів ARM сімейства STM32 (МК STM32F103C8T6, платформа STM32 NUCLEO-F042K6 на МК STM32F042K6, плата STM32F4DISCOVERY (STM32F407G-DISC1) з МК STM32F407VGT6) для введення та виведення дискретних й аналогових сигналів, виконання задач вимірювання, індикації, дискретного керування та регулювання. В результаті вивчення дисципліни, студент повинен знати: 1. Різновиди архітектури мікропроцесорів. Типи, структуру і принципи побудови мікропроцесорних систем. 2. Архітектуру 8-розрядних мікроконтролерів (МК) AVR. 3. Будову і принципи функціонування периферії, інтерфейсів передачі даних мікроконтролерів AVR. 4. Засоби розробки ПЗ для МК AVR і платформи на їх основі Arduino. 5. Архітектуру 32-розрядних мікроконтролерів STM32 ARM Cortex-M. 6. Засоби розробки ПЗ для мікроконтролерів STM32. 7. Операційні системи реального часу для мікроконтролерів.
Завдання: 2.2. Завдання навчальної дисципліни відповідно до освітньої програми Вивчення навчальної дисципліни передбачає формування у здобувачів освіти компетентностей: Загальні компетентності: ІНТ. Здатність розв’язувати складні спеціалізовані задачі та практичні проблеми у галузі комп’ютерних наук або у процесі навчання, що передбачає застосування теорій та методів інформаційних технологій і характеризується комплексністю та невизначеністю умов. ЗК1. Здатність до абстрактного мислення, аналізу та синтезу. ЗК2. Здатність застосовувати знання у практичних ситуаціях. ЗК3. Знання та розуміння предметної області та розуміння професійної діяльності. ЗК6. Здатність вчитися й оволодівати сучасними знаннями. ЗК7. Здатність до пошуку, оброблення та аналізу інформації з різних джерел. ЗК10. Здатність бути критичним і самокритичним. ЗК14. Здатність реалізувати свої права і обов’язки як члена суспільства, усвідомлювати цінності громадянського (вільного демократичного) суспільства та необхідність його сталого розвитку, верховенства права, прав і свобод людини і громадянина в Україні. Фахові компетентності: ФК1. Здатність до математичного формулювання та досліджування неперервних та дискретних математичних моделей, обґрунтовування вибору методів і підходів для розв’язування теоретичних і прикладних задач у галузі комп’ютерних наук, аналізу та інтерпретування. ФК12. Здатність забезпечити організацію обчислювальних процесів в інформаційних системах різного призначення з урахуванням архітектури, конфігурування, показників результативності функціонування операційних систем і системного програмного забезпечення.
Результати навчання: 2.3. Результати навчання відповідно до освітньої програми, методи навчання і викладання, методи оцінювання досягнення результатів навчання В наслідок вивчення навчальної дисципліни студент повинен бути здатним продемонструвати такі результати навчання: 1. Уміння побудувати просту мікропроцесорну систему на основі 8-розрядних мікроконтролерів AVR або 32-розрядних мікроконтролерів STM32. 2. Уміння програмувати периферію мікроконтролера AVR та використовувати її в мікропроцесорних системах. 3. Уміння відлагоджувати вбудоване програмне забезпечення та проводити симуляцію простих мікропроцесорних систем. 4. Уміння використовувати на базовому рівні бібліотеку STM32 HAL для реалізації проектів на мікроконтролерах STM32. 5. Уміння реалізовувати багатозадачність і використовувати об’єкти синхронізації з допомогою FreeRTOS в мікроконтролерних системах. У результаті вивчення навчальної дисципліни здобувач вищої освіти повинен бути здатним продемонструвати такі програмні результати навчання: Результати навчання. ПР13. Володіти мовами системного програмування та методами розробки програм, що взаємодіють з компонентами комп’ютерних систем, знати мережні технології, архітектури комп’ютерних мереж, мати практичні навички технології адміністрування комп’ютерних мереж та їх програмного забезпечення. Методи навчання і викладання. Лекційні та лабораторні заняття – інформаційно- рецептивний метод, репродуктивний метод, евристичний метод. Самостійна робота – репродуктивний метод, дослідницький метод. Методи оцінювання рівня досягнення результатів навчання. Лабораторні роботи – усне або письмове опитування, аналіз на відповідність завданню, самостійність виконання. Іспит: контрольна робота – тестування.
Необхідні обов'язкові попередні та супутні навчальні дисципліни: 2.3. Перелік попередніх та супутніх і наступних навчальних дисциплін. Попередні навчальні дисципліни: 1. Фізика. 2. Алгоритмізація та програмування. 3. Комп’ютерна схемотехніка та архітектура комп’ютерних систем. 4. Операційні системи. Супутні і наступні навчальні дисципліни: 1. Мікропроцесорні системи. 2. Проектування та програмування інтелектуальних систем та пристроїв.
Короткий зміст навчальної програми: 3. Анотація навчальної дисципліни Розглянуто проектування, програмування та симуляцію мікропроцесорних систем на основі мікроконтролерів (МК). Описано різновиди архітектури мікропроцесорів, типи і структуру мікропроцесорних систем. Описано архітектуру 8-розрядних мікроконтролерів AVR і платформу швидкого прототипування на їх основі Arduino. Розглянуто засоби розробки та симуляції для МК AVR і платформи Arduino. Описано програмування периферійних пристроїв МК AVR (портів вводу/виводу, таймерів-лічильників, аналого-цифрового перетворювача, інтерфейсів UART, I2C, SPI) та наведено приклади їх використання в мікроконтролерних проектах (введення та виведення дискретних й аналогових сигналів, виконання задач вимірювання, індикації, управління електродвигунами та AC пристроями). Описано архітектуру 32-розрядних мікроконтролерів STM32 ARM Cortex-M. Розглянуто плати відладки STM32 Nucleo (STM32 NUCLEO-F042K6 на МК STM32F042K6) і STM32 Discovery (STM32F407G-DISC1 на МК STM32F407VGT6). Розглянуто засоби розробки для МК STM32 – (STM32CubeMX, STM32CubeIDE, Keil uVision MDK-ARM). Описано рівень апаратної абстракції (HAL) і бібліотеку STM32 HAL. Розглянуто операційні системи реального часу для мікроконтролерів. Описано архітектуру та API-функції FreeRTOS. Розглянуто синхронізацію задач в FreeRTOS: семафори, м’ютекси, критичні секції, черги повідомлень.
Опис: 4. Опис навчальної дисципліни. 4.1. Лекційні заняття. Тема 1. Знайомство з мікропроцесорними системами. Передмова. Знайомство з сімейством Mega. Загальні відомості. Відмінні риси. Характеристики процесора. Характеристики підсистеми введення/виведення. Периферійні пристрої. Архітектура ядра. Тема 2. Архітектура мікроконтролерів сімейства Mega. Загальні відомості. Організація пам'яті. Память программ. Пам'ять даних. Статичний ОЗП. Регістри загального призначення. Регістри вводу/виводу. Способи адресації пам'яті даних. Енергонезалежна пам'ять даних (EEPROM). Лічильник команд та виконання програми. Функціонування конвеєра. Тема 3. Система команд мікроконтролерів AVR сімейства Mega. Загальні відомості. Операнди. Типи команд. Команди логічних операцій. Команди арифметичних операцій та команди зсуву. Команди бітових операцій. Команди пересилання даних. Команди передачі управління. Команди управління системою. Тема 4. Порти вводу/виводу МК AVR. Виведення цифрових (дискретних) сигналів. Регістри введення/виведення DDRx, PORTx, PINx. Програмування портів на виведення (засвічення світлодіодів, LCD HD44780). Введення (зчитування) цифрових сигналів. Програма опрацювання натиснення кнопок. Тема 5. Послідовний інтерфейс UART МК AVR. Протокол UART. Апаратні регістри інтерфейсу UART в МК AVR. Програмування МК AVR для обміну даними по послідовному інтерфейсу UART. Тема 6. Обробка переривань МК AVR. Джерела переривань. Вектор переривання. Таблиця векторів переривань. Регістри налаштування зовнішніх переривань в МК AVR. Процедура обробки переривання ISR (Interrupt Service Routine). Тема 7. Таймери-лічильники МК AVR. Регістри та прапорці таймерів. Генерування часових затримок, широтно-імпульсна модуляція (PWM), підрахунок і захоплення подій. Опрацювання переривань таймерів. Матрична клавіатура. Управління динамічними світлодіодними індикаторами. Алгоритми та схеми керування електродвигунами. Тема 8. Аналого-цифровий перетворювач МК AVR. Зчитування аналогових сигналів МК. Регістри АЦП. Тема 9. Послідовні синхронні інтерфейси у МК. Інтерфейси TWI (I2C) та SPI. Комунікація МК AVR з давачами, дисплейними модулями по I2C, SPI. Тема 10. Архітектура 32-розрядних мікроконтролерів STM32. STM32 Evaluation Boards. Плати STM32 NUCLEO-F042K6 на МК STM32F042K6, STM32F4DISCOVERY (STM32F407G-DISC1) з МК STM32F407VGT6. Архітектура МК STM32F103C8T6, STM32F407VGT6. Тема 11. Програмування МК STM32. Проектування та розробка ПЗ для мікроконтролерів STM32 в cередовищах STM32CubeMX, STM32CubeIDE, Keil uVision MDK-ARM. Типова структура програми для МК STM32. Бібліотека STM32 HAL. Програмування портів вводу-виводу, АЦП, таймерів, контролера DMA, інтерфейсів. Тема 12. Операційні системи реального часу для мікроконтролерів Атомарні операції. FreeRTOS. API-функції FreeRTOS. Семафори, м’ютекси, критичні секції, черги повідомлень.
Методи та критерії оцінювання: Поточний контроль (40%); письмові звіти, усне опитування, контрольні роботи. Підсумковий контроль (60%, екзамен); письмовий, усне опитування.
Критерії оцінювання результатів навчання: Лабораторні роботи: 40 Екзаменаційна робота: 60 Разом за дисципліну: 100
Порядок та критерії виставляння балів та оцінок: 100–88 балів – («відмінно») виставляється за високий рівень знань (допускаються деякі неточності) навчального матеріалу компонента, що міститься в основних і додаткових рекомендованих літературних джерелах, вміння аналізувати явища, які вивчаються, у їхньому взаємозв’язку і роз витку, чітко, лаконічно, логічно, послідовно відповідати на поставлені запитання, вміння застосовувати теоретичні положення під час розв’язання практичних задач; 87–71 бал – («добре») виставляється за загалом правильне розуміння навчального матеріалу компонента, включаючи розрахунки , аргументовані відповіді на поставлені запитання, які, однак, містять певні (неістотні) недоліки, за вміння застосовувати теоретичні положення під час розв’язання практичних задач; 70 – 50 балів – («задовільно») виставляється за слабкі знання навчального матеріалу компонента, неточні або мало аргументовані відповіді, з порушенням послідовності викладення, за слабке застосування теоретичних положень під час розв’язання практичних задач; 49–26 балів – («не атестований» з можливістю повторного складання семестрового контролю) виставляється за незнання значної частини навчального матеріалу компонента, істотні помилки у відповідях на запитання, невміння застосувати теоретичні положення під час розв’язання практичних задач; 25–00 балів – («незадовільно» з обов’язковим повторним вивченням) виставляється за незнання значної частини навчального матеріалу компонента, істотні помилки у відповідях на запитання, невміння орієнтуватися під час розв’язання практичних задач, незнання основних фундаментальних положень.
Рекомендована література: 8. Рекомендована література Базова 1. Richard Barnett, Larry O’Cull, Sarah Cox. Embedded C Programming and the Atmel AVR, 2nd Edition, Delmar, Cengage Learning, 2007, p. 532. 2. Elliot Williams. Make: AVR Programming. Learning to Write Software for Hardware, Published by Maker Media Inc., 2014, p. 472. 3. Dhananjay V. Gadre. Programming and Customizing the AVR Microcontroller. McGraw-Hill, 2001, p. 337. 4. Steven F. Barrett and Daniel J. Pack. Atmel AVR Microcontroller Primer: Programming and Interfacing, Published by Morgan & Claypool, 2008, p. 180. 5. Новацький А. О. Комп’ютерна електроніка-3. Мікропроцесорні системи. Апаратні засоби мікропроцесорних систем : навч. посіб. / А. О. Новацький. – Київ : НТУУ «КПІ», 2015. 6. Комп’ютерна електроніка: Мікропроцесорні системи: Програмування мікропроцесорних систем: Навчальний посібник для студентів напряму підготовки 6.050201 «Системна інженерія» кафедри Автоматики та управління у технічних системах /Автор: А.О. Новацький– К: НТУУ „КПІ”, 2014. 7. Massimo Banzi. Getting Started with Arduino. – 2nd Edition. O’Really Media Inc., 2011 – p. 130. 8. Donald Norris. Programming with STM32: Getting Started with the Nucleo Board and C/C++, 1st ed., McGraw Hill TAB, 1st ed., 2018, p. 304. 9. Muhammad Ali Mazidi, Shujen Chen, Eshragh Ghaemi. STM32 Arm Programming for Embedded Systems. – MicroDigitalEd, 2018 – p. 378. 10. Brian Amos. Hands-On RTOS with Microcontrollers: Building real-time embedded systems using FreeRTOS, STM32 MCUs, and SEGGER debug tools. – Packt Publishing, 2020 – p. 496. ? Допоміжна 1. Thomas Grace. Programming and Interfacing ATMEL AVR, Published by Cengage Learning PTR, Boston, 2016, p. 272. 2. Joe Pardue. C Programming for Microcontrollers. Featuring ATMEL’s AVR Butterfly and the Free WinAVR Compiler, Published by Smiley Micros 2005, p. 300. 3. Muhammad Ali Mazidi, Sarmad Naimi, Sepehr Naimi. The AVR Microcontroller and Embedded Systems: Using Assembly and C. Pearson Education Limited 2014, Edinburgh Gate Harlow, p. 740. 4. Getting Started with the CodeVisionAVR Extension for Microchip Studio 7, 2012-2023 HP InfoTech S.R.L. 5. Emily Gertz & Patrick Di Justo. Environmental Monitoring with Arduino. Building Simple Devices to Collect Data About the World Around Us. Published by O’Reilly Media Inc., 2012. – p. 96. 6. Jonathan Oxer and Hugh Blemings. Practical Arduino: Cool Projects for Open Source Hardware. - Springer-Verlag New York , 2009 - p. 445. 7. Building Simple Devices to Collect Data About the World Around Us. – Published by O’Really Media Inc., 2012 – p. 96. 8. Joe Padrue. C Programming for microcontrollers. 2005. – 300 с. 9. Carmine Noviello. Mastering STM32 - Second Edition. A step-by-step guide to the most complete ARM Cortex-M platform, using the official STM32Cube development environment – Lean Publishing, 2018 – p. 852. 10. Majid Pakdel. Advanced Programming with STM32 Microcontrollers: Master the software tools behind the STM32 microcontroller. – Elektor Verlag, 2020 – p. 215. 11. Brown Geoffrey. Discovering the STM32 Microcontroller. 2016, p. 244. 12. Agus Kurniawan. Getting Started with STM32 Nucleo Development, PE Press, 1st ed., 2015 – p. 172. 13. Muhammad Ali Mazidi, Shujen Chen, Misagh Salmanzadeh, Nasim Yazdani. STM32F0 Arm Cortex M0 Programming for Embedded Systems: Using C Language with STM32F0 Nucleo Board. – MicroDigitalEd Books, 2023 – p. 351. 14. Sepehr Naimi, Sarmad Naimi, Muhammad Ali Mazidi. The STM32F103 Arm Microcontroller and Embedded Systems: Using Assembly and C. – Microdigitaled, 2020 – p. 542. 15. Dogan Ibrahim. Nucleo Boards Programming with the STM32CubeIDE: Hands-on in more than 50 projects. – Elektor Verlag, 2021 – p. 498. 9. Інформаційні ресурси 1. Електронні ресурси з навчальними матеріалами по Arduino: https://www.arduino.cc/en/Tutorial/HomePage, https://www.tutorialspoint.com¬/arduino/index.htm, https://alexgyver.ru/arduino_lessons/, https://www.program¬mingelectronics.com/tutorial-3-arduino-ide-and-sketch-overview/, https://www.¬javatpoint.com/arduino. 2. Електронний ресурс на Proteus VSM: https://www.labcenter.com/downloads/. 3. Середовище розробки Arduino IDE. Електронний ресурс: https://www.arduino.cc/en/Main/Software. 4. Електронні навчальні матеріали по мікроконтролерах STM32: (STM32 Programming Tutorials & Projects): https://www.st.com/content/st_com/¬en/support/¬learning/stm32-education.html, https://deepbluembedded.com/stm32-arm-program¬ming-tutorials/, https://wiki.st.com/stm32mcu/-wiki/STM32Step¬ByStep:¬Getting_started¬_with_STM32_:_STM32_step_by_step, https://controllers-tech.com/stm32/, https://stm32-base.org/guides/getting-started.html, https://circuit¬digest.com/stm32-projects-and-tutorials. 5. Електронні ресурси на платформу STM32 NUCLEO-F042K6: https://www.st.¬com/en/evaluation-tools/nucleo-f042k6.html, https://os.mbed.com/platforms/ST-Nucleo-F042K6/. 6. Електронний ресурс на МК STM32F042K6: https://www.st.com/en/micro¬controllers-microprocessors/stm32f042k6.html. 7. Електронний ресурс на платформу STM32 Blue Pill: https://erc-bpgc.github.io/handbook/electronics/Development_Boards/STM32/, https://rarecomponents.com/store/1562. 8. Електронний ресурс на МК STM32F103C8T6: https://www.st.com/en/micro¬controllers-microprocessors/stm32f103c8.html, https://www.alldatasheet.com. 9. Програмне забезпечення STM32CubeMX. Електронний ресурс: https://www.st.-com/en/development-tools/stm32cubemx.html. 10. Програмне забезпечення STM32CubeIDE. Електронний ресурс: https://www.st.-com/en/development-tools/stm32cubeide.html. 11. User manual (UM1850) з описом HAL API і низькорівневих драйверів для МК STM32F1. – STMicroelectronics, 2020 – p. 1208. 12. User manual (UM1785) з описом HAL API і низькорівневих драйверів для МК STM32F0. – STMicroelectronics, 2020 – p. 1367. 13. Електронний ресурс на FreeRTOS: https://www.freertos.org/. 14. Електронний ресурс datasheet по давачу тиску BMP180: https://cdn-shop.adafruit.com/datasheets/BST-BMP180-DS000-09.pdf. 15. Електронні ресурси по давачу вологості DHT22: https://media.digikey.com/pdf-/Data%20Sheets/DFRobot%20PDFs/SEN0137_Web.pdf, http://www.produktinfo-.conrad.com/datenblaetter/1600000-1699999/001616244-an-01-en-TEMP__SENS-__MOD__DHT_22_ST1173.pdf 16. Електронний ресурс: http://pdf1.alldatasheet.com/datasheet-pdf/view/5178/MOTOROLA/MPX4115.html 17. Електронний ресурс з datasheet на давач DS18B20: http://pdf1.alldatasheet.com¬/datasheet-pdf/view/58557/DALLAS/DS18B20.html. 18. Електронний ресурс datasheet на давач LM35: https://www.ti.com/lit/¬ds/symlink/lm35.pdf, https://www.electroschematics.com/wp-content/uploads/¬2010/02/LM35-DATASHEET.pdf. 19. Електронні ресурси по давачі LM35: https://www.makerguides.com/lm35-arduino-tutorial/, https://lastminuteengineers.com/lm35-temperature-sensor-arduino-tutorial/, https://arduinogetstarted.com/tutorials/arduino-lm35-temperature-sensor. 20. Електронний ресурс на datasheet по мікросхемі MAX7219: https://www.analog.com/media/en/technical-documentation/data-sheets/max7219-max7221.pdf, https://www.sparkfun.com/datasheets/¬Components/General/COM-09622-MAX7219-MAX7221.pdf. 21. Електронні ресурси по використанню MAX7219 матричного світлодіодного дисплею з Arduino: https://www.circuitgeeks.com/arduino-max7219-led-matrix-display/, https://circuitdigest.com/microcontroller-projects/interfacing-max7219-led-dot-matrix-display-with-arduino, https://www.instructables.com/User-Manual-MAX7219-Dot-Matrix-4-in-1/, https://lastminuteengineers.com/max7219-dot-matrix-arduino-tutorial/, https://projecthub.arduino.cc/mdraber/0c417a04-ec3f-405a-a383-b2d66e889e7a, https://www.makerguides.com/max7219-led-dot-matrix-display-arduino-tutorial/, https://howtomechatronics.com/tutorials/arduino/8x8-led-matrix-max7219-tutorial-scrolling-text-android-control-via-bluetooth/.
Уніфікований додаток: Національний університет «Львівська політехніка» забезпечує реалізацію права осіб з інвалідністю на здобуття вищої освіти. Інклюзивні освітні послуги надає Служба доступності до можливостей навчання «Без обмежень», метою діяльності якої є забезпечення постійного індивідуального супроводу навчального процесу студентів з інвалідністю та хронічними захворюваннями. Важливим інструментом імплементації інклюзивної освітньої політики в Університеті є Програма підвищення кваліфікації науково-педагогічних працівників та навчально-допоміжного персоналу у сфері соціальної інклюзії та інклюзивної освіти. Звертатися за адресою: вул. Карпінського, 2/4, І-й н.к., кімн. 112 E-mail: nolimits@lpnu.ua Websites: https://lpnu.ua/nolimits https://lpnu.ua/integration
Академічна доброчесність: Політика щодо академічної доброчесності учасників освітнього процесу формується на основі дотримання принципів академічної доброчесності з урахуванням норм «Положення про академічну доброчесність у Національному університеті «Львівська політехніка» (затверджене вченою радою університету від 20.06.2017 р., протокол № 35).