setup() { I = 0; } loop() { I = I + 1; }

Podobné dokumenty
Přerušovací systém s prioritním řetězem

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

zapište obslužnou metodu události Click tlačítka a vyzkoušejte chování polevýsledek.text = polečíslo1.text + polečíslo2.text;

eses výukový multi shield pro Arduino UNO

ČEMU ROZUMÍ MIKROPROCESOR?

Strojový kód. Instrukce počítače

Víkendový projekt: Bezklíčové otevírání domovních dveří

Paralelní programování

Služba ve Windows. Služba (service) je program

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ , 5.1 a 5.2 8/14

Přerušení POT POT. Přerušovací systém. Přerušovací systém. skok do obslužného programu. vykonávaný program. asynchronní událost. obslužný.

Cvičení 2. Obsah a cíle cvičení. Obsah. A5MPL Programování mikropočítačů Digitální vstupy a výstupy - LED a tlačítka.

SEKVENČNÍ LOGICKÉ OBVODY

Výpočet v módu jádro. - přerušení (od zařízení asynchronně) - výjimky - softvérové přerušení. v důsledku událostí

Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr.

Klimatizace. Třída: 4.C. Střední Průmyslová Škola Elektrotechnická Havířov Protokol do MIT. Skupina: 3. Zpráva číslo: 3

Algoritmizace a programování

Činnost počítače po zapnutí

Spuštění instalace. nastavení boot z cd v BIOSu vložení CD s instal. médiem spuštění PC. nastavení parametrů instalace (F2 čěština)

Řízení IO přenosů DMA řadičem

Metody připojování periferií BI-MPP Přednáška 2

Architektury počítačů a procesorů

MQL4 COURSE. By Coders guru -5 Smyčky & Rozhodnutí Part 1

Návrh ovládání zdroje ATX

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

Instrukční sada pro používání ControlLogix a CompactLogix výňatek

Systém řízení sběrnice

Vstupy a výstupy základní sady modulů

Architektura počítačů Logické obvody

K8055D.DLL v Technická příručka. Úvod. Obecné. Konvence volání. Nastavení adresy karty

GSM ALARM - základní sada Návod k použití

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Speciální obvody a jejich programování v C 2. díl

Řada programovacích jazyků nabízí prostředky pro řešení meziprocesové komunikace jako je synchronizace a řízení přístupu do kritické sekce.

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

Počítač jako prostředek řízení. Struktura a organizace počítače

LED_007.c Strana: 1/5 C:\Michal\AVR\Výukové programy\archiv\ Poslední změna: :01:48

Zapnutí Zmáčkněte jakékoli tlačítko. Vypnutí Gymboss se sám vypne po 5 minutách nečinnosti (nesmí být spuštěn odpočet), nebo ho můžete vypnout v menu.

Přerušovací systém 12.přednáška

Maticová klávesnice. Projekt do předmětu Subsystémy PC. Brno, Tomáš Kreuzwieser, Ondřej Kožín

Komunikace modulu s procesorem SPI protokol

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 7

Robot BBC Micro:bit kódovaní v PXT Editoru

Reference. Přílohy. Měřicí přístroj kruhovitosti součástek

Akademický rok: 2004/05 Datum: Příjmení: Křestní jméno: Osobní číslo: Obor:

Společnost pro elektronické aplikace. SEA s.r.o. Dolnoměcholupská 21 CZ Praha 10

Základy informatiky. 2. Přednáška HW. Lenka Carr Motyčková. February 22, 2011 Základy informatiky 2

Datové typy a struktury

Algoritmy. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna / 39

Jak do počítače. aneb. Co je vlastně uvnitř

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Architektura počítačů Logické obvody

Přerušení na PC. Fakulta informačních technologií VUT v Brně Ústav informatiky a výpočetní techniky. Personální počítače, technická péče cvičení

CLG-03 POČÍTADLO PROVOZNÍCH HODIN

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 10

Práce s vysokorychlostní sběrnicí. SPEED-Bus digitální signály

Procesy a vlákna - synchronizace

Návod k obsluze. Dálkový ovladač BRC315D7

Voltmetr pro elektromobil. Technická dokumentace

Univerzální watchdog WDT-U2/RS485

IMTEE Přednáška č. 8. interrupt vector table CPU při vzniku přerušení skáče na pevně dané místo v paměti (obvykle začátek CODE seg.

Princip funkce počítače

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

LabView jako programovací jazyk II

Konfigurátor Duo. Manuál pro konfiguraci systémů DUO Standard / Basic. Obsah + vybraná nastavení: - 1 -

Teoretické minimum z PJV

Návod k použití multifunkční časomíry MULT 30A_4

Architektura Intel Atom

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Návod na použití Chrono Top/ Přenosný ukazatel skóre

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

Typy a použití klopných obvodů

3. Počítačové systémy

Externí zařízení Uživatelská příručka

2. lekce Algoritmus, cyklus Miroslav Jílek

Systém adresace paměti

Systémová volání Mgr. Josef Horálek

Čtečka otisků prstů 1. POPIS 2. SPECIFIKACE. ECLIPSERA s.r.o. Distributor pro ČR. VÝROBNÍ ČÍSLO

Procesy a vlákna Mgr. Josef Horálek

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Výuková laboratorní sestava seminář pro učitele

Digitální indikátor přeřazení

Paralelní programování

Návod k obsluze a instalaci počítadla vydaných káv Modely: cafépro 100, cafépro 200

Ukázka zkouškové písemka OSY

Řídicí struktury. alg3 1

POPIS VYNÁLEZU K AUTORSKÉMU OSVĚDČENÍ REPUBLIKA ( 19 ) (И) ÍBl) [Ы) (23) Výsuvnípriorila (22) Přihlášeno u PV (75) Autor vynálezu

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

SPÍNACÍ HODINY. Nastavení hodin a předvolby. Obr. 1

Operační systémy. Přednáška 4: Komunikace mezi procesy

Vlákna a přístup ke sdílené paměti. B4B36PDV Paralelní a distribuované výpočty

NÁVOD K OBSLUZE ON/OFF

MK3x3 programovatelné relé

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ /14

Digitální sekvenční indikátor přeřazení (Shift Light)

Metodický list k didaktickému materiálu

Transkript:

PŘERUŠENÍ

Procesor pracuje tak, že načítá z paměti jednotlivé instrukce a ty následně zpracovává. Instrukce se zpracovávají v pořadí v jakém jsou uloženy v paměti. Vezměme jednoduchý program, který v nekonečném cyklu inkrementuje proměnnou,tedy dokola přičítá jedničku k proměnné ( i = i + 1) int I; setup() I = 0; loop() I = I + 1; Vznikne tak nekonečný program, modifikujme ho tak aby se zastavil po stisku tlačítka na pinu 1.

int I; boolean RUN; setup() I = 0; RUN = true; pinmode(1, INPUT); // deklarace //inicializace poč.stavu // true = nestisknuto loop() if(run) i = i + 1; if(digitalread(buttonpin) = HIGH) run = false;

Co když ale bude program v hlavní smyčce časově náročnější? Například: int I; boolean RUN; setup() I = 0; RUN = true; pinmode(buttonpin, INPUT); loop() if(run) i = i + 1; nejakaakce(); if(digitalread(buttonpin) = HIGH) run = false; Předpokládejme, že funkce nejakaakce() dělá něco smysluplného a její provedení trvá 15 vteřin.

To ale znamená, že program bude kontrolovat stav tlačítka pouze každou 15 (a nějaké drobné) vteřinu, což určitě není ideální přístup. Řešení? = HARDWAROVÉ PŘERUŠENÍ Přerušení je způsob jak asynchronně obsloužit důležité události. Tedy, pokud se vyskytne událost, na kterou musí procesor okamžitě reagovat, tak procesor přeruší načítání instrukcí Hlavního programu a začne načítat program určený pro zpracování té prioritní události, říkáme, že vykoná obsluhu přerušení. Jakmile obsluha přerušení skončí, procesor se opět vrátí k původní činnosti do místa, kde jí opustil(přerušil). Aby bylo možno tuto vlastnost použít musí mít procesor přerušení hardwarově implementované.

Existuje několik různých druhů přerušení, na které je možné reagovat. V příkladu výše by se hodilo použít externí hardwarové přerušení. Aby procesor reagoval na přerušení, musí to mít povoleno. Někdy může totiž provádět tak důležitou operaci, že nechceme, aby byla přerušena. V takovém případě se přerušení může vypnout a procesor bude všechny žádosti o spuštění přerušení ignorovat. Pokud je ale přerušení povoleno, pak procesor v okamžiku, kdy nastane důležitá událost zastaví načítání instrukcí hlavního programu, uloží hodnoty pracovních registrů do zásobníku a přejdena adresu na níž se nachází náš podprogram pro přerušení. Této adrese se říká vektor přerušení.

Arduino - celkem dvě externí přerušení. Jsou očíslovány 0 a 1 a jsou na digitálních pinech 2 a 3.Na těchto pinech můžeme sledovat celkem 4 různé druhy událostí: LOW přerušení nastane vždy, když je pin v logické nule. CHANGE přerušení nastane při změně logické hodnoty na daném pinu. RISING přerušení s příchodem vzestupné hrany. FALLING přerušení s příchodem sestupné hrany. Pokud chceme například reagovat na zmáčknutí tlačítka, budeme sledovat vzestupnou nebo sestupnou hranu signálu.

Arduino má čtyři funkce, které slouží pro práci s hardwarovým (tedy externím) přerušením. Tyto funkce jsou: attachinterrupt() detachinterrupt() interrupts() nointerrupts() interrupts() zapíná přerušení nointerrupts() vypíná přerušení. výchozí nastavení Arduina = externí přerušení vypnuté. Tedy chci ho použít = musím ho povolit, attachinterrupt() registruje (připojuje) a definuje funkce pro obsluhu přerušení. Př.: Předpokládejme že máme funkci tlacitko() a chceme aby ji mikrokontrolér zavolal pokaždé, když uživatel zmáčkne tlačítko na digitálním pinu číslo 2. Budeme tedy reagovat na přerušení číslo 0 a na vzestupnou hranu:

void setup() attachinterrupt(0, tlacitko, RISING); void loop() // HLAVNÍ // PROGRAM void tlacitko() // Reakce na stisknutí tlačítka = obsluha přerušení

Při příchodu vzestupné hrany na pinu číslo 2 se okamžitě přeruší vykonávání programu ve funkci loop(), dočasně se zakáže přerušení, provede se funkce tlacitko (), opět se přerušení povolí a začne se vykonávat funkce loop() od místa, kde došlo k přerušení. Vzhledem k tomu, že při obsluze přerušení (tedy v našem příkladě ve funkci tlacitko()) jsou všechna přerušení zakázána, je vhodné aby funkce provedla svou činnost co nejrychleji. Během vykonávání obsluhy přerušení totiž procesor nebude reagovat na žádnou jinou externí událost

int I; boolean RUN; void setup() I = 0; attachinterrupt(0, button, RISING); void loop() i = i + 1; nejakaakce(); void button() I=0; // stiskem tlacitka na PINu 2 se I vynuluje

nointerrupts() zakazuje přerušení, které lze pomocí interrupts() opět povolit void setup() // zde je potřebný SETUP včetně připojení přerušení void loop() // ČÁST PROGRAMU nointerrupts(); // kritický kus kódu který nelze přerušením rušit interrupts(); // ZBYTEK PROGRAMU void přerušeni() // zde obsluha přerušení