From f37ff07e26a46aba0f973fbed89315b1d3a83b7c Mon Sep 17 00:00:00 2001 From: Ivan Stefanov Date: Sat, 30 Oct 2021 02:47:36 +0300 Subject: [PATCH] Upload lesson plans 1,2,6,7 New Lesson plans in markdown with provided template. Remove old text plans. --- Lesson_Plans/Lesson1.txt | 11 ---- Lesson_Plans/Lesson2.txt | 40 -------------- Lesson_Plans/Lesson6.txt | 64 ---------------------- Lesson_Plans/Lesson7.txt | 33 ------------ Lesson_Plans/Lesson_1.md | 17 ++++++ Lesson_Plans/Lesson_2.md | 42 +++++++++++++++ Lesson_Plans/Lesson_6.md | 67 ++++++++++++++++++++++++ Lesson_Plans/{Lesson7.md => Lesson_7.md} | 0 Lesson_Plans/Lesson_Template.md | 23 ++++++++ 9 files changed, 149 insertions(+), 148 deletions(-) delete mode 100644 Lesson_Plans/Lesson1.txt delete mode 100644 Lesson_Plans/Lesson2.txt delete mode 100644 Lesson_Plans/Lesson6.txt delete mode 100644 Lesson_Plans/Lesson7.txt create mode 100644 Lesson_Plans/Lesson_1.md create mode 100644 Lesson_Plans/Lesson_2.md create mode 100644 Lesson_Plans/Lesson_6.md rename Lesson_Plans/{Lesson7.md => Lesson_7.md} (100%) create mode 100644 Lesson_Plans/Lesson_Template.md diff --git a/Lesson_Plans/Lesson1.txt b/Lesson_Plans/Lesson1.txt deleted file mode 100644 index 800d6ed..0000000 --- a/Lesson_Plans/Lesson1.txt +++ /dev/null @@ -1,11 +0,0 @@ ---- Тема 1 --- - -Как ще протичат часовете по ПВМКС -Как ще се оформят оценките -Какви учебни материали ще се използват - -Какво е ВМКС -Документация на ATMega328P (https://gitlab.com/tues-embedded/vmks/-/blob/master/Datasheets/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf) -Преговор на управление на цифрови входове и изходи -Как работят портовете на микроконтролера -Разглеждане на вътрешна схема на извод от порт (страница 59, фигура 13-2 от документацията на микроконтролера) \ No newline at end of file diff --git a/Lesson_Plans/Lesson2.txt b/Lesson_Plans/Lesson2.txt deleted file mode 100644 index ac8afc5..0000000 --- a/Lesson_Plans/Lesson2.txt +++ /dev/null @@ -1,40 +0,0 @@ ---- Тема 2 --- - -Какво е аналогов/цифров сигнал -(https://www.embedded.com/introduction-to-pulse-width-modulation/) -Какво е непрекъснат/прекъснат(дискретен) сигнал -Теорема на Найкуист -(https://www.youtube.com/watch?v=HicZcgdGxZY) - -Резисторен делител/суматор на напрежение -Сравнител - -DAC - R-2R (https://www.youtube.com/watch?v=Pc1aFloxSMw) - Binary weighted (https://www.youtube.com/watch?v=PoOm_G4s1dE) - -Observed vs Input Frequency -Aliasing and Oversampling -(https://www.youtube.com/watch?v=91PKZllbgds&list=PLbqhA-NKGP6B6V_AiS-jbvSzdd7nbwwCw&index=4) - -ADC - Parallel (https://www.youtube.com/watch?v=NASkjo7s8f4) - Counter (https://www.youtube.com/watch?v=4zwtA2pG6Vc) - Successive Approximation (https://www.youtube.com/watch?v=h0CGtr4SC9s) - Pipeline (https://www.youtube.com/watch?v=5nNKRLQ0WCE) - Sigma Delta[още се нарича Charge Balancing ADC] (https://www.youtube.com/watch?v=NrkFd7h6R2Y) - -За който му е интересно може да разгледа тези линкове има добри обяснения на нещата -и има допълнителни неща за който му е интересно да научи повече за обработката на сигнали: - -ADC серия: - https://www.youtube.com/watch?v=Sh4pI_kBNkk ==> основни параметри и няколко вида АЦП - https://www.youtube.com/watch?v=AnZh-6Lp7wc ==> dual-slope и delta-sigma - https://www.youtube.com/watch?v=x7oPVWLD59Y ==> sigma-delta и намаляване на шума -Tracking ADC (https://www.youtube.com/watch?v=MMQwa416Cmo) -Slope ADC - Single/Dual (https://www.youtube.com/watch?v=2gF_nfaBV_0) -Multi-Slope ADC (в интернет има информация за него но няма читаво видео по темата) -Грешки в АЦП => https://www.youtube.com/watch?v=G7jkCyGipc8 -Нелинейност в АЦП => https://www.youtube.com/watch?v=TTO35V3XgiU -Dithering / Noise Shaping (7,8,9) и обща информация => https://www.youtube.com/playlist?list=PLbqhA-NKGP6B6V_AiS-jbvSzdd7nbwwCw -Тук има много неща който може да са ви полезни => https://www.youtube.com/c/ALLABOUTELECTRONICS/videos \ No newline at end of file diff --git a/Lesson_Plans/Lesson6.txt b/Lesson_Plans/Lesson6.txt deleted file mode 100644 index ed5b03e..0000000 --- a/Lesson_Plans/Lesson6.txt +++ /dev/null @@ -1,64 +0,0 @@ ---- Тема 6 --- - -Преговор - Ядро - Регистри на ядрото - Задача мигащ светодиод с регистри - GitLab Repo -> Examples/Register_Blink - Прекъсвания теория - Външни прекъсвания (https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/) - Задача бутон да сменя състоянието на светодиод - GitLab Repo -> Examples/ - Реално приложение (веднага сменя състоянието на светодиода но извежда съобщение когато успее) -> External_interrupt - Прост пример за toggle на светодиод с бутон -> EXTI_Demo - Пример за toggle на светодиод с бутон (като EXTI_Demo но само с регистри) -> EXTI0_Register_Demo -RTuinoOS пример за context switching (https://github.com/PeterVranken/RTuinOS) -FreeRTOS пример за реална програма (мигащ светодиод и четене на потенциометър) -Таймери - Какво представляват - Как работят - -Допълнително: -Как се използва ШИМ сигнал с analogWrite -> https://www.arduino.cc/en/Tutorial/Foundations/PWM -Разликата между проене нагоре/надолу/двете -> https://www.mathworks.com/help/physmod/sps/ref/pwmgenerator.html -Тук има документация за delay функциите(и не само) който са от самия пакет библиотеки на компилатора (avr-gcc) - -> https://www.nongnu.org/avr-libc/user-manual/group__util__delay.html - - -Всяка ардуино програма има: - -//#include "Arduino.h" - -/* -void main() -{ - init(); - setup(); - - while(1) - { - loop(); - checkUART(); - } -} -*/ - -Тези файлове може да намерите и разгледате в GitLab в папка Other Useful Files -или направо от файловете на вашия компютър (пътищата са примерни за Windows x64 за Linux вижте в интернет къде са): -..\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -..\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\cores\arduino - - -/* -void _delay_ms(uint16_t i) -{ - i *= 4000; - for(; i > 0 ; i++){} -} -*/ - -Това което ви показах в час (горното) беше опростен пример за delay() функцията показващ как тя работи, -а истинските функции за изчакване може да намерите във файлове delay.h и delay_basic.h -(разликата е че са частично на асемблер и има сметки за броя цикли така че да може да подавате променливи) -в директория на Arduino IDE-то (пътищата са примерни за Windows x64 за Linux вижте в интернет къде са): -..\Program Files (x86)\Arduino\hardware\tools\avr\avr\include\util -..\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.8.1-arduino5\avr\include\util -..\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\util \ No newline at end of file diff --git a/Lesson_Plans/Lesson7.txt b/Lesson_Plans/Lesson7.txt deleted file mode 100644 index 94462c7..0000000 --- a/Lesson_Plans/Lesson7.txt +++ /dev/null @@ -1,33 +0,0 @@ -#--- Тема 7 --- - -## План на часа -Напомняне за примерите в GitLab и плановете от часовете който качвам там -Таймери - Как работи таймера (разглеждане на блоковата схема на Timer/Counter 1) - Режими на работа (За какво се използват) - Настройка (избор на режим, задаване на режима чрез запис в регистрите и изчисляване на параметри) - Примерни задачи - - мигащ светодиод - Mode 14 Fast PWM 2Hz 25% - - мигащ светодиод - Mode 14 Fast PWM 2Hz 80% - - мигащ светодиод - Mode 14 Fast PWM 10kHz 25% - -С 12Б клас също(12А може да го видите в последните 10-15мин на записа от часа с 12Б клас на 29.10.2021): -Демонстрация на получения 10kHz сигнал на осцилоскоп и логически анализатор -Сравняване на заданието с получените параметри на сигнала - -### Допълнително: -Тук е обяснен как работи CTC режима който ние няма да използваме, но голяма част от обясненията и най-вече примерния код с който се подкарва таймера са много близки до това което правим в час и ако го разгледате няма да навреди: -https://maxembedded.com/2011/07/avr-timers-ctc-mode/ -https://onlinedocs.microchip.com/pr/GUID-93DE33AC-A8E1-4DD9-BDA3-C76C7CB80969-en-US-2/index.html?GUID-669CCBF6-D4FD-4E1D-AF92-62E9914559AA -(тук пише как работи Prescaler-а ако някой го интересува по-подробно) - -Timer Calculators Online: -https://eleccelerator.com/avr-timer-calculator/ (това е калкулатора който исках да ви покажа) -https://www.easycalculation.com/engineering/electrical/avr-timer-calculator.php -https://weirdloop.com/2019/07/11/avr-timer-calculator/ -https://www.arduinoslovakia.eu/application/timer-calculator -https://timer-interrupt-calculator.simsso.de/ -https://sayanseth.github.io/AVR-Clock-Calculator/ -https://www.mikroe.com/timer-calculator -(на последния линк долу има и разни други интересни програмки, -като например за рисуване на символи за custom LCD fonts) \ No newline at end of file diff --git a/Lesson_Plans/Lesson_1.md b/Lesson_Plans/Lesson_1.md new file mode 100644 index 0000000..bcdb2e7 --- /dev/null +++ b/Lesson_Plans/Lesson_1.md @@ -0,0 +1,17 @@ +# --- Тема 1 --- + +## План на часа +- Как ще протичат часовете по ПВМКС +- Как ще се оформят оценките +- Какви учебни материали ще се използват +- Какво е ВМКС +- [Документация на ATMega328P](https://gitlab.com/tues-embedded/vmks/-/blob/master/Datasheets/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf) +- Преговор на управление на цифрови входове и изходи +- Как работят портовете на микроконтролера +- Разглеждане на вътрешна схема на извод от порт (страница 59, фигура 13-2 от документацията на микроконтролера) + +----- + +### Допълнително: + +[ВМКС Хранилище в GitLab](https://gitlab.com/tues-embedded/vmks) \ No newline at end of file diff --git a/Lesson_Plans/Lesson_2.md b/Lesson_Plans/Lesson_2.md new file mode 100644 index 0000000..a64d213 --- /dev/null +++ b/Lesson_Plans/Lesson_2.md @@ -0,0 +1,42 @@ +# --- Тема 2 --- + +## План на часа +- [Какво е аналогов/цифров сигнал](https://www.embedded.com/introduction-to-pulse-width-modulation/) +- Какво е непрекъснат/прекъснат(дискретен) сигнал +- [Теорема на Найкуист](https://www.youtube.com/watch?v=HicZcgdGxZY) + +- Резисторен делител/суматор на напрежение +- Сравнител +- Цифрово-Аналогов Преобразувател ЦАП (Digital to Analog Converter DAC) + * [R-2R](https://www.youtube.com/watch?v=Pc1aFloxSMw) + * [Binary weighted](https://www.youtube.com/watch?v=PoOm_G4s1dE) + +- Observed vs Input Frequency +- [Aliasing and Oversampling](https://www.youtube.com/watch?v=91PKZllbgds&list=PLbqhA-NKGP6B6V_AiS-jbvSzdd7nbwwCw&index=4) + +- Аналогово-Цифров Преобразувател АЦП (Analog to Digital Converter ADC) + * [Parallel](https://www.youtube.com/watch?v=NASkjo7s8f4) + * [Counter](https://www.youtube.com/watch?v=4zwtA2pG6Vc) + * [Successive Approximation](https://www.youtube.com/watch?v=h0CGtr4SC9s) + * [Pipeline](https://www.youtube.com/watch?v=5nNKRLQ0WCE) + * [Sigma Delta(още се нарича Charge Balancing ADC)](https://www.youtube.com/watch?v=NrkFd7h6R2Y) + + +Бележки + +----- + +### Допълнително: +За който му е интересно може да разгледа тези линкове има добри обяснения на нещата и има допълнителни неща за който му е интересно да научи повече за обработката на сигнали: + +ADC серия: + https://www.youtube.com/watch?v=Sh4pI_kBNkk ==> основни параметри и няколко вида АЦП + https://www.youtube.com/watch?v=AnZh-6Lp7wc ==> dual-slope и delta-sigma + https://www.youtube.com/watch?v=x7oPVWLD59Y ==> sigma-delta и намаляване на шума +[Tracking ADC](https://www.youtube.com/watch?v=MMQwa416Cmo) +[Slope ADC - Single/Dual](https://www.youtube.com/watch?v=2gF_nfaBV_0) +[Multi-Slope ADC](в интернет има информация за него но няма читаво видео по темата) +[Грешки в АЦП](https://www.youtube.com/watch?v=G7jkCyGipc8) +[Нелинейност в АЦП](https://www.youtube.com/watch?v=TTO35V3XgiU) +Dithering / Noise Shaping (7,8,9) и обща информация => https://www.youtube.com/playlist?list=PLbqhA-NKGP6B6V_AiS-jbvSzdd7nbwwCw +Тук има много неща който може да са ви полезни => https://www.youtube.com/c/ALLABOUTELECTRONICS/videos \ No newline at end of file diff --git a/Lesson_Plans/Lesson_6.md b/Lesson_Plans/Lesson_6.md new file mode 100644 index 0000000..c916702 --- /dev/null +++ b/Lesson_Plans/Lesson_6.md @@ -0,0 +1,67 @@ +# --- Тема 6 --- + +## План на часа +- Преговор + * Ядро + * Регистри на ядрото + * Задача мигащ светодиод с регистри - GitLab Repo -> Examples/Register_Blink + * Прекъсвания теория + * [Външни прекъсвания](https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/) + * Задача бутон да сменя състоянието на светодиод - GitLab Repo -> Examples/ + - Реално приложение (веднага сменя състоянието на светодиода но извежда съобщение когато успее) -> External_interrupt + - Прост пример за toggle на светодиод с бутон -> EXTI_Demo + - Пример за toggle на светодиод с бутон (като EXTI_Demo но само с регистри) -> EXTI0_Register_Demo +- RTuinoOS пример за context switching (https://github.com/PeterVranken/RTuinOS) +- FreeRTOS пример за реална програма (мигащ светодиод и четене на потенциометър) +- Таймери + * Какво представляват + * Как работят + +Бележки + +----- + +### Допълнително: +Как се използва ШИМ сигнал с analogWrite -> https://www.arduino.cc/en/Tutorial/Foundations/PWM +Разликата между проене нагоре/надолу/двете -> https://www.mathworks.com/help/physmod/sps/ref/pwmgenerator.html +Тук има документация за delay функциите(и не само) който са от самия пакет библиотеки на компилатора (avr-gcc) + -> https://www.nongnu.org/avr-libc/user-manual/group__util__delay.html + + +Всяка ардуино програма има `main.c` файл в който опростено изглежда така: +```C++ +#include "Arduino.h" + + +void main() +{ + init(); + setup(); + + while(1) + { + loop(); + checkUART(); + } +} +``` + +Тези файлове може да намерите и разгледате в GitLab в папка Other Useful Files +или направо от файловете на вашия компютър (пътищата са примерни за Windows x64 за Linux вижте в интернет къде са): +`..\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino` +`..\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.3\cores\arduino` + + +```C++ +void _delay_ms(uint16_t i) +{ + i *= 4000; + for(; i > 0 ; i++){} +} +``` + +Това което ви показах в час (горното) беше опростен пример за `delay()` функцията показващ как тя работи, а истинските функции за изчакване може да намерите във файлове `delay.h` и `delay_basic.h` в директория на Arduino IDE-то (пътищата са примерни за Windows x64, за Linux вижте в интернет къде са): +`..\Program Files (x86)\Arduino\hardware\tools\avr\avr\include\util` +`..\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.8.1-arduino5\avr\include\util` +`..\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\util` +Разликата е че са частично на асемблер и има сметки за броя цикли, така че да може да подавате променливи. \ No newline at end of file diff --git a/Lesson_Plans/Lesson7.md b/Lesson_Plans/Lesson_7.md similarity index 100% rename from Lesson_Plans/Lesson7.md rename to Lesson_Plans/Lesson_7.md diff --git a/Lesson_Plans/Lesson_Template.md b/Lesson_Plans/Lesson_Template.md new file mode 100644 index 0000000..9a884bb --- /dev/null +++ b/Lesson_Plans/Lesson_Template.md @@ -0,0 +1,23 @@ +# --- Тема X --- + +## План на часа +- Преговор... +- Тема 2 + * подтеми + * Примерни задачи + 1. задача + +Бележки + +----- + +### Допълнително: + +[Някакъв линк](gitlab.com) + +директория `\Program Files (x86)\...` + +```C++ + // Some code +``` + -- 2.39.2