Programování mikropočítačů

Slides:



Advertisements
Podobné prezentace
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Advertisements

Přednáška č. 3 Normalizace dat, Datová a funkční analýza
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
Vytváření, použití dávkových souborů
SOFTWARE dálkové studium PODNIKÁNÍ 2. listopad 2006.
SOFTWARE operační systémy
Přednáška č. 5 Proces návrhu databáze
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Operační systémy. OPERAČNÍ SYSTÉMY pomoc operátorovi, podpora vlastností reálného času, víceuživatelských a více úlohových systémů.
Operační systém Adam Greguš, 4.A.
Přínosy a druhy počítačových sítí. Jednou z nejvýznamnějších technologií používaných v oblasti výpočetních systémů jsou již řadu let počítačové sítě.
OS Windows. Tento operační systém byl vytvořen pro snazší ovládání počítače běžnými uživateli. Například stačí jednou definovat připojená zařízení (tiskárny…)
13AMP 6. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled Synchronizace procesů Synchronizace procesů Producent-Konzument Producent-Konzument.
Maturitní okruh č. 7. Odstínit aplikace od specifik HWSpráva procesůSpráva pamětiSpráva souborůSpráva vstupů a výstupůSpráva sítěSystém ochrany a bezpečnostiSystém.
Základy algoritmizace a programování
Objektové programování
Informatika / programování
Operační systémy.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
13AMP 2. přednáška Ing. Martin Molhanec, CSc.. Stav procesu (kontext) Stav procesu je úplná informace, kterou je nutné uschovat při přerušení procesu,
Gymnázium, SOŠ a VOŠ Ledeč nad Sázavou I NFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE Ing. Jan Roubíček.
T1: Základy práce s počítačem
OPERAČNÍ SYSTÉMY Správa zdrojů Historie Funkce Ovládání počítače
Gymnázium, SOŠ a VOŠ Ledeč nad Sázavou I NFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE Ing. Jan Roubíček.
13AMP 3. přednáška Ing. Martin Molhanec, CSc.. Co jsme se naučili naposled I. Co je to kontext úlohy Co je to kontext úlohy Task switching (přepnutí úlohy)
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Martina Braunerová.  nejdůležitější program v počítači  umožňuje všem ostatním programům fungovat  prostředník mezi počítačem a uživatelem.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
KIV/ZIS cvičení 4 Tomáš Potužák. Dotazy - úvod Umožňují pracovat s databází –Získávat specifické informace z tabulky, případně z více tabulek najednou.
Operační systémy. Operační systémy Operační systém je základním programovým vybavením nezbytně nutným pro provoz počítače. Poznámka: Operační systém.
Operační systémy Název a adresa školy
Výrok „Vypadá to, že jsme narazili na hranici toho, čeho je možné dosáhnout s počítačovými technologiemi. Člověk by si ale měl dávat pozor na takováto.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
1/28 PB153 OPERAČNÍ SYSTÉMY A JEJICH ROZHRANÍ Vlákna 06.
OPERAČNÍ SYSTÉMY.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
Mikroprocesor.
Pokročilé datové typy (struktury, unie, dynamické proměnné)
Operační systémy. Výpočetní systém Stroj na zpracování dat vykonávající samočinně předem zadané operace.
© Aastra Integrovaný DHCP server. © Aastra DHCP server DHCP server je určen pro distribuci IP adres a konfiguračních parametrů pro telefony.
Funkce operačního systému (11). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická škola pro.
OPERAČNÍ SYSTÉMY učební text pro žáky SŠ.
Batové dávky Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Vojtěch Mrózek. Dostupné z Metodického portálu ISSN: ,
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
ÚVOD DO PŘEDMĚTU INFORMAČNÍ TECHNOLOGIE. OPERAČNÍ SYSTÉM Je v informatice základní programové vybavení počítače (tj. software), které je zavedeno do paměti.
Programování mikropočítačů Programování HCS08 v C Obsluha vstupů a výstupů, displej.
PLC Sekvenční logika. RS Klopný obvod (paměť)  Přivedením log. 0 na vstup S (set) se nastaví Q = 1  Q zůstane 1 i po změně vstupu S na log.1 (pamatuje.
Uvedení autoři, není-li uvedeno jinak, jsou autory tohoto výukového materiálu a všech jeho částí. Tento projekt je spolufinancován ESF a státním rozpočtem.
SOFTWAROVÁ PODPORA PRO VYTVÁŘENÍ FUZZY MODELŮ Knihovna fuzzy procedur Ing. Petr Želasko, VŠB-TU Ostrava.
NÁZEV ŠKOLY:SOŠ Net Office, spol. s r.o. Orlová Lutyně
Vypracoval / Roman Málek
Programování mikropočítačů Platforma Arduino
SW počítače - operační systém
Služby Windows Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Přepínání mezi programy
Vícerozměrná pole (1) Jazyk C povoluje, aby pole mělo více rozměrů (dimenzí) než jeden Z vícerozměrných polí bývá nejčastěji použí-váno pole dvourozměrné.
Vlastnosti souborů Jaroslava Černá.
Operační systémy - úvod
Soubor Soubor v informatice označuje pojmenovanou sadu dat uloženou na nějakém datovém médiu, se kterou lze pracovat nástroji operačního systému jako.
1. ročník oboru Mechanik opravář motorových vozidel
Programování mikropočítačů
iFIS*WebMailer Průvodce produktem
Operační systémy 9. Spolupráce mezi procesy
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
1. ročník oboru Mechanik opravář motorových vozidel
Číslicové měřící přístroje
Volba PREZIDENTA REPUBLIKY LEDEN 2018
Práce s procesy Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí Autor:
Operační systémy.
Přepínání procesů Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Transkript prezentace:

Programování mikropočítačů Programování HCS08 v C s využitím operačního systému RTMON

Co je Real-time programování Je programování počítačů se speciálními požadavky na dobu odezvy. Mluvíme-li u počítače o době odezvy, plyne z toho, že tento počítač komunikuje s okolím (člověkem nebo s technickým zařízením) Požadavky na dobu odezvy mohou být velmi různé, viz příklady dále

Příklady real-time systémů DVD přehrávač: spustit přehrávání po stisku tlačítka PLAY. Řídit polohu laserového snímače = Dvě úlohy s různými požadavky na dobu odezvy Mobilní telefon: Reakce na stisk tlačítka uživatelem Zároveň zpracovávat GSM data Letadlo: Řízení motorů, podvozku… Řízení polohy, rychlosti

Real-time operační systém (RTOS) Real-time program potřebuje prostředky k práci s časem a pro souběžné provádění několika činností. K tomu může být využit real-time operační systém (RTOS) Programy se souběžným prováděním několika činností mohou být napsány i bez real-time OS, s využitím obyčejného OS, např. Windows – ale horší možnosti splnit požadavky na dobu odezvy Program splňující požadavky na dobu odezvy lze napsat bez využití OS – běžné u malých embedded systémů (mikropočítač)

Změna myšlení Využití operačního systému  změna myšlení Jestliže proběhne určitá doba zapracování a změna ve stylu programování a myšlení, RTOS mimořádně usnadňuje vývoj software. Mechanizmy RTOS, které jsou k dispozici, umožňují provádět mnoho věcí jednodušeji a programovat rychleji.

Příklad programu s více úlohami Aplikace, má plnit následující úkoly: Regulovat motor Vyhodnocovat snímač otáček Dotazovat se na stav klávesnice Aktualizovat informace na displeji Komunikovat přes sériovou linku Úlohy lze snadno oddělit. Ideálně pro každou úlohy napsat samostatný program. Problém: úlohy musejí běžet na jednom procesoru a vzájemně si předávat data (např. snímač -> displej) Zde pomáhá RTOS – každý program je pak založen jako samostatný proces neboli úloha (task).

Procesy a prováděcí toky Jednotlivé činnosti, které se mají souběžně provádět se označují jako procesy nebo thready (vlákna, prováděcí toky), někdy také úlohy (tasks). Obvyklá terminologie (např. ve Windows): Proces = jedna z paralelně prováděných činností, což může být běžící program (např. Word), ale i činnost prováděná systémem (např. komunikace s uživatelem). OS umožňuje aby se několik programů vykonávalo souběžně (např. Word, Internet Explorer, …) Thread = činnost, která se provádí uvnitř procesu. Např. IE může obsahovat několik threads běžících současně – jedna komunikuje s uživatelem, druhá přijímá a odesílá data přes internet…

Co je proces Název proces budeme používat pro každou z paralelně prováděných činností = úlohu. Definice: Proces je určitý úsek kódu programu, který se může začít vykonávat, jehož vykonávání může být dočasně pozastaveno a později znovu pokračovat. A to vše jednoznačně daným způsobem. V RTMON proces == funkce jazyka C.

Výhody rozdělení aplikace na více procesů (výhody použití RTOS) Kód procesu muže být mnohem jednodušší pokud se soustředí na provádění jen jedné věci. Složitost zvětšuje pravděpodobnost chyby a chyba navíc pravděpodobně ovlivní všechny úkoly o které se proces stará. Je snadné přidat nebo odebrat procesy z aplikace, tj. aplikace jsou škálovatelné (scalable). Přidání nových vlastností = přidání nových procesu. Procesy mohou být zastavovány a spouštěny za běhu, což se hodí pro dynamické změny konfigurace nebo i jen proto aby se zastavil „problémový“ proces. Zpracování procesu muže být snadno rozděleno na několik procesorů. Různí programátoři mohou pracovat na různých procesech bez nebezpečí, že si vzájemně přepíší svou práci. Každý proces existuje ve svém paměťovém prostoru. Je-li v něm nějaká chyba, ohrozí jen tento proces a ne jiný (nemůže přepsat paměť jinému procesu). - toto platí u RTOS se správou paměti, ne pro náš RTMON u HC-08.

Operační systém RTMON Jednoduchý operační systém pro mikropočítač HC-08 Umožňuje souběžný běh několika úloh, preemptivní multitasking. Úlohy mohou mít přiděleny priority v rozsahu 1 až 254. Priorita 1 je nejvyšší, proces má přednost před procesy s nižší prioritou (vyšším číslem). Úlohy mohou být spuštěny jednorázově a nebo periodicky (RTMON opakovaně spouští úlohu se zadanou periodou). Časové údaje se uvádějí v ticích OS. Tik je nastaven na 50 ms.

Základní objekty RTMON Proces = úloha Operace s procesy: vytvořit, spustit, pozastavit, zastavit, zrušit. Schránka = pro předávání dat mezi procesy Operace se schránkou: vytvořit, zapsat do schránky zprávu, číst ze schránky zprávu.

Vybrané služby RTMON Podrobněji viz dokument Přehled funkcí RTMON. char rtm_init(IDPROC** init_id); Inicializace systému RTMON. Musí být volána na začátku programu. char rtm_end(IDPROC* init_id); Ukončení činnosti RTMON. Volá se na konci programu. char rtm_create_p(const char* pname, unsigned char prio, void(*pfunc)( ), int stack_size, IDPROC** proc_id ); Vytvoří nový proces. Pname – jméno procesu, nevyužívá se. Prio – priorita procesu, 1 až 254. Pfunc – ukazatel na funkci, která představuje tělo procesu. Stack_size – velikost zásobníku pro proces. Doporučená hodnota 32 Byte a více. Proc_id – proměnná, do které se uloží identifikátor vytvořeného procesu. (IDPROC)

Služby RTMON 2 char rtm_start_p(IDPROC* proc_id, int time_to_start, int time_period); Spuštění procesu Proc_id – identifikátor procesu, který se má spustit Time_to_start – počet tiků do startu procesu. 0 pokud se má spustit okamžitě. Time_period – perioda spouštění procesu v ticích. 0 pokud má být proces spuštěn jednorázově. char rtm_delay_p(IDPROC* proc_id, int time_to_delay); Pozastavení běhu procesu. Proc_id – identifikátor procesu, který se má pozastavit. Time_to_delay – doba pozastavení v ticích. 0 pokud se má pozastavit na neomezenou dobu (dokud nebude spuštěn jiným procesem). char rtm_continue_p(IDPROC * proc_id); Pokračování v běhu pozastaveného procesu.

Použití RTMON v našem programu Rozhraní v jazyku C Rtmon_08.H – hlavičkový soubor s deklaracemi služeb RTMON a dat Rtmon.lib – knihovna s kódem služeb

Omezení RTMON Maximální počet procesů: 10 Maximální velikost zásobníků pro všechny procesy: 1000 Byte Maximální počet schránek: 4 Maximální velikost dat ve všech schránkách: 32 byte. Žádné dva procesy nesmějí mít stejnou prioritu (není podporováno cyklické střídání procesů se stejnou prioritou na procesoru). Není podporováno dynamické rušení a vytváření procesů. Volání funkce rtm_abort_p proces sice vyřadí z plánování, ale neodstraní jeho datovou strukturu z paměti, takže stále platí celkové omezení maximálně 10 vytvořených procesů.

Příklad 1 - Stopky Zadání Program má na displeji zobrazovat čas. Stiskem tlačítka SW1 musí být možno stopky zastavit, stiskem SW2 opět spustit a stiskem SW3 resetovat. Řešení Srovnejme náročnost řešení bez využití operačního systému (RTMON) a s jeho využitím – tj. s rozdělením programu na několik procesů (úloh)…

Srovnání řešení Bez využití RTOS: Uběhl již čas? -> aktualizuj hodiny Je stisknuta klávesa? –> proveď akci >> Vše řešíme najednou, což je obtížné. Co když při obsluze stisku klávesy nestihneme včas aktualizovat čas? S využitím RTOS: Procesy běží současně (paralelně), můžeme řešit 2 oddělené úlohy: čas a reakce na klávesnici. Operační systém se stará o to, aby se úlohy vykonávaly souběžně. Priorita úlohy hodin může být vyšší, pak v případě potřeby přeruší méně důležitý proces obsluhy klávesnice a hodiny poběží správně

Program STOPKY RTMON Proces 1 Proces 2 hodiny klávesnice Dva procesy: Proces 1 = běh času a jeho zobrazení Proces 2 = komunikace s uživatelem (obsluha tlačítek) RTMON Proces 1 hodiny Spuštěn periodicky T = 1 sekunda Proces 2 klávesnice

Procesy Proces 2 - klávesnice Proces 1 - hodiny void hodiny() Aktualizuj počitadlo sekund Vypiš počitadlo sekund void klavesnice() while(1) { Je stisknuta klávesa? Pokud ano, pak proveď určenou činnost }

Řešení – funkce main() #include <stdio.h> #include “disp_gb60.h“ #include “rtmon_08.h“ // definice datovych struktur procesu IDPROC* init, *p1, *pk; // definice promennych programu int cas; char buff[20]; void main(void) { dinit(); dcls(); dtext("RTMON!"); rtm_init(&init); // vytvoreni procesu rtm_create_p("proc1", 5, proc1, 100, &p1 ); rtm_create_p("proc2", 30, prockey, 48, &pk ); // spusteni procesu 1 rtm_start_p(p1, 0, 20); rtm_start_p(pk, 0, 0); // pozastaveni init procesu (main) rtm_delay_p(init, 0); // ukonceni cinosti programu rtm_ch_period_p(p1, 0); rtm_stop_p(p1); rtm_stop_p(pk); rtm_abort_p(p1); rtm_abort_p(pk); // ukonceni cinnosti rtmon rtm_end(init); for(;;) { __RESET_WATCHDOG(); /* feeds the dog */ } /* loop forever */ }

Řešení - procesy void proc1(void) { cas++; if ( cas > 99 ) cas = 0; void prockey(void) { while(1) __RESET_WATCHDOG(); // test tlacitka if ( PTAD_PTAD4 == 0 ) rtm_ch_period_p(p1,0); rtm_stop_p(p1); rtm_delay_p(pk, 10); // do uvolneni tlacitka } if ( PTAD_PTAD5 == 0 ) rtm_start_p(p1, 0, 20); rtm_delay_p(pk, 10); if ( PTAD_PTAD6 == 0 ) cas = 0; // RESET STOPEK dcls(); douta('0'); } // while rtm_stop_p(pk); void proc1(void) { cas++; if ( cas > 99 ) cas = 0; sprintf(buff, "%d", cas); dcls(); dtext(buff); // Ukonceni procesu rtm_stop_p(p1); }

Vytvoření projektu Vytvoříme „mixed“ projekt: ASM a C Do projektu vložíme soubory: rtmon_08.h rtmon.lib disp_gb60.h disp_gb60.asm

POZOR V záložce projektu „Link Order“ přesuňte rtmon.lib na konec seznamu. Před nahráním nového programu s RTMON do vývojového kitu vždy mikropočítač restartujte (tlačítkem RESET). Bez restartu se sice program nahraje správně, ale nepoběží!

Úkol 1 Upravte ukázkový program stopky tak, aby se na displeji zobrazoval čas ve formátu minuty:sekundy, např. 02:45 Dále zdvojnásobte rychlost běhu stopek. Přidejte možnost ukončení programu stiskem tlačítka SW4. Program se ukončí a vypíše na displej hlášení „RTMON konec“. Nápověda: pro ukončení programu s RTMON se použije znovuspuštění inicializačního procesu – rtm_continue_p(init);

Úkol 2 Vytvořte program hodiny s budíkem. Program bude na displeji zobrazovat čas ve formátu HH:MM:SS. Čas poběží reálnou rychlostí. Zároveň každou sekundu blikne LED1. Tlačítkem SW1 bude možno nastavit hodiny a stiskem SW2 minuty a to tak, že pokud je tlačítko stisknuto, pak se běh hodin zastaví a otáčením potenciometru lze měnit příslušnou hodnotu hodin nebo minut. Po uvolnění tlačítka hodiny opět běží. Ošetřete správný rozsah 0-23 hod resp. 0-59 min aby byl využit celý rozsah dráhy potenciometru. Tlačítkem SW3 se bude přepínat zobrazení hodin a nastavený čas budíku. V režimu zobrazení budíku bude možno změnit čas budíků stejným způsobem jako se nastavují hodiny. Program musí obsahovat alespoň 4 procesy RTMON, např. proces pro zobrazení hodin, proces pro obsluhu tlačítek, proces pro budík a proces pro blikání LED.

Zvládli jste základy RTMON Konec Zvládli jste základy RTMON