AplTVY3
(→Aktuálně:) |
(→wokwi) |
||
(Není zobrazeno 137 mezilehlých verzí od 1 uživatele.) | |||
Řádka 1: | Řádka 1: | ||
− | {| class="toccolours" cellpadding="5" style="float: right; clear: right; margin: 0 0 1em 1em; font-size: 85%; width: | + | [[Soubor:D10_AplTVYII_s.jpg|thumb|left|AplTVY]] |
− | | colspan="2" style="text-align: center; font-size: larger; background-color: lightgreen;" | ''''' | + | |
+ | {| class="toccolours" cellpadding="5" style="float: right; clear: right; margin: 0 0 1em 1em; font-size: 85%; width: 35em" | ||
+ | | colspan="2" style="text-align: center; font-size: larger; background-color: lightgreen;" | '''''Tématický plán''''' | ||
|- | |- | ||
− | |||
− | |||
− | |||
− | |||
| | | | ||
− | + | T0 - BOZP – řády odborných učeben | |
− | + | T1 – Popis vývoje mikropočítačové aplikace | |
− | + | T2 – V/v brány, jejich vlastnosti a využití | |
− | + | T3 – Tvorba programu pro výstupní moduly | |
+ | T4 – Vývoj mikroprocesorové aplikace – LED | ||
+ | T5 – Časové zpoždění | ||
+ | T6 – Vstupní moduly – tvorba programu pro vstupní moduly | ||
+ | T7 – Vývoj mikroprocesorové aplikace – test vstupů | ||
+ | T8 – Programování aplikace | ||
+ | T9 – Naprogramování mikropočítače | ||
+ | T10 – Vývoj mikroprocesorové aplikace – čidlo světla | ||
+ | T11 – Vývoj mikroprocesorové aplikace – 7 segment | ||
+ | T12 – Vývoj mikroprocesorové aplikace – motory | ||
+ | T13 – Vývoj mikroprocesorové aplikace – čidlo teploty | ||
+ | T14 - Opakování | ||
− | | | + | [[Soubor:PovinnaPrace_NavrhMIT_aplikace.png|150px|link=PP_-_Návrh_MIT_aplikace]] |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | [[Soubor:PovinnaPrace_VyvojMIT_aplikace.png|50px|link=Vývoj MIT aplikace]] | |
− | + | |} | |
− | + | ||
− | + | ||
− | |- style=" | + | {| class="toccolours" cellpadding="5" style="float: right; clear: right; margin: 0 0 1em 1em; font-size: 85%; width: 35em" |
− | |''' | + | | colspan="2" style="text-align: center; font-size: larger; background-color: lightgreen;" | '''''Otázky k opakování''''' |
− | || | + | |- |
− | + | | | |
+ | # - Nakreslete vývojový diagram pro log. funkce NOT, AND, OR, XOR | ||
+ | # - Nakreslete vývojový diagram pro log. funkci n=3 y = 1 pro i = {1,3,6,7 (4)} | ||
+ | # - Nakreslete vývojový diagram pro log. funkci n=4 y = 1 pro i = {1,2,5,6,12,13 (4,11,15)} | ||
+ | # - Naprogramujte MCU pro blikání LED (blikačka) | ||
+ | # - Naprogramujte MCU pro ovládání akustického měniče (bzučák) | ||
+ | # - Modifikujte program pro MCU ovládající křižovatku | ||
+ | # - Vyberte vhodného dodavatel elektronických součástek (R,C,D,IO) | ||
+ | # - Analyzujte zapojení s MCU na UNi desce [[VYV50]] | ||
+ | # - Vyzkoušejte program pro ovládání 7segmentovky | ||
+ | # - Vyzkoušejte program pro ovládání ss motoru a krokového motoru | ||
− | + | |} | |
− | |- style=" | + | {| class="toccolours" cellpadding="5" style="float: right; clear: right; margin: 0 0 1em 1em; font-size: 85%; width: 35em" |
+ | | colspan="2" style="text-align: center; font-size: larger; background-color: lightgreen;" | '''''Domácí úkoly 2021-22:''''' | ||
+ | |- | ||
+ | | | ||
− | + | 22.2 | |
− | + | dle návodu na http://wiki.sps-pi.cz/index.php/IBM-IoT#postup si nainstalujte v cloudu nebo lokálně Node-RED. Odevzdejte výsledné PrtScr dle vzoru v příloze (samozřejmě s vašimi údaji "d:org:device_type:device_ID"; např.: "d:3yaaz5:wemos:metostanice"; | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | |- style=" | + | 1.3. V [[Tinkercad]]u vyzkoušejte postupně zapojení s LED, Button, LDR, 18B20, TMP35 ......tak, aby zjištěná hodnota výstupní proměnné nebo její stav byla vyposílána na seriový port (monitor). Lze otestovat i s [[ESP8266]] v [[Wokwi]]. [https://youtu.be/L1A_yhO9Fo4 YT: Arduino Online Simulator Free Arduino and ESP32 by Wokwi ] Odevzdejte všechny výsledné PrtScr. |
− | | ''' | + | |
+ | |||
+ | |} | ||
+ | |||
+ | {| class="toccolours" cellpadding="5" style="float: right; clear: right; margin: 0 0 1em 1em; font-size: 85%; width: 35em" | ||
+ | | colspan="2" style="text-align: center; font-size: larger; background-color: lightgreen;" | '''''Domácí úkoly 2020-21:''''' | ||
+ | |- | ||
| | | | ||
− | |||
− | |- style=" | + | 14.9. |
− | |''' | + | Dohledat SP z předmětů HW a PRAI, přinést sešit |
+ | |||
+ | od pondělí 12.10.2020 zítra (a příští týden skupina PSP) se koná dle rozvrhu prezenční výuka předmětu "praktická cvičení" v PC učebně VYT5. Kdyby jste se (z nějakých důvodů) nemohli dostavit, budu rád, když se zúčastníte výuky alespoň distančně a budete mít na svých PC nainstalován program Deeds (testování seminární práce na návrh SLO) a IDE (vývojové prostředí) pro tvorbu programu v JSA (jazyk symbolických adres - assembler) procesoru 8051 (např. MCU 8051 IDE, EdSIM51, Ride..............) a pro skupinu PSP také IDE pro ATmega328 (je v Arduinu). Výuka poběží tedy paralelně a do třídní knihy zapíši absenci jen těm, kteří nebudu ani prezenčně (určitě upřednostňuji) a ani distančně na vyučování. | ||
+ | |||
+ | |||
+ | 7.12. | ||
+ | V odpovědi odevzdejte PrtScr ukázky nepřímého adresování v libovolném IDE, t.j úkolem je uskutečnit zápis dat do místa v RAM, kde nelze použít přímé adresování. V případě použití MCU8051IDE je úkolem uložit číslo na adresu 80h. | ||
+ | |||
+ | 21.12. | ||
+ | Nakreslit blok. schéma CPU s jádrem AVR včetně | ||
+ | popisu funkce jednotlivých částí (obr. ve stylu jako v příloze). Pozor CPU ne MCU! | ||
+ | pozn. DÚ jen pro ty, kteří nejsou spokojeni se známkou z dnešního testu. | ||
+ | |||
+ | 18.1. | ||
+ | V odpovědi odevzdejte PrtScr ukázky práce s aritmetickou operací ADD. Příklady: -84 +60, -84+100, 84+100, -84-100 atd. Sledujte hlavně C a OV. | ||
+ | |||
+ | 22.2. | ||
+ | odevzdejte minimálně jedno řešení z úkolů: | ||
+ | 1) vyzkoušení log. funkcí v asm (ANL, ORL, XRL, CPL) - natočit videoscreen testování programu (MT, OBS, Bandicam) | ||
+ | 2) bin čítač s omezením do 500us (videscreen) | ||
+ | 3) desítkový čítač 0->9 (videscreen) | ||
+ | 4) desítkový čítač 00 -> 99 (videscreen) | ||
+ | 5) modifikované *.ino pro DHT11 + json | ||
+ | 6) přidané zařízení (PrtScr) | ||
+ | 7) nastavení CloudFoundry apps/services (PrtScr) | ||
+ | 8) nastavení Node-Red pro DHT11 | ||
+ | |||
+ | 15.3.Test-PRA3rPSPv01 | ||
+ | |||
+ | 31.3.Odevzdejte řešení ukazující využití zpoždění s dvěma (alt. 3mi) registry v IDE pro MCU ATmeg328 | ||
+ | |||
+ | 7.6.2021: program v asm pro blikání LED o f = 5Hz. | ||
+ | |||
+ | 21.6.2021: program v asm, kde po zmáčknutí tlačítka připojené na pin 2. LED na pinu 13 3x zabliká a opět čeká na aktivaci od tlačítka | ||
+ | |||
+ | |||
+ | SW: MS Teams, Deeds, MCU 8051 IDE, zdroj info: http://wiki.sps-pi.cz/AplTVY3 | ||
+ | |||
+ | Pozn.: [[Domácí úkoly|Jak odevzdávat domácí úkoly]] | ||
+ | |} | ||
+ | |||
+ | |||
+ | {| class="toccolours" cellpadding="5" style="float: right; clear: right; margin: 0 0 1em 1em; font-size: 85%; width: 35em" | ||
+ | | colspan="2" style="text-align: center; font-size: larger; background-color: lightgreen;" | '''''Domácí úkoly 2019-20:''''' | ||
+ | |- | ||
| | | | ||
− | |||
− | |||
− | |||
+ | 1. Postupně v aplikaci [https://www.tinkercad.com/learn/project-gallery;collectionId=OMOZACHJ9IR8LRE TinkerCad] vyzkoušejte úkoly tak, aby jste zvládli (např. u praktické maturity) zapojit na [[KNP]] a naprogramovat mikroprocesorovou aplikaci s LED, RGB, tlačítkem, potenciometrem, PIR, LDR, čidle teploty, PING, servem, krokovým motorem atd. Každý úspěšný experiment zpracujte v postupně rozšiřující dokumentaci. Mikroprocesor lze použit: [[Arduino]], [[PICAXE]], [[8051]] apod. | ||
+ | |||
+ | [[Soubor:LearnArduino.png|link=https://1url.cz/kzWKG]] | ||
+ | |||
+ | 2. Podívejte se na výsledky letošního školního a krajského kola SOČ [[SOČ 2020]] | ||
+ | 3. Do odpovědi na tento úkol zkopírujte link na video prezentaci SOČ práce, která vás nejvíce zaujala. | ||
+ | Pozn.: Soutěží se v 18ti vědních oborech. Letos museli soutěžící natočit video o své práci a umístit na YT. (vyhledávací slova: Středoškolská odborná činnost a číslo oboru (10, 18 ....)) . Např. pro obor Elektrotechnika: Středoškolská odborná činnost 10 (https://bit.ly/2yaQ9m7) nebo pro obor Informatika: Středoškolská odborná činnost 18 (https://bit.ly/2Sj8wME) | ||
+ | 4. Nakreslete blokové schéma mikroprocesorové aplikace, kterou dokážete sestavit na KNP a naprogramovat (MCU, vstupní čidla, výstupní moduly). Zde v odpovědi odevzdejte PrtScr. | ||
|} | |} | ||
− | |||
− | |||
− | + | ||
+ | |||
+ | |||
+ | <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> | ||
+ | |||
+ | == Cvičení == | ||
+ | |||
+ | {{#widget:YouTube|id=8yAOTUY9t10|height=270|width=360|Popis|right}} | ||
+ | |||
+ | --------------------------------------------------------------------------------------------------------------- | ||
<Gallery> | <Gallery> | ||
− | Soubor: | + | Soubor:Stabilizovany_zdroj_+5V.jpg|Stabilizovaný zdroj +5V |
− | Soubor: | + | Soubor:PICAXE-vyv-diagram_01.jpg|[[PICAXE]] - Blik |
− | Soubor: | + | Soubor:PICAXE-vyv-diagram.jpg|2x IN, 2 x OUT |
− | Soubor: | + | </gallery> |
− | Soubor: | + | |
+ | === [https://www.tinkercad.com TinkerCAD] === | ||
+ | |||
+ | [[Soubor:LearnArduino.png|right|link=https://1url.cz/kzWKG]] | ||
+ | |||
+ | <gallery> | ||
+ | Soubor:tinkercad02.jpg|https://www.tinkercad.com | ||
+ | Soubor:tinkercad03.jpg | ||
+ | Soubor:tinkercad09.jpg | ||
+ | Soubor:tinkercad10.jpg | ||
+ | </gallery> | ||
+ | |||
+ | === [[Atmel Studio]] === | ||
+ | |||
+ | [[Soubor:Atmel-studio.png|IDE|100px]] [[Soubor:Atmel-studio_1.png|IDE|300px]] | ||
+ | |||
+ | [https://www.microchip.com/en-us/tools-resources/develop/microchip-studio#Downloads download] | ||
+ | |||
+ | === [https://wokwi.com/ wokwi] === | ||
+ | |||
+ | <gallery> | ||
+ | Soubor:wokwi_AVR_01.jpg|[https://wokwi.com/projects/392695146694098945 7segment] | ||
+ | </gallery> | ||
+ | |||
+ | === Ovládání 7segmentovky s [[ATmega328]] na desce [[Arduino]] === | ||
+ | |||
+ | <Gallery> | ||
+ | Soubor:ARD21-sch.png|[[ARD21]][[:Soubor:ARD21-pcb.png|PCB]] | ||
+ | Soubor:Multifunctional Expansion Board.png|[[:Soubor:MFEB-schematic.png|schéma]] + [[:Soubor:MFEB-example.pdf|příklady]] | ||
</Gallery> | </Gallery> | ||
− | + | === Popis zapojení a funkce uni desky [[VYV50]] === | |
<Gallery> | <Gallery> | ||
− | + | soubor:VYV-deska-AVR-ATmega16-07.jpg|UNI deska [[VYV50]] | |
− | + | Soubor:proficad-RD2KIT-01.png|kreslení blokových schémat v [[ProfiCAD]] | |
− | + | ||
− | Soubor: | + | |
</Gallery> | </Gallery> | ||
+ | [[Soubor:Arduino-ATmega328Pinout.png|400px|ATmega328 Pinout]] | ||
+ | [[Soubor:ATmega328Pinout.png|400px|ATmega328 Pinout]] | ||
− | + | --------------------------------------------------------------------------------------------------------------- | |
− | + | ==== Assembly via Arduino ==== | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | [[Soubor:Anas_Kuzechie_Projects.png|300px|link=https://akuzechie.blogspot.com/|Anas Kuzechie Projects]] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | --------------------------------------------------------------------------------------------------------------- | ||
+ | ====How to Flash or Program Arduino from Atmel Studio?==== | ||
+ | https://www.arnabkumardas.com/platforms/atmel/how-to-flash-or-program-arduino-from-atmel-studio/ | ||
+ | [[Soubor:HowtoFlash.png|link=https://www.arnabkumardas.com/platforms/atmel/how-to-flash-or-program-arduino-from-atmel-studio/]] | ||
+ | [[Soubor:SetAtmmelStudio.png|400px|nastavení Atmmel Studia - Send to Arduino]] | ||
− | + | text k vyplnění: | |
− | + | Send to Arduino UNO | |
+ | C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe | ||
+ | -C "C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf" -p atmega328p -c arduino -P COM3 -b 115200 -U flash:w:"$(ProjectDir)Debug\$(TargetName).hex":i | ||
− | + | [[Soubor:SetAtmmelStudio-IDE.png|400px|export z Arduino IDE]] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | --------------------------------------------------------------------------------------------------------------- | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | ---- | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | == | + | === [http://rjhcoding.com/ rjhcoding] === |
− | = | + | [[Soubor:rjhcoding.jpg|link=http://rjhcoding.com/]] |
− | + | * [http://rjhcoding.com/avr-asm-light-an-led.php Example Program #1: LED] | |
+ | * [http://rjhcoding.com/avr-asm-registers.php Working With Registers R0-R31] | ||
+ | * [http://rjhcoding.com/avr-asm-led-blink.php Example Program #3: Blink] | ||
+ | * [http://rjhcoding.com/avr-asm-sreg.php The Status Register] | ||
+ | * [http://rjhcoding.com/avr-asm-program-flow.php Conditional Branching] | ||
+ | * [http://rjhcoding.com/avr-asm-delay-subroutine.php Example Program #4: Delay Subroutine] | ||
+ | * [http://rjhcoding.com/avr-asm-io.php Working With I/O Registers] | ||
+ | * [http://rjhcoding.com/avr-asm-sram.php Working With Extended I/O And SRAM] | ||
+ | * [http://rjhcoding.com/avr-asm-pm.php Loading Data from Program Memory] | ||
− | + | --------------------------------------------------------------------------------------------------------------- | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | [[Soubor:AVRdelay.png|500px|link=http://darcy.rsgc.on.ca/ACES/TEI4M/AVRdelay.html]] | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | --------------------------------------------------------------------------------------------------------------- | |
− | + | ||
− | + | ||
− | + | ||
− | == [[ | + | === Blink in C === |
+ | https://wokwi.com/projects/354469641572834305 | ||
+ | [[Soubor:atmega328p-blink_C.png|200px|right]] | ||
− | + | <source lang="c"> | |
− | # | + | //#include <avr/io.h> //iom328p.h |
− | # | + | #include <util/delay.h> |
− | + | ||
− | + | int main(){ | |
− | # | + | _SFR_IO8(0x0A) = 0xFF; // #define DDRD _SFR_IO8(0x0A) |
− | + | // DDRB = 0xFF; | |
− | + | _SFR_IO8(0x0B) = 0x00; // PORTD= 0x00; | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | == | + | while(1){ |
+ | PORTD |= (1 << PD0); | ||
+ | PORTD |= (1 << PD2) | (1 << PD1); | ||
+ | PORTD ^= (1 << PD3); | ||
+ | PORTD |= (1 << PD5) & ~(1 << PD4); | ||
+ | _delay_ms(1000); | ||
+ | |||
+ | PORTD &= ~(1 << PD0); | ||
+ | PORTD &= ~(1 << PD2) & ~(1 << PD1); | ||
+ | |||
+ | PORTD ^= (1 << PD5) ^ (1 << PD4); | ||
+ | _delay_ms(1000); | ||
+ | } | ||
+ | return 0; | ||
+ | } | ||
+ | </source> | ||
− | + | --------------------------------------------------------------------------------------------------------------- | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | == | + | === Blink with Timer === |
+ | https://wokwi.com/projects/354046396997507073 https://wokwi.com/projects/354556802672660481 | ||
− | # | + | [[Soubor:atmega328p-timers1.gif|200px|right]] |
+ | |||
+ | {| | ||
+ | |- | ||
+ | | | ||
+ | <source lang="asm"> | ||
+ | ;https://www.hackster.io/yeshvanth_muniraj/arduino-blink-example-in-assembly-using-timer-counter1-e2a327 | ||
+ | ;https://wokwi.com/projects/354046396997507073 | ||
+ | ;funkční ;sbi PORTB,5 zde nefunguje | ||
+ | #define __SFR_OFFSET 0x20 | ||
+ | #include "avr/io.h" | ||
+ | .global main | ||
+ | |||
+ | main: rcall setup // zavolání funkce setup | ||
+ | |||
+ | loop: | ||
+ | COM R17 ; Complement R17 register | ||
+ | STS PORTD, R17 ; Toggle the LED output | ||
+ | rcall delay | ||
+ | rjmp loop | ||
+ | |||
+ | delay: | ||
+ | LDI R16, 0xC2 | ||
+ | STS TCNT1H, R16 ; Writing 0xC2 into TCNT1H (8-bit) | ||
+ | LDI R16, 0xF7 | ||
+ | STS TCNT1L, R16 ; Writing 0xF7 into TCNT1H (8-bit) | ||
+ | LDI R16, 0x05 | ||
+ | STS TCCR1B, R16 ; Writing 0x05 into TCCR1B | ||
+ | |||
+ | L:LDS R0, TIFR1 ; Load the value of TIFR1 into R0 | ||
+ | SBRS R0, 0 ; Skip the next statement if overflow has occured. | ||
+ | RJMP L ; Loop until overflow occurs. | ||
+ | |||
+ | LDI R16, 0x00 | ||
+ | STS TCCR1B, R16 ; Stop the Timer/Counter1 | ||
+ | LDI R16, 0x01 | ||
+ | STS TIFR1, R16 ; Clear the overflow flag by writing 1 to it | ||
+ | ret | ||
+ | |||
+ | setup: | ||
+ | LDI R16, 0xFF ; Setting bits of PORTD as output | ||
+ | STS DDRD, R16 | ||
+ | LDI R17, 0x55 | ||
+ | STS PORTD, R17 ; Writing 0 to PORTD | ||
+ | ret | ||
+ | </source> | ||
+ | | | ||
+ | <source lang="c"> | ||
+ | //https://wokwi.com/projects/354556802672660481 | ||
+ | |||
+ | #include <avr/io.h> //iom328p.h | ||
+ | #include <util/delay.h> | ||
+ | |||
+ | int main(){ | ||
+ | DDRD = 0xFF; // #define DDRD _SFR_IO8(0x0A) | ||
+ | PORTD= 0x55; | ||
+ | |||
+ | while(1){ | ||
+ | PORTB ^= (1 << PD5); | ||
+ | PORTD = ~PORTD; | ||
+ | delay(); | ||
+ | } | ||
+ | return 0; | ||
+ | } | ||
+ | |||
+ | int delay(){ | ||
+ | TCNT1H = 0xC2; | ||
+ | TCNT1L = 0xF7; | ||
+ | TCCR1B = 0x05; //prescaler 1024 | ||
+ | while (!(TIFR1 & (1<< TOV1))); | ||
+ | TCCR1B = 0x00; | ||
+ | TIFR1 = 0x01; | ||
+ | } | ||
+ | |||
+ | </source> | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | === [https://www.arxterra.com/9-atmega328p-timers/ Interrupts and 16-bit Timer/Counter 1: ATmega328P Timing Subsystems] === | ||
+ | |||
+ | https://www.arxterra.com/9-atmega328p-timers/ | ||
+ | |||
+ | [[Soubor:atmega328p-timers3.png|600px|link:https://www.arxterra.com/9-atmega328p-timers/]] | ||
+ | |||
+ | --------------------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | ===[https://www.youtube.com/watch?v=B-BsqpgtQWI IO interface of AVR]=== | ||
+ | |||
+ | [[Soubor:IO_interface.jpg|500px|link=https://www.youtube.com/watch?v=B-BsqpgtQWI]] | ||
+ | |||
+ | {{#widget:YouTube|id=B-BsqpgtQWI|height=270|width=360|IO interface of AVR|right}} | ||
+ | |||
+ | --------------------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | === AVR Interrupts === | ||
+ | |||
+ | {{#widget:YouTube|id=zViw6mMzEoA|height=270|width=360|AVR Interrupts|right}} | ||
+ | |||
+ | --------------------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | === www === | ||
+ | |||
+ | * [https://www.spshronov.cz/eusoubory2/dum_atmega32.pdf SPS Hronov - Atmega32] | ||
+ | * [https://www.hackster.io/yeshvanth_muniraj/arduino-blink-example-in-assembly-using-timer-counter1-e2a327 Arduino Blink Example in Assembly using Timer/Counter1] | ||
+ | * [https://www.hackster.io/yeshvanth_muniraj/accessing-i-o-in-atmega328p-arduino-using-assembly-and-c-10e063#toc-sts---store-direct-to-data-space-5 Accessing I/O in ATmega328P (Arduino) using Assembly and C] | ||
+ | * [http://www.elektromys.eu/clanky/avr_timer1/clanek.html Čítač / časovač 1 nejen na Attiny] | ||
+ | * [http://www.8bit-era.cz/arduino-timer-interrupts-calculator.html Arduino Timer Interrupts Calculator] | ||
+ | * [https://www.arduinoslovakia.eu/application/timer-calculator AVR Timer Interrupts Calculator (slovakia)] | ||
+ | * [http://www.avr-asm-tutorial.net/avr_en/micro_beginner/4_Led_Timer/4_Led_Timer.html Lecture 4: Blinking a LED with a timer] | ||
+ | * [https://svetelektro.com/clanky/pokrocile-programovanie-mikropocitacov-v-jazyku-c-diel-c1-763/ Pokročilé programovanie mikropočítačov v jazyku C. Diel č.1] | ||
+ | |||
+ | --------------------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | |||
+ | |||
+ | <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> | ||
+ | |||
+ | '''== Archiv ==''' | ||
+ | |||
+ | === [[MCU]]: [[8051]]: === | ||
+ | |||
+ | <gallery> | ||
+ | Soubor:MCU-8051-IDE-screen.png|IDE: [[MCU 8051 IDE]] pro vývoj aplikací v asm/C | ||
+ | Soubor:juego de instrucciones MCS-51.jpg|[http://www.alciro.org/alciro/microcontroladores-8051_24/guia-referencia-microcontroladores-8051_232.htm Instrucciones] | ||
+ | Soubor:EDSIM-screen.png|[https://www.edsim51.com/ EdSim51] | ||
+ | Soubor:ATM13.png|HW: [[ATM13|UNI board s 89S52]] | ||
+ | Soubor:D10_HW_presto.jpg|Programátor: [[PRESTO]] SW: [[UP]] | ||
+ | Soubor:D10_HW_USBasp.jpg|Programátor: [http://goo.gl/Ioozyz USBasp] SW: [[ProgISP]] | ||
+ | </gallery> | ||
+ | |||
+ | === Modifikace programu s 8051 === | ||
+ | <Gallery> | ||
+ | Soubor:Traffic_Light_auc.png|Křižovatka AUC | ||
+ | Soubor:MCU-8051-IDE-screen.png|IDE: [[MCU 8051 IDE]] pro vývoj aplikací v asm/C | ||
+ | Soubor:VYV50_LED_Traffic_Light2.jpg | ||
+ | </Gallery> | ||
+ | |||
+ | <source lang="asm"> | ||
+ | loop: | ||
+ | mov P0,#01010011 ;modifikovat dle LED | ||
+ | mov P2,#11001100 ;modifikovat dle LED | ||
+ | acall delay | ||
+ | . | ||
+ | . | ||
+ | . | ||
+ | sjmp loop | ||
+ | |||
+ | delay: mov R0,#255d ;podprogram zpoždění | ||
+ | skok2: mov R1,#5d | ||
+ | skok1: mov R2,#5d | ||
+ | skok: djnz R2,skok | ||
+ | djnz R1,skok1 | ||
+ | djnz R0,skok2 | ||
+ | ret ;návrat z podprogramu | ||
+ | |||
+ | end | ||
+ | </source> | ||
+ | |||
+ | === Objednávka součástek === | ||
+ | [[soubor:prehled_soucastek.png|400px]] | ||
+ | * Prodejci součástek: | ||
+ | ** [http://www.gme.cz/ GME] Doporučujeme tuto společnost s prodejnami v Praze, Brně, Ostravě, Plzni a zásilkovým prodejem. | ||
+ | ** [http://www.tme.cz/TME TME] zásilkový prodej. | ||
+ | ** [http://www.soselectronic.cz/ SOS Electronic] zásilkový prodej. | ||
+ | ** [http://www.ges.cz/ GES Electronic] Společnost s prodejnami a zásilkovým prodejem. | ||
+ | ** [http://www.farnell.com Farnell] [http://www.rothsware.cz/web/farnell/ zastoupení] | ||
+ | |||
+ | == Témata na cvičení do roku 2016 == | ||
+ | |||
+ | ELE: | ||
+ | <Gallery> | ||
+ | Soubor:logo-elektronika.jpg|[[ELT1]] | ||
+ | Soubor:Stabilizovany_zdroj_+5V.jpg|Stabilizovaný zdroj +5V | ||
+ | Soubor:OPVK_ZS_Elektronika_Blikac_05.jpg|[[Blikačka|555]] | ||
+ | </Gallery> | ||
+ | |||
+ | MIT: | ||
+ | <Gallery> | ||
+ | Soubor:Vyvoj-mit-001.jpg|[[8051]] s [[RD2 kit]] | ||
+ | Soubor:nxt-2.jpg|[[NXT]] | ||
+ | Soubor:MAT-POZADAVKY-PRA-ROBOT-UMIK.jpg|[[PICAXE|Robot Umík s PICAXE]] | ||
+ | Soubor:Arduino_01.jpg|[[Arduino]] | ||
+ | </Gallery> | ||
+ | |||
+ | Bonus: | ||
+ | <Gallery> | ||
+ | Soubor:Registrace_OP01.jpg|[[Registrace na odborné praxe]] | ||
+ | Soubor:Logo.JPG|[[LOGO]] | ||
+ | Soubor:boebot.jpg|[[BOB]] | ||
+ | Soubor:MOB03_05.png|[[Mobilní robot]] | ||
+ | Soubor:SOC_2011_002.jpg|[[Robot RC-DC]] | ||
+ | Soubor:Robotika-nameta-3piv2.jpg|[[3PI Robot]] | ||
+ | Soubor:Robot-arduino_2WD.png|Robot 2WD (arduino) | ||
+ | Soubor:Robot-arduino_RC_car.png|Tank DO (arduino) | ||
+ | Soubor:Robot-arduino_RC_car_02.png|Car DO (arduino) | ||
+ | </Gallery> | ||
+ | |||
+ | |||
+ | --------------------------------------------------------------------------------------------------------------- | ||
+ | |||
+ | === Otázky k opakování do roku 2016 === | ||
+ | |||
+ | {| class="toccolours" cellpadding="5" style="float: right; clear: right; margin: 0 0 1em 1em; font-size: 85%; width: 35em" | ||
+ | | colspan="2" style="text-align: center; font-size: larger; background-color: lightgreen;" | '''''TP do roku 2016''''' | ||
+ | |- | ||
+ | | | ||
+ | * T1 - BOZP – řády odborných učeben | ||
+ | ** 1. pomoc [http://goo.gl/wABr1c Instruktážní video resuscitace ] z odkazem ze stránek [http://www.resuscitace.cz/%20%20 http://www.resuscitace.cz/] | ||
+ | ** [[Soubor:Icon-youtube.gif]] [https://www.youtube.com/watch?v=LIOjlbZgyeg Resuscitace dospělých] | ||
+ | ** Náplň činnosti v školním roce (představa o jednotlivých odděleních ) | ||
+ | ** Povinné práce, klasifikace v předmětu | ||
+ | ** [[SOČ]] a jiné soutěže http://wiki.sps-pi.com/soc | ||
+ | * Elektronika | ||
+ | ** T2 – Přehled součástek R, C, více info: [[ELT1]] | ||
+ | ** T3 - Měřicí přístroje univerzální - měření el. veličin U, R Ohmův zákon | ||
+ | ** T4 – Polovodičové součástky - diody, tranzistory, Zenerova dioda | ||
+ | ** T5 – Stabilizátory - integrované stabilizátory napětí | ||
+ | ** T6 – Integrované obvody analogové – časovač 555 | ||
+ | ** T7 – Integrované obvody analogové – operační zesilovač | ||
+ | ** T8 – Možnosti řízení výstupem PC dalších technických zařízení | ||
+ | * [[Vývoj MIT aplikace]] | ||
+ | ** T9 – Popis robota [[NXT]], prezentace robota, ukázka aplikací | ||
+ | ** T10 – Vývoj aplikace s robotem [[NXT]], zadání úloh – bludiště | ||
+ | ** T11 – Realizace robotické sestavy | ||
+ | ** T12 – Vývoj aplikace s robotem [[NXT]] zadání úloh – sekačka | ||
+ | ** T13 – Aplikace s robotem pro plnění úkolů „rescue robot“ | ||
+ | ** T14 – Popis robota [[BOB]] prezentace robota Boe-Bot ukázka aplikací | ||
+ | ** T15 – Vývoj aplikace s robotem [[BOB]] zadání úloh – bludiště | ||
+ | * T16 - Vývoj aplikace s robotickou rukou L601 prezentace | ||
+ | * T17 - Opakování | ||
+ | |} | ||
+ | == Otázky k opakování do roku 2016== | ||
+ | ===HW=== | ||
+ | # Navrhněte napájecí zdroj pro napájení mikroprocesorové aplikace | ||
+ | # Otestuje AKO s časovačem 555 | ||
+ | # Popište funkci operačního zesilovače | ||
+ | # Proveďte návrh schéma zapojení s blikající LED (klasické řešení versus mikroprocesorové) | ||
+ | # Navrhněte připojení 7segmentovky k MCU | ||
− | == | + | ===SW=== |
+ | # Napište program pro blikání jedné (a více) LED | ||
+ | # Připojte a otestujte čidlo dotyku (vzdálenosti, světla) s MCU | ||
+ | # Napište program pro test funkčnosti čidla světla | ||
+ | # Navrhněte a otestujte aplikaci ovládající motor (stejnosměrný, krokový) | ||
+ | # Popište postup vývoje mikroprocesorové aplikace | ||
− | + | == White Board do roku 2016 == | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | <gallery> | |
+ | Soubor:AplTVY3_Board_01.jpg | ||
+ | Soubor:AplTVY3_Board_02.jpg | ||
+ | Soubor:AplTVY3_Board_03.jpg | ||
+ | Soubor:AplTVY3_Board_04.jpg | ||
+ | Soubor:AplTVY3_Board_05.jpg | ||
+ | Soubor:AplTVY3_Board_06.jpg | ||
+ | Soubor:AplTVY3_Board_07.jpg | ||
+ | Soubor:AplTVY3_Board_09.jpg | ||
+ | </gallery> | ||
− | + | == Inspirace == | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | [http://projects.adamh.cz/ projects.adamh.cz] | |
− | + | ||
− | + |
Aktuální verze z 18. 3. 2024, 13:42
Tématický plán | |
T0 - BOZP – řády odborných učeben T1 – Popis vývoje mikropočítačové aplikace T2 – V/v brány, jejich vlastnosti a využití T3 – Tvorba programu pro výstupní moduly T4 – Vývoj mikroprocesorové aplikace – LED T5 – Časové zpoždění T6 – Vstupní moduly – tvorba programu pro vstupní moduly T7 – Vývoj mikroprocesorové aplikace – test vstupů T8 – Programování aplikace T9 – Naprogramování mikropočítače T10 – Vývoj mikroprocesorové aplikace – čidlo světla T11 – Vývoj mikroprocesorové aplikace – 7 segment T12 – Vývoj mikroprocesorové aplikace – motory T13 – Vývoj mikroprocesorové aplikace – čidlo teploty T14 - Opakování |
Otázky k opakování | |
|
Domácí úkoly 2021-22: | |
22.2 dle návodu na http://wiki.sps-pi.cz/index.php/IBM-IoT#postup si nainstalujte v cloudu nebo lokálně Node-RED. Odevzdejte výsledné PrtScr dle vzoru v příloze (samozřejmě s vašimi údaji "d:org:device_type:device_ID"; např.: "d:3yaaz5:wemos:metostanice"; 1.3. V Tinkercadu vyzkoušejte postupně zapojení s LED, Button, LDR, 18B20, TMP35 ......tak, aby zjištěná hodnota výstupní proměnné nebo její stav byla vyposílána na seriový port (monitor). Lze otestovat i s ESP8266 v Wokwi. YT: Arduino Online Simulator Free Arduino and ESP32 by Wokwi Odevzdejte všechny výsledné PrtScr.
|
Domácí úkoly 2020-21: | |
14.9. Dohledat SP z předmětů HW a PRAI, přinést sešit od pondělí 12.10.2020 zítra (a příští týden skupina PSP) se koná dle rozvrhu prezenční výuka předmětu "praktická cvičení" v PC učebně VYT5. Kdyby jste se (z nějakých důvodů) nemohli dostavit, budu rád, když se zúčastníte výuky alespoň distančně a budete mít na svých PC nainstalován program Deeds (testování seminární práce na návrh SLO) a IDE (vývojové prostředí) pro tvorbu programu v JSA (jazyk symbolických adres - assembler) procesoru 8051 (např. MCU 8051 IDE, EdSIM51, Ride..............) a pro skupinu PSP také IDE pro ATmega328 (je v Arduinu). Výuka poběží tedy paralelně a do třídní knihy zapíši absenci jen těm, kteří nebudu ani prezenčně (určitě upřednostňuji) a ani distančně na vyučování.
21.12. Nakreslit blok. schéma CPU s jádrem AVR včetně popisu funkce jednotlivých částí (obr. ve stylu jako v příloze). Pozor CPU ne MCU! pozn. DÚ jen pro ty, kteří nejsou spokojeni se známkou z dnešního testu. 18.1. V odpovědi odevzdejte PrtScr ukázky práce s aritmetickou operací ADD. Příklady: -84 +60, -84+100, 84+100, -84-100 atd. Sledujte hlavně C a OV. 22.2. odevzdejte minimálně jedno řešení z úkolů: 1) vyzkoušení log. funkcí v asm (ANL, ORL, XRL, CPL) - natočit videoscreen testování programu (MT, OBS, Bandicam) 2) bin čítač s omezením do 500us (videscreen) 3) desítkový čítač 0->9 (videscreen) 4) desítkový čítač 00 -> 99 (videscreen) 5) modifikované *.ino pro DHT11 + json 6) přidané zařízení (PrtScr) 7) nastavení CloudFoundry apps/services (PrtScr) 8) nastavení Node-Red pro DHT11 15.3.Test-PRA3rPSPv01 31.3.Odevzdejte řešení ukazující využití zpoždění s dvěma (alt. 3mi) registry v IDE pro MCU ATmeg328 7.6.2021: program v asm pro blikání LED o f = 5Hz. 21.6.2021: program v asm, kde po zmáčknutí tlačítka připojené na pin 2. LED na pinu 13 3x zabliká a opět čeká na aktivaci od tlačítka
Pozn.: Jak odevzdávat domácí úkoly |
Domácí úkoly 2019-20: | |
1. Postupně v aplikaci TinkerCad vyzkoušejte úkoly tak, aby jste zvládli (např. u praktické maturity) zapojit na KNP a naprogramovat mikroprocesorovou aplikaci s LED, RGB, tlačítkem, potenciometrem, PIR, LDR, čidle teploty, PING, servem, krokovým motorem atd. Každý úspěšný experiment zpracujte v postupně rozšiřující dokumentaci. Mikroprocesor lze použit: Arduino, PICAXE, 8051 apod. 2. Podívejte se na výsledky letošního školního a krajského kola SOČ SOČ 2020 3. Do odpovědi na tento úkol zkopírujte link na video prezentaci SOČ práce, která vás nejvíce zaujala. Pozn.: Soutěží se v 18ti vědních oborech. Letos museli soutěžící natočit video o své práci a umístit na YT. (vyhledávací slova: Středoškolská odborná činnost a číslo oboru (10, 18 ....)) . Např. pro obor Elektrotechnika: Středoškolská odborná činnost 10 (https://bit.ly/2yaQ9m7) nebo pro obor Informatika: Středoškolská odborná činnost 18 (https://bit.ly/2Sj8wME) 4. Nakreslete blokové schéma mikroprocesorové aplikace, kterou dokážete sestavit na KNP a naprogramovat (MCU, vstupní čidla, výstupní moduly). Zde v odpovědi odevzdejte PrtScr. |
Cvičení
PICAXE - Blik
TinkerCAD
Atmel Studio
wokwi
Ovládání 7segmentovky s ATmega328 na desce Arduino
Popis zapojení a funkce uni desky VYV50
Assembly via Arduino
How to Flash or Program Arduino from Atmel Studio?
https://www.arnabkumardas.com/platforms/atmel/how-to-flash-or-program-arduino-from-atmel-studio/
text k vyplnění: Send to Arduino UNO C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avrdude.exe -C "C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf" -p atmega328p -c arduino -P COM3 -b 115200 -U flash:w:"$(ProjectDir)Debug\$(TargetName).hex":i
rjhcoding
- Example Program #1: LED
- Working With Registers R0-R31
- Example Program #3: Blink
- The Status Register
- Conditional Branching
- Example Program #4: Delay Subroutine
- Working With I/O Registers
- Working With Extended I/O And SRAM
- Loading Data from Program Memory
Blink in C
https://wokwi.com/projects/354469641572834305
//#include <avr/io.h> //iom328p.h #include <util/delay.h> int main(){ _SFR_IO8(0x0A) = 0xFF; // #define DDRD _SFR_IO8(0x0A) // DDRB = 0xFF; _SFR_IO8(0x0B) = 0x00; // PORTD= 0x00; while(1){ PORTD |= (1 << PD0); PORTD |= (1 << PD2) | (1 << PD1); PORTD ^= (1 << PD3); PORTD |= (1 << PD5) & ~(1 << PD4); _delay_ms(1000); PORTD &= ~(1 << PD0); PORTD &= ~(1 << PD2) & ~(1 << PD1); PORTD ^= (1 << PD5) ^ (1 << PD4); _delay_ms(1000); } return 0; }
Blink with Timer
https://wokwi.com/projects/354046396997507073 https://wokwi.com/projects/354556802672660481
;https://www.hackster.io/yeshvanth_muniraj/arduino-blink-example-in-assembly-using-timer-counter1-e2a327 ;https://wokwi.com/projects/354046396997507073 ;funkční ;sbi PORTB,5 zde nefunguje #define __SFR_OFFSET 0x20 #include "avr/io.h" .global main main: rcall setup // zavolání funkce setup loop: COM R17 ; Complement R17 register STS PORTD, R17 ; Toggle the LED output rcall delay rjmp loop delay: LDI R16, 0xC2 STS TCNT1H, R16 ; Writing 0xC2 into TCNT1H (8-bit) LDI R16, 0xF7 STS TCNT1L, R16 ; Writing 0xF7 into TCNT1H (8-bit) LDI R16, 0x05 STS TCCR1B, R16 ; Writing 0x05 into TCCR1B L:LDS R0, TIFR1 ; Load the value of TIFR1 into R0 SBRS R0, 0 ; Skip the next statement if overflow has occured. RJMP L ; Loop until overflow occurs. LDI R16, 0x00 STS TCCR1B, R16 ; Stop the Timer/Counter1 LDI R16, 0x01 STS TIFR1, R16 ; Clear the overflow flag by writing 1 to it ret setup: LDI R16, 0xFF ; Setting bits of PORTD as output STS DDRD, R16 LDI R17, 0x55 STS PORTD, R17 ; Writing 0 to PORTD ret |
//https://wokwi.com/projects/354556802672660481 #include <avr/io.h> //iom328p.h #include <util/delay.h> int main(){ DDRD = 0xFF; // #define DDRD _SFR_IO8(0x0A) PORTD= 0x55; while(1){ PORTB ^= (1 << PD5); PORTD = ~PORTD; delay(); } return 0; } int delay(){ TCNT1H = 0xC2; TCNT1L = 0xF7; TCCR1B = 0x05; //prescaler 1024 while (!(TIFR1 & (1<< TOV1))); TCCR1B = 0x00; TIFR1 = 0x01; } |
Interrupts and 16-bit Timer/Counter 1: ATmega328P Timing Subsystems
https://www.arxterra.com/9-atmega328p-timers/
IO interface of AVR
AVR Interrupts
www
- SPS Hronov - Atmega32
- Arduino Blink Example in Assembly using Timer/Counter1
- Accessing I/O in ATmega328P (Arduino) using Assembly and C
- Čítač / časovač 1 nejen na Attiny
- Arduino Timer Interrupts Calculator
- AVR Timer Interrupts Calculator (slovakia)
- Lecture 4: Blinking a LED with a timer
- Pokročilé programovanie mikropočítačov v jazyku C. Diel č.1
== Archiv ==
MCU: 8051:
IDE: MCU 8051 IDE pro vývoj aplikací v asm/C
Modifikace programu s 8051
IDE: MCU 8051 IDE pro vývoj aplikací v asm/C
loop: mov P0,#01010011 ;modifikovat dle LED mov P2,#11001100 ;modifikovat dle LED acall delay . . . sjmp loop delay: mov R0,#255d ;podprogram zpoždění skok2: mov R1,#5d skok1: mov R2,#5d skok: djnz R2,skok djnz R1,skok1 djnz R0,skok2 ret ;návrat z podprogramu end
Objednávka součástek
- Prodejci součástek:
- GME Doporučujeme tuto společnost s prodejnami v Praze, Brně, Ostravě, Plzni a zásilkovým prodejem.
- TME zásilkový prodej.
- SOS Electronic zásilkový prodej.
- GES Electronic Společnost s prodejnami a zásilkovým prodejem.
- Farnell zastoupení
Témata na cvičení do roku 2016
ELE:
MIT:
Bonus:
Otázky k opakování do roku 2016
TP do roku 2016 | |
|
Otázky k opakování do roku 2016
HW
- Navrhněte napájecí zdroj pro napájení mikroprocesorové aplikace
- Otestuje AKO s časovačem 555
- Popište funkci operačního zesilovače
- Proveďte návrh schéma zapojení s blikající LED (klasické řešení versus mikroprocesorové)
- Navrhněte připojení 7segmentovky k MCU
SW
- Napište program pro blikání jedné (a více) LED
- Připojte a otestujte čidlo dotyku (vzdálenosti, světla) s MCU
- Napište program pro test funkčnosti čidla světla
- Navrhněte a otestujte aplikaci ovládající motor (stejnosměrný, krokový)
- Popište postup vývoje mikroprocesorové aplikace