MIKROPOČÍTAČE
Transkript
Podklady pro přednášky z předmětu MIKROPOČÍTAČE Přednášející: prof. Ing. Vladimír Vašek, CSc. OBSAH 1 ÚVOD DO MIKROPOČÍTAČŮ ........................................................................................... 1 1.1 ROZVOJ MIKROPROCESOROVÉ TECHNIKY JAKO PROSTŘEDKU PRO ŘÍZENÍ TECHNOLOGICKÝCH PROCESŮ......................................................................................... 1 1.2 PŘEHLED POUŽITÍ µP: ............................................................................................... 2 1.3 ZÁKLADNÍ POJMY...................................................................................................... 5 1.4 PROGRAMOVÉ VYBAVENÍ: ...................................................................................... 5 1.4 PROGRAMOVÉ VYBAVENÍ: ...................................................................................... 6 1.6 INSTRUKCE ................................................................................................................. 8 1.6.1 Formáty instrukcí....................................................................................................... 8 1.7 PAMĚTI ........................................................................................................................ 9 1.7.1 Charakteristické parametry pamětí: ............................................................................ 9 1.7.2 Typy polovodičových pamětí:..................................................................................... 9 1.7.3 Zásobníková paměť ..................................................................................................10 1.8 ČÍSELNÉ SOUSTAVY.................................................................................................12 1.8.1 Desítková (dekadická) soustava.................................................................................12 1.8.2 Binární soustava .......................................................................................................13 1.8.3 Octalová (osmičková) soustava .................................................................................14 1.8.4 Hexadecimální (šestnáctková) soustava .....................................................................15 1.8.5 BCD kód (Binary Coded Decimal) ............................................................................16 1.8.6 Základní logické funkce ............................................................................................17 1.9 ZOBRAZENÍ ČÍSELNÝCH HODNOT ........................................................................19 1.9.1 Zobrazení ve dvojkovém doplňkovém kódu................................................................19 1.9.2 Zobrazení v přímém kódu..........................................................................................20 1.9.3 Dosazování příznaku přenosu (C)..............................................................................21 2 MIKROPOČÍTAČ MRS32................................................................................................... 1 2.1 POLE REGISTRŮ 68HC11 ........................................................................................... 4 2.1.1 Přehled registrů 1...................................................................................................... 4 2.1.2 Přehled registrů 2....................................................................................................... 6 2.2 PORTY.......................................................................................................................... 8 2.2.1 Port A........................................................................................................................ 8 2.2.2 Port D ......................................................................................................................11 2.2.3 PORT E ...................................................................................................................12 2.3 INSTRUKČNÍ SOUBOR ..............................................................................................12 2.3.1 Skupiny instrukcí......................................................................................................12 2.4 REGISTRY 68HC11.....................................................................................................13 2.5 PŘÍZNAKOVÝ REGISTR CCR ...................................................................................14 2.6 ZPŮSOBY ADRESOVÁNÍ...........................................................................................15 2.6.1 Implicitní (adresování akumulátoru) ..........................................................................15 2.6.2 Bezprostřední adresování (Immediate) .......................................................................15 2.6.3 Přímé a přímé rozšířené adresování ...........................................................................16 2.6.4 Indexové adresování..................................................................................................17 2.6.5 Relativní adresování..................................................................................................17 2.7 SYSTÉM PŘERUŠENÍ U 68HC11...............................................................................17 2.7.1 Postup při obsluze přerušení:.....................................................................................18 2.7.2 Maskovatelné přerušení (IRQ)...................................................................................20 2.7.3 Nemaskovatelné přerušení (XIRQ) ............................................................................21 2.7.4 Reset ........................................................................................................................21 2.7.5 Softwarové přerušení ................................................................................................22 3 MOTOROLA 68HC08........................................................................................................... 1 4 MODUL DISPLEJE LTN 211............................................................................................... 1 4.1 INICIALIZACE DISPLEJE ........................................................................................... 2 4.2 INSTRUKCE PRO OVLÁDÁNÍ DISPLEJE.................................................................. 2 4.3 INSTRUKCE LZE ROZDĚLIT NA:.............................................................................. 3 4.4 POPIS JEDNOTLIVÝCH INSTRUKCÍ......................................................................... 4 4.4.1 Smazání displeje ........................................................................................................ 4 4.4.2 Kurzor na počátek...................................................................................................... 4 4.4.3 Vstupní režim ............................................................................................................ 5 4.4.4 Režim displeje............................................................................................................ 5 4.4.5 Posun kurzoru nebo textu........................................................................................... 6 4.4.6 Funkční soubor .......................................................................................................... 6 4.4.7 Nastavení adresy v paměti RWM u generátoru znaků ................................................. 7 4.4.8 Nastavení adresy v paměti zobrazovaného textu ......................................................... 7 4.4.9 Čtení příznaku obsazení a adresy................................................................................ 8 4.4.10 Zápis dat do paměti textu a generátoru znaků ............................................................. 8 4.4.11 Čtení dat z paměti textu nebo generátoru znaků .......................................................... 9 4.5 PŘÍKLADY KOMUNIKACE MEZI 68HC11 A DISPLEJEM: ...................................... 9 4.6 PAMĚŤOVÝ PROSTOR DISPLEJE ............................................................................10 4.6.1 Mapa paměťového prostoru pro uložení zobrazovaných kódů: ...................................10 4.6.2 Generátor znaků........................................................................................................10 4.7 POPIS OVLADAČE DISPLEJE ...................................................................................12 4.7.1 Podprogramy ovladače:.............................................................................................12 5 ASSEMBLER......................................................................................................................... 1 5.1 PROGRAMOVÁNÍ 68HC11 V ASSEMBLERU............................................................ 1 5.2 DIREKTIVY.................................................................................................................. 4 5.3 ZÁZNAMY TYPU S.....................................................................................................10 5.3.1 Obsah záznamů typu S..............................................................................................10 5.3.2 Druhy záznamů typu S..............................................................................................12 5.3.3 Vytváření záznamů typu S.........................................................................................13 6 REAL – TIMOVÉ OPERAČNÍ SYSTÉMY......................................................................... 1 6.1 STRUKTURA RTOS..................................................................................................... 2 6.1.1 Jádro OS ................................................................................................................... 2 6.1.2 Data .......................................................................................................................... 2 6.2 JÁDRO RTOS - PROVÁDÍ PLÁNOVÁNÍ A PŘEPÍNÁNÍ............................................ 3 6.2.1 Příkazy pro změnu stavu úloh .................................................................................... 3 6.3 SPRÁVA A ŘÍZENÍ PAMĚTI ....................................................................................... 4 6.3.1 Statický systém.......................................................................................................... 4 6.3.2 Dynamický systém - technika plovoucí paměti............................................................ 4 6.3.3 Technika segmentace programu.................................................................................. 5 6.3.4 Sdílení kódu............................................................................................................... 6 6.4 PLÁNOVÁNÍ ÚLOH, PŘIDĚLOVÁNÍ PROCESORU.................................................. 7 6.5 PLÁNOVACÍ STRATEGIE........................................................................................... 8 6.5.1 Cyklické plánování..................................................................................................... 8 6.5.2 Prioritní strategie ....................................................................................................... 9 6.5.3 Kombinované strategie............................................................................................... 9 6.5.4 Preemtivní a nepreemtivní plánování .......................................................................... 9 PRIORITNÍ ÚROVNĚ ........................................................................................................11 6.6 RTOS PRO PC .............................................................................................................13 6.6.1 Datová struktura procesu ..........................................................................................14 6.6.2 Datová struktura schránky ........................................................................................15 6.6.3 Kódy chybových hlášení............................................................................................16 6.6.4 Služby pro práci s procesory .................................................................................17 6.6.5 Služby pro práci se schránkami a zprávami .........................................................21 6.7 CHARAKTERISTIKA RTMON - HC11 ......................................................................24 6.7.1 Volání služeb ............................................................................................................25 6.7.2 Popis služeb..............................................................................................................26 6.8 PROGRAMOVÝ SYSTÉM DEMORTM......................................................................39 7 PROPOJENÍ S TECHNOLOGICKÝM PROCESEM......................................................... 1 7.1 JEDNOTKA PRO STYK S TECHNOLOGICKÝM PROCESEM.................................. 1 7.1.1 Osmibitový A/D PŘEVODNÍK + 8 binárních vstupů .............................................. 1 7.1.2 Dvanáctibitový A/D převodník................................................................................. 3 7.1.3 Osmibitový D/A převodník + 8 binárních výstupů ................................................... 5 7.1.4 Dvanáctibitový D/A převodník................................................................................. 6 7.1.5 Obvod binárních vstupu/výstupu ................................................................................ 8 7.2 STANDARDNÍ ROZHRANÍ RS232C ........................................................................... 8 7.2.1 Přenosy na větší vzdálenost .......................................................................................13 7.2.2 Časová synchronizace signálů ...................................................................................14 RS 232 C ≈V24 s par. V28 ..................................................................................................14 8 PLC ( PA ) SYSTÉMY........................................................................................................... 1 8.1 PA SE SKLÁDÁ Z......................................................................................................... 1 8.2 TŘÍDĚNÍ PA- DLE RŮZNÝCH HLEDISEK................................................................. 2 8.3 BLOKOVÉ SCHÉMA TYPICKÉHO PA ....................................................................... 4 8.4 POČÍTAČOVĚ ŘÍZENÁ VÝROBA (CIM).................................................................. 5 8.5 ZAŘAZENÍ PROGRAMOVATELNÉHO AUTOMATU MEZI ŘÍDICÍ SYSTÉMY ..... 6 8.6 HLAVNÍ CHARAKTERISTIKA PA ............................................................................. 7 8.7 TYPY PA....................................................................................................................... 7 8.7.1 Hledisko konfigurace PLC ......................................................................................... 7 8.7.2 Hledisko velikosti a konstrukčního uspořádání............................................................ 7 8.7.3 Modulární PLC.......................................................................................................... 8 8.7.4 Programovatelné pracovní stanice .............................................................................. 8 8.8 KONSTRUKČNÍ A ELEKTRICKÉ PROVEDENÍ PA .................................................. 9 8.9 BINÁRNÍ VSTUPNÍ JEDNOTKY................................................................................10 8.10 BINÁRNÍ VÝSTUPNÍ JEDNOTKY .............................................................................11 8.11 KOMBINOVANÉ JEDNOTKY BINÁRNÍCH VSTUPŮ A VÝSTUPŮ ........................12 MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ 1-1 Poznámky 1 ÚVOD DO MIKROPOČÍTAČŮ 1.1 Rozvoj mikroprocesorové techniky jako prostředku pro řízení technologických procesů 1946 - John von Neumann formuloval moderní koncepci číslicového počítače 1957 – 58 první aplikace číslicových počítačů pro řízení technologických procesů 1960 - první minipočítače, řídicí počítače se z nich vytváří koncem šedesátých let - logické sítě s pevnou strukturou - logické sítě s proměnnou strukturou PLA (Programmable Logic Array) PROM (Programmable Read Only Memory) 1971 - mikroprocesor 4004 Intel - 4 bity 1972 - mikroprocesor 8008 Intel – 8 bitů stavebnice MCS 4, MCS 8 1974 – mikroprocesor 8080 mikroprocesorové řezy I 3000 1976 - I 8085, Z 80, M 660 1978 - I 8086, Z 8000, M 6800 – 16 bitů jednočipové mikropočítače I 8048 1984 - I 80286 – 16 bitů až 16 MB RAM, 1985 - I 80386 – 32 bitů (80386 SX vnitřně) až 4 GB RAM Poznámky MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ 1-2 Poznámky 1.2 Přehled použití µP: • měřící a regulační technika – měřící ústředny, regulátory, řídicí systémy výpočetní technika – procesory, terminály, • číslicové řízení strojů – obráběcí stroje, vstřikovací stroje, dopravníky, vlastní výroba µ elektronických součástek, • řízení robotů a manipulátorů, • automobily – řízení zapalování a dalších agregátů, signalizace, (úspora energie), • registrační pokladny – digitální zobrazovače, mincové automaty, prodej jízdenek, systémy rezervace letenek, • domácnosti – tzv. domácí počítače, • hračky – využití nedokonalých obvodů. Poznámky MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ Poznámky Aplikace µP pro řízení technologických procesů Poznámky 1-3 MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ Poznámky Sběrnice: • adresová • datová • řídicí Poznámky 1-4 MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ 1-5 Poznámky 1.3 Základní pojmy Mikroprocesor • základní část mikropočítače, • v podstatě centrální jednotka CPU (Central Procesing Unit), • obsahuje: - aritmeticko – logickou jednotku ALU (Aritmetic Logic Unit), - pracovní registry vyrovnávací paměti a řídicí obvody – řadič. Mikropočítač • mikroprocesor, • obvody zajišťující komunikaci s okolím (V/V zařízení), • operační paměť. Mikropočítačový systém: • technické vybavení • programové vybavení 1.4 Poznámky MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ Poznámky Programové vybavení: 1) základní 2) aplikační Základní: • programovací jazyky: - strojově orientované (ass.) - problémově orientované • překladače jazyků, • operační systémy pro práci v reálném čase, • služební programy, • knihovna standardních pp. • testovací a diagnostické programy, • vytváří si uživatel sám, • universální aplikační moduly (pro řešení podobných úloh), • technologicky orientované (pro jistý typ aplikace). Aplikační: Poznámky 1-6 MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ 1-7 Poznámky 1.5 Registry CPU Registr • logický obvod pro dočasné uložení informace, • některé registry jsou přístupné programátorovi (programem lze měnit jejich obsah), • jiné ne. Základní registry ( přístupné programátorovi) • čítač instrukcí – obsahuje vždy adresu instrukce, která se bude provádět v příštím kroku, • universální registry – mají obvykle délku jedno slovo a jsou určeny k uložení dat, která slouží jako operandy při provádění instrukcí, • indikační registry – obvykle jednobitové registry, které indikují určitý stav, např. příznak znaménka nuly, přenosu, parity, • ukazatel zásobníku - obsahuje aktuální adresu vrcholu zásobníkové paměti. Registry nepřístupné programátorovi: Poznámky • instrukční registr – obsahuje kód instrukce, která se právě provádí, • adresový registr paměti – obsahuje adresu místa paměti, s níž se právě pracuje, • datový registr paměti – slouží k uložení informací (dat nebo instrukcí) přenášených mezi hlavní pamětí a CPU, MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ 1-8 Poznámky 1.6 Instrukce Každá dílčí činnost – operace – je uskutečněna jednou instrukcí. Počet instrukcí u současně používaných µ - procesorů může být max. 256. V zásadě lze instrukci rozložit na části: • instrukční kód, který udává, jaká operace se má provést • určení způsobu adresování • operandy, se kterým instrukce pracuje – pokud je zapotřebí Délka instrukce 1 – 3 byty. 1.6.1 Formáty instrukcí ABA adr. inst. kód ADDA #$3F adr. inst. kód adr.+1 přímý operand LDX #$1275 adr. inst. kód Poznámky adr.+1 nižší řády adresy adr.+2 vyšší řády MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ 1-9 Poznámky 1.7 Paměti 1.7.1 Charakteristické parametry pamětí: • kapacita – množství dat, které lze do paměti umístit (byty, kB – nás. 1024, MB – nás. 1048 576). • cyklus paměti – minimální časový interval mezi po sobě jdoucími příkazy k činnosti paměti • vybavovací doba – časový interval mezi požadavkem na přenos informace z paměti a objevením informace na výstupu paměti • cena jednoho bitu – podíl ceny a kapacity paměti 1.7.2 Typy polovodičových pamětí: RWM, RAM – (random Access memory) – výběr i uložení ROM – (read only memory) – jen výběr (program zavádí výrobce) PROM – (programmable read only memory) – jen výběr (program si zavádí uživatel) EPROM – opakované nahrávání uživatelem, mazání UV zářením (omezený počet) EEPROM - elektronicky mazatelné pevné paměti Poznámky MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ 1 - 10 Poznámky 1.7.3 Zásobníková paměť Je vymezený úsek paměti RAM pro uchování (přechodné) hodnot údajů a adres. (zpracování přerušení, vyvolání a návrat z podprogramů). Zásobníková paměť typu LIFO (last in- first out) Ukazatel zásobníku obsahuje adresu vrcholu zásobníku. (SP) Poznámky MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ Poznámky Poznámky 1 - 11 MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ 1 - 12 Poznámky 1.8 Číselné soustavy 1.8.1 Desítková (dekadická) soustava • je třeba zobrazit 10 stavů – číslice 0 - 9 Dvojková (binární) soustava • používá pouze 2 stavy (např. vypnuto – zapnuto, vyšší úroveň signálu – nižší úroveň signálu apod…) číslice 0 - 1 Matematické zobrazení číselné soustavy N = ( a n r n + a n −1r n −1 + ....... + a 0 r 0 + .... + a n r − n ) a = 0 − 9; r = 10 n– určuje pozici v čísle 2 1 0 −1 Příklad: (937,5)10 = (9 * 10 ) + (3 * 10 ) + (7 *10 ) + (5 * 10 ) = 900 + 30 + 7 + 0,5 = 937,5 (10110,11)2 = (1 * 24 ) + (0 * 23 ) + (1 * 22 ) + (1 * 21 ) + (0 * 20 ) + (1 * 2−1 ) + (1 * 2−2 ) Převod desítkového čísla na dvojkové: 102 : 2 = 51 zbytek 0 51 : 2 = 25 1 25 : 2 = 12 1 12 : 2 = 6 0 6 : 2 = 3 0 3 : 2 = 1 1 1 : 2 = 0 1 (102)10 = (1100110) 2 Zkouška: 0 * 20 + 1 * 21 + 1* 22 + 0 * 23 + 0 * 24 + 1 * 25 + 1 * 26 = 2 + 4 + 32 + 64 = 102 Poznámky MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ 1 - 13 Poznámky 1.8.2 Binární soustava Pravidla dvojkové aritmetiky: 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 (1) Nevýhody: váha • čísla jsou dlouhá • časté chyby • špatně se pamatují 7 6 5 4 3 2 1 0 2 2 2 2 2 2 2 2 1 0 0 1 0 1 0 1 1 * 2 0 + 0 * 21 + 1 * 2 2 + 0 * 2 + 1 * 2 4 + 0 * 2 5 + 0 * 2 6 + 1 * 2 7 = = 1 + 4 + 16 + 128 = (149 ) 10 = (10010101 ) 2 max (11111111) 2 = (255)10 K převodu mezi dvojkovými a desítkovými čísly se používají KÓDY. KÓD je pravidlo, podle něhož určité kombinaci nul a jedniček se přiřazuje určité desítkové číslo. Poznámky MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ Poznámky 1.8.3 Octalová (osmičková) soustava 2 149: 2 5 1 0 0 1 0 1 0 1 5 * 8 0 + 2 * 81 + 2 * 8 2 = 5 + 16 + 128 = (149 )10 = ( 225 ) 8 3 252: 7 4 1 1 1 1 1 1 0 0 4 * 8 0 + 7 * 81 + 3 * 8 2 = 4 + 56 + 192 = ( 252 )10 = ( 374 ) 8 max: ( 377 ) 8 = ( 255 )10 tři číslice : nejvyšší řád 0÷3 zbývající řády 0÷7 Poznámky 1 - 14 MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ Poznámky 1.8.4 Hexadecimální (šestnáctková) soustava 9 149: 5 1 0 0 1 0 1 0 1 vyšší hex. číslice nižší hex. číslice 5 * 160 + 9 *161 = 5 + 144 = (149)10 = (95)16 F 252: C 1 1 1 1 1 1 0 0 12 *160 + 15 * 161 = 12 + 240 = ( 252)10 = ( FC )16 max ( FF )16 = (255)10 dvě hex. číslice 0 ÷ F Poznámky 1 - 15 MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ 1 - 16 Poznámky 1.8.5 BCD kód (Binary Coded Decimal) 9 97: 7 1 0 0 1 0 1 1 1 vyšší dek. číslice nižší dek. číslice Dvě číslice 0 ÷ 9 Max (99)10 Kód 8421: 0 0 0 0 0 7 0 1 1 1 14 (E) 1 1 1 0 1 0 0 0 1 8 1 0 0 0 15 (F) 1 1 1 1 2 0 0 1 0 9 1 0 0 1 3 0 0 1 1 10 (A) 1 0 1 0 4 0 1 0 0 11 (B) 1 0 1 1 5 0 1 0 1 12 (C) 1 1 0 0 6 0 1 1 0 13 (D) 1 1 0 1 Poznámky MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ Poznámky 1.8.6 Základní logické funkce Logický součet (NEBO, OR) A B C 0 0 0 0 1 1 1 0 1 1 1 1 A+B=C A U B Logický součin („A“, AND) A B C 0 0 0 0 1 0 1 0 0 1 1 1 A*B=C A∩B Negace A B 0 1 1 0 Poznámky A= B B=A 1 - 17 MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ 1 - 18 Poznámky Ekvivalence A B C C = A * B + A * B = A * B * A * B = ( A + B) * ( A + B) = 0 0 1 = AA + BA + AB + B B = BA + A B 0 1 0 1 0 0 1 1 1 Exklusive – OR A B C C = AB + AB = AB * AB = ( A + B) * ( A + B) = 0 0 0 = AA + AB + B A + BB = AB + B A 0 1 1 1 0 1 1 1 0 Poznámky MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ Poznámky 1.9 Zobrazení číselných hodnot 1.9.1 Zobrazení ve dvojkovém doplňkovém kódu • kladné hodnoty v přímém dvojkovém kódu • záporné hodnoty – dvojkové doplňky • 7. bit představuje znaménko • vytvoření dvojkového doplňku : negace kladného čísla a přičtení 1: Př: (12)10 = 0:+ 0000 1100 (−12)10 = 1111 0011 + 0000 0001 1111 0100 Odečítání = přičtení dvojkového doplňku Zobrazení čísel od +127 - 0111 1111 0 - 0000 0000 -128 - 1000 0000 . . Poznámky 1: - 1 - 19 MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ 1 - 20 Poznámky Při práci s většími čísly slučujeme několik slabik vedle sebe (znaménkový bit je nejvyšší). Sčítání s operandy většími než jedna slabika se provádí podprogramy, které využívají instrukce sečítání s přenosem. Př.: ADC reg. střadač + registr + C střadač 1.9.2 Zobrazení v přímém kódu • kladná i záporná čísla v přímém kódu na bitech 0 ÷ 6; • 7.bit znaménkový Př.: 5: 0000 0101 -5: 1000 0101 Při práci pouze s kladnými hodnotami zobrazení v rozsahu 0 ÷ 255 Poznámky MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ 1 - 21 Poznámky 1.9.3 Dosazování příznaku přenosu (C) Sčítání: C=1, když vznikne přenos z nejvyššího řádu: • jsou-li vstupní operandy sčítání v rozsahu (127, -128) je vždy C=1 při součtu dvou záporných čísel • jsou-li operandy nezáporné čísla (0 – 255) je C=1 při vzniku výsledku většího než 255 Př.: (- 3) + (- 5) = (- 8) 3: -3: + 8: -8: + 0000 0011 1111 1100 1 1111 1101 0000 1000 1111 0111 1 1111 1000 Př.: 255 + 1 = 256 (>255) + C=1 1111 1111 1 0000 0000 Poznámky 5: -5: + + 0000 0101 1111 1010 1 1111 1011 = 1111 1000 přenos C=1 MIKROPOČÍTAČE -ÚVOD DO MIKROPOČÍTAČŮ 1 - 22 Poznámky Odčítání: U instrukcí odčítání se do C dosadí negovaná hodnota bitu přenosu. („výpůjčka Př.: 5-3 5: 0000 -3: 0000 0101 0011 1111 1100 + 1 1111 1 0000 1111 0000 0101 1101 0010 po ukončení C =1= 0 1101 Př.: 4-6 4: 0000 -6: 0000 0100 0110 1111 1001 + 1 1111 Poznámky „) 1010 0 0000 1111 1111 0100 1101 1110 po ukončení C=Ō=1 = 2: 0000 -2: 1111 0010 1101 1 1111 1110 -2: MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 Poznámky 2 MIKROPOČÍTAČ MRS32 • mikroprocesor 68HC11A1 v rozšířeném režimu • porty A, B, C, D, E • 64 kB paměti • vnitřní paměť 256 byte • 64 byte blok spec. registrů • LCD displej - 2 řádky po 16 znacích 5 x 7 bodů • klávesnice - 15 tlačítek • 512 byte EEPROM • obvod reálného času • přerušovací systém Poznámky 2-1 MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 Poznámky Poznámky 2-2 MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 Poznámky Mapa paměťového prostoru: Poznámky 2-3 MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2-4 Poznámky 2.1 POLE REGISTRŮ 68HC11 Pole registrů obsahuje 64 řídicích a stavových registrů umístěných standardně od adresy $_000, tzn. že nejvyšší půlbajt adresy (nahrazený čárou) lze naprogramovat v registru INIT a tím umístit toto pole registrů na počátek kterýchkoliv čtyř kilobajtů adresovatelného paměťového prostoru. Po resetu se počátek registrového pole automaticky nastavuje na adresu $1000. 2.1.1 Přehled registrů 1 $1000 Bit 7 6 5 4 3 2 1 Bit 0 PA 7 PA 6 PA 5 PA 4 PA 3 PA 2 PA 1 PA 0 $1001 PORTA Reserved $1002 STAF STAI CWOM HNDS OIN PLS EGA INVB PIOC $1003 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 PORTC $1004 PB 7 PB 6 PB 5 PB 4 PB 3 PB 2 PB 1 PB 0 PORTB $1005 PCL7 PCL6 PCL5 PCL4 PCL3 PCL2 PCL1 PCL0 PORTCL $1006 Reserved $1007 DDC7 DDC6 DDC5 DDC4 DDC3 DDC2 DDC1 DDC0 DDRC $1008 0 0 PD5 PD4 PD3 PD2 PD1 PD0 PORTD $1009 0 0 DDD5 DDD4 DDD3 DDD2 DDD1 DDD0 DDRD $100A PE7 PE6 PE5 PE4 PE3 PE2 PE1 PE0 PORTE $100B FOC1 FOC2 FOC3 FOC4 FOC5 0 0 0 CFORC $100C OC1M7 OC1M6 OC1M5 OC1M4 OC1M3 0 0 0 OC1M Poznámky MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2-5 Poznámky $100D OC1D7 OC1D6 OC1D5 OC1D4 OC1D3 0 0 0 OC1D $100E Bit 15 14 13 12 11 10 9 Bit 8 TCNT H $100F Bit 7 6 5 4 3 2 1 Bit 0 TCNT H $1010 Bit 15 14 13 12 11 10 9 Bit 8 TIC1 H $1011 Bit 7 6 5 4 3 2 1 Bit 0 TIC1 L $1012 Bit 15 14 13 12 11 10 9 Bit 8 TIC2 H $1013 Bit 7 6 5 4 3 2 1 Bit 0 TIC2 L $1014 Bit 15 14 13 12 11 10 9 Bit 8 TIC3 H $1015 Bit 7 6 5 4 3 2 1 Bit 0 TIC3 L $1016 Bit 15 14 13 12 11 10 9 Bit 8 TOC1 H $1017 Bit 7 6 5 4 3 2 1 Bit 0 TOC1 L $1018 Bit 15 14 13 12 11 10 9 Bit 8 TOC2 H $1019 Bit 7 6 5 4 3 2 1 Bit 0 TOC2 L $101A Bit 15 14 13 12 11 10 9 Bit 8 TOC3 H $101B Bit 7 6 5 4 3 2 1 Bit 0 TOC3 L $101C Bit 15 14 13 12 11 10 9 Bit 8 TOC4 H $101D Bit 7 6 5 4 3 2 1 Bit 0 TOC4 L $101E Bit 15 14 13 12 11 10 9 Bit 8 TI4O5 H $101F Bit 7 6 5 4 3 2 1 Bit 0 TI4O5 L $1020 OM2 OL2 OM3 OL3 OM4 OL4 OM5 OL5 TCTL1 $1021 EDBG EDG4A EDG1B EDG1A EDG2B EDG2A EDG3B EDG3A TCTL2 $1022 OC1I OC2I OC3I OC4I I405I IC1I IC2I IC3I TMSK1 Poznámky MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2-6 Poznámky 2.1.2 Přehled registrů 2 Bit 7 6 5 4 3 2 1 Bit 0 $1023 OC1F OC2F OC3F OC4F 1405F IC1F IC2F IC3F $1024 TOI RTII PAOVI PAII 0 0 PR1 PR0 $1025 TOF RTIF PAOVF PAIF 0 0 0 0 TFLG2 $1026 DDRA7 PAEN PAMOD PEDGE DDRA3 14/O5 RTR1 RTR0 PACTL $1027 Bit 7 6 5 4 3 2 1 Bit 0 PACNT $1028 SPIE SPE DWOM MSTR CPOL CPHA SPR1 SPR0 SPCR $1029 SPIF WCOL 0 MODF 0 0 0 0 SPSR $102A Bit 7 6 5 4 3 2 1 Bit 0 SPDR $102B TCLR 0 SCP1 SCP0 RCKB SCR2 SCR1 SCR0 BAUD $102C R8 T8 0 M WAKE 0 0 0 SCCR1 $102D TIE TCIE RIE ILIE TE RE RWU SBK SCCR2 $102E TDRE TC RDRF IDLE OR NF FE 0 SCSR $102F R7/T7 R6/T6 R5/T5 R4/T4 R3/T3 R2/T2 R1/T1 R0/T0 SCDR $1030 CCF 0 SCAN MULT CD CC CB CA ADCTL $1031 Bit 7 6 5 4 3 2 1 Bit 0 ADR1 $1032 Bit 7 6 5 4 3 2 1 Bit 0 ADR2 $1033 Bit 7 6 5 4 3 2 1 Bit 0 ADR3 $1034 Bit 7 6 5 4 3 2 1 Bit 0 ADR4 $1035 0 0 0 PTCON BPRT3 BPRT2 BPRT1 BPRT0 BPROT $1036-8 Poznámky TFLG1 TMSK2 Reserved MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2-7 Poznámky $1039 ADPU CSEL IRQE DLY CME 0 CR1 CR0 OPTION $103A Bit 7 6 5 4 3 2 1 Bit 0 COPRST $103B ODD EVEN ELAT BYTE ROW ERASE ELAT PGM PPROG $103C RBOOT SMOD MDA IRVNE PSEL3 PSEL2 PSEL1 PSEL0 HPRIO $103D RAM3 RAM2 RAM1 RAM0 REG3 REG2 REG1 REG0 INIT $103E TILOP 0 OCCR CBYP DISR FOM FCOP TCON TEST1 $103F 0 0 0 0 1 NOCOP ROMON EEON CONFIG Poznámky MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2-8 Poznámky 2.2 PORTY Port B - výstupní adresy A8 - A15 pro adresování vnější paměti Port C - vstupně/výstupní vstup = DO - D7 data z vnější paměti výstup = A0 - A7 - nižší část adresy vnější paměti 2.2.1 Port A • zpřístupňuje systém časovačů. Umožňuje: • klasický čítač událostí (impulsní akumulátor) • trojnásobná funkce zachycení vstupu (input capture)- umožňuje díky časové základny přesně zachytit okamžik změny logické hodnoty signálu a tuto změnu signalizovat vyvoláním přerušení. Vstupy PA0 - PA2 • pětinásobná funkce komparace výstupu (output compare) - umožňuje pomocí časové základny vyvolat změnu logické hodnoty na výstupech P3 - P7 v přesně definovanou dobu. IC - output capture OC - output compare PAI - Pulse acumulator input Poznámky MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2-9 Poznámky Speciální registry vztahující se k portu A TIC1, TIC2, TIC3- registry pro zachycení časového okamžiku změny vstupu TOC1,.......TOC5- registry výstupních komparátorů časovače CFORC - bezprostřední nastavení plánované změny výst. časovače OCID - registr výst. dat, které ovlivňuje porovnání TOC1 TCTL1, RTL2 - řídicí registr časovače 1,2 TMSR1, 2 - registr pro maskování hlavních přerušení z čas. 1, registr pro maskování přerušení od vedlejších produktů časovače TFLG1 registr příznaků přerušení od hlavního časovače registr zachycení vedlejších produktů čas. 2 PACTL řídicí registr pulzního akumulátoru PACNT čítací registr impulzního akumulátoru Poznámky MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 Poznámky Připojení klávesnice Poznámky 2 - 10 MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2 - 11 Poznámky 2.2.2 Port D 1) Programovatelné číslicové vstupy/výstupy 2) Sériové komunikační kanály SCI a SPI Sériový asynchronní SCI - PDO vstup, PD1 výstup + obvod MAX232 - kanál s normou RS 232C - propojení MRS32 s PC. Rychlý synchronní sériový kanál SPI pro řízení periferních obvodů. PD2 - PD5: PD2,3 = vstup/výstup - závisí na režimu master/slave PD4 vysílač/přijímač synchronizačního hodinového sig. (master/slave) PD5 - výběr mikrořadiče pro aktuální komunikaci Poznámky MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2 - 12 Poznámky 2.2.3 PORT E Analogové nebo číslicové vstupy. Analogové vstupy - osmikanálové, osmibitové A/D s postupnou aproximací, výsledky se ukládají do čtyř výsledkových registrů ADR1 až ADR4, vstup 0 - 5 V. Číslicové vstupy - celá brána E, dá se číst z registru PORT E 2.3 Instrukční soubor 2.3.1 Skupiny instrukcí • Instrukce pro aritmetické operace • Instrukce pro logické operace • Řídící instrukce • Instrukce pro práci se zásobníkem • Instrukce pro testování střadače • Instrukce pro větvení programu • Instrukce pro nastavování počátečního stavu • Instrukce pro přesuny Tvar instrukce - instrukční slovo OPERAČNÍ KÓD Poznámky ZPŮSOB ADRES. POLE ADRESY MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2 - 13 Poznámky Operační kód • osmibitový • u některých 16 bitový (rozšířený o prefix), instrukce pro práci s index. reg. IY Délka instrukčního slova 1 - 4 byty. 2.4 REGISTRY 68HC11 Poznámky MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2 - 14 Poznámky 2.5 Příznakový registr CCR 7 S 1 0 X H 1 I U N 1 Z U V U C U U Po resetu • C přenos • V přetečení • Z nula • N záporný výsledek • I maskování maskovatelných nemaskovatelné přerušení • H • X povolení nemaskovatelného přerušení; 0 = enable. Je-li X = 0, je možno změnit na 1 jen RESETEM • S přerušení; 0 = enable nemá vliv na pomocný přenos blokování instrukce STOP; 1 = STOP není funkční N: předává se z bitu 7 střadače; je-li bit 7 střadač roven 1, je možno považovat výsledek za záporný (N=1); je-li 0 je kladný (N=0) Z: předává se ze střadače; je-li obsah střadače nulový (Z=1), není-li nulový (Z=0) H: předává se ze 3. bitu střadače; nelze jej využívat přímo k testování; používá jej instrukce DAA C: C=1, vznikne-li přenos z nejvyššího bitu; nebo k výpůjčce při odečítání jinak C=0 Poznámky MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2 - 15 Poznámky 2.6 Způsoby adresování 2.6.1 Implicitní (adresování akumulátoru) Zde je operand v instrukci určen implicitně, používá se při adresování registrů (IX, IY, SP); adresování akumulátoru označuje akumulátor A nebo B popř. D. Příklad: ABA <A>+<B> CLRA 0 DES < SP > -1 SP INX < IX > +1 IX A A 2.6.2 Bezprostřední adresování (Immediate) Operand je přímo vložen do instrukčního slova a to do bytu za operačním kódem Poznámky MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2 - 16 Poznámky 2.6.3 Přímé a přímé rozšířené adresování Operand je v paměti na adrese, která je zapsaná v adresové části instrukčního slova. Instrukční slovo 2 nebo 3 byty 256 adres 65536 adres - přímé rozšířené adresování operační kód $ FE $ 12 LDX $ 1275 Poznámky $ 75 MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2 - 17 Poznámky 2.6.4 Indexové adresování Indukční slovo - 2 (3) byty, poslední byte obsahuje indexovou část. Tato se přičte k registru indexovému, ve kterém je „bázová adresa“. Výsledek je adresa operandu. Obsah indexového se nemění. 2.6.5 Relativní adresování Pro relativní podmíněné a nepodmíněné skoky - dvoubytové instrukce - druhý byte je dvojkové číslo v doplňkovém kódu - tedy skok v rozsahu + 127 až - 128. Hodnota 2. bytu se přičítá k čítači instrukcí PC. 2.7 SYSTÉM PŘERUŠENÍ U 68HC11 Přerušovací systém umožňuje, aby CPU mikrořadiče odpovídal na žádosti strany V/V zařízení a nečekal v cyklu na ukončení činnosti v těchto zařízeních. Poznámky MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2 - 18 Poznámky 2.7.1 Postup při obsluze přerušení: a) Požadavkem na přerušení se ohlásí některý z periferních obvodů mikrořadiče (vnějších nebo vnitřních) b) CPU akceptuje požadavek na přerušení (jestliže je přerušení povoleno) na konci právě vykonávané instrukce a současně se znemožní přijetí další žádosti o přerušení (při nemaskovatelném přerušení XIRQ nastaví bity podmínkového registru X = 1 a I = 1 a u ostatních přerušení pak pouze I = 1). c) Přemístění všech obsahu registrů (s vyjímkou SP) do zásobníku. d) CPU přejde na provádění obslužného programu přerušení od adresy, která je určena příslušným vektorem přerušení e) Po provedení programu obsluhy přerušení (po instrukci RTI - Return from Interrupt) se obnoví původní obsah pracovních registrů, tj. opačná operace vzhledem k bodu c. Obrázek Přerušení přes vektor přerušení Poznámky MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 Poznámky Obrázek Přerušení přes pseudo vektor přerušení Poznámky 2 - 19 MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2 - 20 Poznámky 68HC11 má tři vnější přerušovací vstupy (Všechny jsou aktivní v nízké úrovni.): • reset • maskovatelné přerušení (IRQ) • nemaskovatelné přerušení (XIRQ) 2.7.2 Maskovatelné přerušení (IRQ) • proběhnou body a) až c) (9 cyklů). • bod d) -adresa programu obsluhy přerušení se získává z paměťových míst $FFF2 a $FFF3 • maska přerušení se nastaví na 1. Nastavením masky je definován postup v případě více současně vydaných požadavků na přerušení. Pokud je potřebné umožnit vnoření dalšího přerušení do obslužného programu, musí se maska přerušení instrukcí CLI na začátku obslužného programu přerušení vynulovat. Jestliže vnoření není požadováno, maska se nenuluje. • v šestnáctém cyklu se získává první instrukce obsluhy přerušení. • Provedením instrukce RTI se ze zásobníku obnoví všechny registry. Před přerušením byla maska přerušení ve stavu 0, po provedení instrukce RTI je přerušení znovu povoleno. Poznámky MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2 - 21 Poznámky 2.7.3 Nemaskovatelné přerušení (XIRQ) • Nemaskované přerušení se automaticky zamaskuje pouze po resetu maskovacím bitem X v CCR • Po povolení přerušení ze vstupu XIRQ v průběhu vykonávání programu nelze již tento maskovací bit vrátit zpět. • Na XIRQ připojujeme obvykle obvody, které generují přerušení s nejvyšší prioritou. • Nastaví se bitové masky X i I na 1 a získává se vektor přerušení z paměťových míst $FFF4 a $FFF5. 2.7.4 Reset • Pro nastavení mikrořadiče do počátečního stavu . • Přivedením nízké úrovně na vstup RESET. • CPU nastaví masky přerušení (I a X) a získává vektor přerušení z paměťových míst $FFFE a $FFFF. • Reset mikrořadiče se může uskutečnit také interně signálem COP (nazývaným též Watch dog). Poznámky MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2 - 22 Poznámky 2.7.5 Softwarové přerušení • Provede se instrukcí SWI. • Inicializuje se postup jako u normálního přerušení. • Vektor přerušení se získává z paměťových míst $FFF6 a $FFF7. • Toto přerušení nelze zamaskovat a při provádění instrukce SW1 se nastavují masky přerušení (I a X). • Mikrořadič má možnost ještě patnácti interních přerušení od vnitřních periferií. Princip provedení je stejný jako IRQ s vyjímkou přerušovacích vektorů, jež jsou po každé přerušení navzájem odlišné. Jestliže mikrořadič při provádění programu narazí na neznámý operační kód, vznikne další druh přerušení, zvaný ILLOP (Illegal Operational Code). Vektor přerušení se získává z paměťových míst $FFF8 a $FFF9. Provedení přerušení je stejné jako u přerušení SWI. Přerušovací vektory jsou všechny umístěny před koncem adresovatelného prostoru. Tento prostor je zpravidla vyplněn pamětí ROM (EPROM) a vektory přerušení představují standardní adresy, na kterých se nachází opět ve většině případů standardizované adresy, směřující do oblasti vnitřní paměti RWM. Na uvedená paměťová místa lze pak umístit nepodmíněné skoky (JMP), které směřují na počátky příslušných programů pro obsluhu jednotlivých typů přerušení. Přehled všech přerušení je dán tabulkou. Priorita uvedených přerušení je dána pořadím jejich uvedením v tabulce. V případě jednoho, vybraného ze skupiny maskovatelných přerušení, lze tuto prioritu převést na první místo v této skupině naprogramováním registru HPRIQ. Poznámky MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 Poznámky Příklad obsahu zásobníků: Poznámky 2 - 23 MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2 - 24 Poznámky Přehled a prioritní pořadí všech přerušení v mikrořadiči 68HC11: Druh přerušení Resetovací přerušení Nemaskov. přerušení Maskovat. přerušení Poznámky Typ přerušení Vektor přerušení Standardní RESET CLM COP ILLOP SW1 $FFFE-F $FFFC-D $FFFA-B $FFF8-9 $FFF6-7 obsah vektoru $E000*,$0000** $00FD $00FA $00F7 $00F4 XIRQ IRQ RTI TIC1 TIC2 TIC3 TOC1 TOC2 TOC3 TOC4 TOC5 TOF PAO PAIE SPI SCI $FFF4-5 $FFF2-3 $FFF0-1 $FFEE-F $FFEC-D $FFEA-B $FFE8-9 $FFE6-7 $FFE4-5 $FFE2-3 $FFE0-1 $FFDE-F $FFDC-D $FFDA-B $FFD8-9 $FFD6-7 $00F1 $00EE $00EB $00EE $00E5 $00E2 $00DF $00DC $00D9 $00D6 $00D3 $00D0 $00CD $00CA $00C7 $00C4 REZERVA REZERVA $FFD4-5 $FFC0-CI Maskování přerušení X*** I, STAI v PIOC I, RTII v TMSK2 I, IC1I v TMSK1 I, IC2I v TMSK1 I, IC3I v TMSK1 I, OC1I v TMSK1 I, OC2I v TMSK1 I, OC3I v TMSK1 I, OC4I v TMSK1 I, OC5I v TMSK1 I, TOI v TMSK2 I, PAOVI v TMSK2 I, PAII v TMSK2 I, SPIE v SPCR I,TIE-ILIE v SCCR2 MIKROPOČÍTAČE -MIKROPOČÍTAČ MRS32 2 - 25 Poznámky VYSVĚTLIVKY: * ** Monitor M-Buffalo Zaváděcí režim *** Po odmaskování nelze vrátit až do nového resetu CLM COP Monitorování hod. signálu Hlídání správného vykonávání programu Watch dog Neznámý operační kód ILLOP SWI XIRQ IRQ STAI v PIOC Poznámky RTI TIC1-3 Přerušení od reálného času Přerušení od funkce zachycení logické změny stavu signálu na vstupních přívodech brány A TOC1-5 Přerušení od funkce porovnání výstupu časovače následné změny logické úrovně na výstupech brány TOF Přetečení časovače PAO Přetečení impulsního akumulátoru PAIE Detekce aktivní hrany signálu na vstupu impulsního akumulátoru Programově vyvolané SPI Přerušení od periferního přerušení sériového kanálu Nemaskovatelné vnější SCI Přerušení od komunikačního přerušení sériového kanálu Maskovatelné vnější I Značí, že přerušení je přerušení maskováno nastavením bitu I v registru podmínkového kódu CCR Značí možnost zablokování přerušení bitem sta v registru PIOC MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky 3 MOTOROLA 68HC08 Poznámky 3-1 MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Poznámky 3-2 MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Poznámky 3-3 MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Poznámky 3-4 MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Centrální procesní jednotka procesní jednotka (CPU) Základní vlastnosti: • Taktovací frekvence 8MHz při 5V napájení a 4MHz při 3V napájení • 16 bitový ukazatel zásobníku s novými instrukcemi pro operace se • zásobníkem • 16 bitový indexový registr • 78 nových instrukcí oproti M6805 • Přesuny z paměti do paměti bez použití akumulátorů • Rychlejší 8 bitové násobení a nová instrukce pro dělení • Pokročilé řízení cyklů • 16 adresovacích režimů • Společný paměťový prostor pro program a data o velikosti 64KB • Plně statická architektura s podporou sníženého napájecího napětí Poznámky 3-5 MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Poznámky 3-6 MIKROPOČÍTAČE -MOTOROLA 68HC08 3-7 Poznámky Porovnání instrukčních sad Typy instrukcí HC 11 HC 08 Aritmetické 30 12 Logické 38 13 Přesun dat 22 10 Větvení programu 25 30 Nastavení poč. stavu 11 8 Práce se zásobníkem 8 6 Řízení CPU 5 3 Poznámky MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Poznámky 3-8 MIKROPOČÍTAČE -MOTOROLA 68HC08 3-9 Poznámky Modul časovačů (TIM) Základní vlastnosti • Každý kanál časovače lze nezávisle naprogramovat do režimu zachycení vstupu, porovnání výstupu nebo pulsně-šířkové modulace bez vyrovnávací paměti. • Jsou dostupné verze mikropočítačů se 2, 4 nebo 6 kanály. • Časovače mohou být v párech spojeny pro generování pulsněšířkové modulace. • Programovatelný dělič frekvence s možností výběru externího hodinového signálu. • Přetečení může přepnout kterýkoliv výstup časovače. • Zachycení vstupu může být aktivováno hranou nebo týlem impulsu. • Každý typ přerušení má svůj přerušovací vektor. Poznámky MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Poznámky 3 - 10 MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Poznámky 3 - 11 MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Poznámky 3 - 12 MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Poznámky 3 - 13 MIKROPOČÍTAČE -MOTOROLA 68HC08 3 - 14 Poznámky Sériové periferní rozhraní (SPI) Základní vlastnosti • Používá se pro rychlou synchronní komunikaci na kratší vzdálenosti • V rámci plošného spoje (A/D, D/A, LCD moduly, EEPROM, …) • Zařízení může pracovat v režimu master nebo slave • Maximální bitová rychlost u master jednotky je rovna frekvenci • sběrnice děleno 2 • Maximální bitová rychlost u slave jednotky je rovna frekvenci • sběrnice • Čtyři programovatelné rychlosti master jednotky • Programovatelná polarita a fáze hodinového signálu • Konec přenosu je signalizován přerušením • Vyrovnávací paměť pro příjem i vysílání Poznámky MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Sériové komunikační rozhraní (SCI) Základní vlastnosti • Používá se pro přenos dat na větší vzdálenosti • Plně duplexní provoz • Dvojitá vyrovnávací paměť přijímače i vysílače • Programovatelná délka datového rámce 8 nebo 9 bitů • Pokročilá detekce chyb na sériové lince • Programovatelná přenosová rychlost – výběr z 32 rychlostí • Podpora hardwarového generování a kontroly parity • Zcela oddělený přijímač a vysílač Poznámky 3 - 15 MIKROPOČÍTAČE -MOTOROLA 68HC08 3 - 16 Poznámky SAE J1850 BDLC rozhraní J1850 BDLC rozhraní Základní vlastnosti • Pokročilý multiplexní sběrnicový řadič • Typickou aplikací je automobilový průmysl • Přenosová rychlost 10,4kb/s, formát s proměnlivou šířkou pulzu (VPW) • Filtrování digitálního šumu • Detekce kolizí • Hardwarová podpora generování a kontroly CRC • Dva módy šetření elektrickou energií s automatickým probuzením v případě aktivity na sběrnici • Podpora příjmu a vysílání bloků • Možnost práce se 4 násobnou přenosovou rychlostí (41,6kb/s) Poznámky MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Poznámky 3 - 17 MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky CAN rozhraní Základní vlastnosti • Sériový komunikační protokol původně vytvořený Robertem • Boschem pro použití v komunikačních sítích vozidel • Nyní se stává velmi populární i v oblastech průmyslové automatizace • Délka dat 0 – 8B • Programovatelná přenosová rychlost až do 1Mb/s • Dvojitá vyrovnávací paměť přijímače • Trojitá vyrovnávací paměť vysílače s vnitřním řazením podle priority • Programovatelný loopback mód s podporou diagnostiky • Nastavitelný hodinový kmitočet MSCAN • Možnost propojení s časovacím modulem (TIM) pro synchronizaci sítě Poznámky 3 - 18 MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Poznámky 3 - 19 MIKROPOČÍTAČE -MOTOROLA 68HC08 3 - 20 Poznámky CAN - komunikační protokol SOF - symbol začátku rámce RTR -slouží k rozlišení zprávy zda jde o datovou zprávu (dominant) nebo žádost o přístup ke sběrnici (recessive) R0, R1 - řídicí pole (rezervováno) ERC - CRC oddělovač ACK - potvrzení ACD - oddělovač Řadič sběrnice II2C Základní vlastnosti: • Sběrnice byla vyvinuta firmou Philips za účelem komunikace mezi jednotlivými integrovanými obvody • Přenos probíhá pouze po dvou vodičích - data a hodinový signál • Existuje základní a rozšířená varianta I2C • Na sběrnici lze připojit 128 resp. 1024 (rozšířená varianta) obvodů s různou adresou • Frekvence hodin 100kHz, 400kHz, 1MHz (dle varianty) • Rychlost přenosu musí být přizpůsobena nejpomalejšímu zařízení na sběrnici Poznámky MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Poznámky 3 - 21 MIKROPOČÍTAČE -MOTOROLA 68HC08 3 - 22 Poznámky Modul generátoru hodinového kmitočtu s PLL Základní vlastnosti • Obvod PLL umožňuje celočíselné násobení frekvence připojeného krystalu • Výhodou je možnost použití krystalů s nižší rezonanční frekvencí (např. krystal z digitálních hodinek 32768kHz) čímž je dosaženo radikálního snížení vyzařovaného rušení • Programovatelný napěťově řízený oscilátor • Automatické řízení šířky pásma • Vygenerování přerušení při vstupu nebo opuštění uzamčeného stavu • Konfigurační bit umožňuje nastavení běhu oscilátoru i v režimu stop Poznámky MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Poznámky 3 - 23 MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Poznámky 3 - 24 MIKROPOČÍTAČE -MOTOROLA 68HC08 3 - 25 Poznámky Analogově/digitální převodník (ADC) Základní vlastnosti • Lineární postupná aproximace • Rozlišení převodníku 8, 10 nebo 12bitů (dle typu mikropočítače) • Jednorázové nebo kontinuální převody • Konec převodu je signalizován stavovým bitem nebo přerušením • Nastavitelná frekvence převodníku • Doba převodu 17ms (~59000 převodů za sekundu) • Analogový multiplexor umožňuje převádění více analogových kanálů jedním převodníkem Zabezpečovací a ochranné funkce Hardwarové • Monitorování hodinové frekvence • Monitorování napájecího napětí Softwarové • Watchdog • Kontrola operačních kódů Poznámky MIKROPOČÍTAČE -MOTOROLA 68HC08 3 - 26 Poznámky Režimy se sníženou spotřebou Režim Wait Aktivace pomocí instrukce WAIT Funkce: • zastavení hodin CPU • časování sběrnice stále běží • jednotlivé periferní obvody mohou být vypnuty pro další úsporu elektrické energie. Z režimu Wait lze vystoupit resetem, externím nebo interním přerušením. Typicky 50% úspora energie oproti režimu Run Režim Stop Aktivace pomocí instrukce STOP Funkce: • zastavení hodin CPU • mohou být zastaveny i hodiny sběrnice Z režimu STOP lze vystoupit pouze resetem nebo externím přerušením Poznámky MIKROPOČÍTAČE -MOTOROLA 68HC08 3 - 27 Poznámky Typická spotřeba 1 - 3mA. Programování vnitřní FLASH paměti (1/2) • Podpora programování přímo v cílové aplikaci • Mikropočítač je nutné přepnout do monitorovacího režimu • Propojení mikropočítače s vývojovým systémem zajišťuje In-Systém programátor Programování vnitřní FLASH paměti (2/2) Poznámky MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Poznámky 3 - 28 MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Poznámky 3 - 29 MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Poznámky 3 - 30 MIKROPOČÍTAČE -MOTOROLA 68HC08 Poznámky Poznámky 3 - 31 MIKROPOČÍTAČE -MODUL DISPLEJE LTN 211 4-1 Poznámky 4 MODUL DISPLEJE LTN 211 • LTN 211 je modul dvouřádkového bodového displeje s kapalnými krystaly • obsahuje zabudovaný mikrořadič HD 4478 a tak tvoří inteligentní zobrazovací jednotku. Součástí mikrořadiče je paměť RAM s kapacitou 40 zobrazovaných znaků pro každý řádek a generátor znaků se 160 pevnými znaky v paměti ROM a osmi uživatelem programovatelnými znaky v paměti RAM. • Spolupracuje se 4-bitovými i 8-bitovými procesory • Paměť zobrazovaných dat .......................80 znaků • Generátor znaků o ROM..................160 znaků 5x7 bodů o RAM.................. 8 znaků 5x7 bodů • Paměť zobrazovaných znaků i uživatelem definovaných znaků lze přečíst nadřazeným procesorem • Široký instrukční soubor, např. funkce: o Smazání displeje, funkce home, zapnutí/vypnutí displeje, o Zapnutí/vypnutí kurzoru, blikání kurzoru, posun kurzoru/textu • Vnitřní automatický reset po připojení napájecího napětí. • Modul displeje je k mikroprocesoru 68 HC11 připojen datovou sběrnicí DO - D7 a řídicími signály E, RS a R/W. Výběrový signál E je generován adresovým dekodérem: signál výběru registru RS přísluší nejnižšímu bitu adresy a signál zápis/čtení R/W je dostupný přímo z mikroprocesoru. • Displej je umístěn na adrese $8000 (řídicí registr) a $8001 (datový registr) Poznámky MIKROPOČÍTAČE -MODUL DISPLEJE LTN 211 4-2 Poznámky 4.1 Inicializace displeje Displej se automaticky inicializuje po připojení napájecího napětí vnitřním obvodem pro reset. Po resetu se provedou následující instrukce: • Smazání displeje • Nastavení konfigurace: o DL - 1.....šířka datové sběrnice 8 bitů o D - 0.....vypnutý displej o C - 0.....vypnutý kurzor o B - 0.....vypnuté blikání o I/D - 1.....automatická inkrementace adresy při zápisu o S - 0.....odsouvání textu z naplněného displeje vypnuto • Naplnění paměti pro zobrazované znaky hodnotou $00 Po dobu automatické inicializace displeje je nastaven příznak vnitřního zpracování (BF = 1). Doba inicializace je asi 10 ms od dosažení úrovně napájecího napětí 4,5 V. 4.2 Instrukce pro ovládání displeje Nadřazený procesor může přímo ovládat pouze dva registry mikrořadiče displeje (tj. instrukční registr IR a datový registr DR) a to pouze v době, kdy mikrořadič displeje není zaměstnán vnitřním zpracováním informace. Před každým započetím vnitřní operace mikrořadiče je do těchto registrů zapsána stavová informace. Operace mikrořadiče jsou ovládány signály DO-D7, RS a RW. Tyto signály jsou nadále nazývány instrukcemi. Poznámky MIKROPOČÍTAČE -MODUL DISPLEJE LTN 211 4-3 Poznámky 4.3 Instrukce lze rozdělit na: • Instrukce pro nastavení pracovního režimu • Instrukce pro nastavení adresy interní paměti RWM • Instrukce pro přenos zobrazovaných dat do/z interní paměti RWM • Ostatní instrukce Tab. Instrukční soubor displeje LTN 211 INSTRUKCE\KÓD RS D7 RW Smazání displeje 0 0 0 Kurzor home 0 0 0 Vstupní režim 0 0 0 Režim displeje 0 0 0 Posun kurzoru/displ. 0 0 0 Funkční soubor 0 0 0 Nastav adr v pam. gen. zn. 0 0 0 Nastavení adresy v paměti 0 0 1 textu: Čtení BF a adresy 0 1 BF Zápis dat 1 0 d Čtení dat 1 1 d Kde: I/D = 1 S =1 D =1 C =1 B =1 S/C=1 R/L=1 DL =1 BF =1 inkrementace a. č. odsouvání textu displej zapnutý kurzor zapnutý znak na pozici kurzoru bliká posun textu posun doprava 8-bit.instrukce provádí se interní operace D6 D5 D4 D3 D2 D1 D0 čas(µs) 0 0 0 0 0 0 1 a 0 0 0 0 0 1 a a 0 0 0 0 1 DL a a 0 0 0 1 S/C 1 a a 0 0 1 D R/L 0 a a 0 1 I/D C * * a a 1 * S B * * a a 82-1640 40-1600 40 40 40 40 40 40 a d d a d d a d d a d d a d d a d d a d d 1 40 40 I/D = 0 dekrementace a. č. S = 0 text stojí D = 0 displej vypnutý C = 0 kurzor vypnutý B = 0 znak na pozici kurzoru nebliká S/C= 0 posun kurzoru R/L= 0 posun doleva DL =0 4.bit. instrukce BF =0 interní operace skončily DŮLEŽITÉ POZNÁMKY: • Před každým vysláním instrukce pro displej je třeba se nejprve přesvědčit, že není nastaven příznak obsazení (BF = 0). Pokud se tato kontrola neprovádí, musí být Poznámky MIKROPOČÍTAČE -MODUL DISPLEJE LTN 211 4-4 Poznámky doba mezi dvěma následujícími po sobě zpracovávanými instrukcemi mnohem delší než je doba vykonávání instrukce (viz poslední sloupec v tabulce). • Po provedení instrukcí zápisu a čtení do/z interní paměti RWM se automaticky zvyšuje či snižuje stav adresového čítače. Protože se tento posun provádí až po vynulování příznaku obsazení je v tomto případě třeba vyčkat ještě na dokončení této adresové operace tj. asi 6 µs. • Instrukce se zadávají zápisem hodnoty v poli D0 - D7 na adresu $8000, data zápisem na adresu $8001. Ćtecí instrukce se provádějí čtením příslušné adresy. Signály RS a R/W se generují hardwarově. 4.4 Popis jednotlivých instrukcí 4.4.1 Smazání displeje Kód: R R D D SW 7 0 0 0 0 0 0 0 0 0 0 0 1 Náplní paměť pro zobrazovaný text kódem mezery ($20). Vynuluje adresový čítač, tj. nastaví kurzor na pozici prvního znaku na prvním řádku. Nastaví režim inkrementace adresového čítače (1/D = 1), režim posunu textu (S) se nemění. 4.4.2 Kurzor na počátek R R D D S W 7 0 0 0 0 0 0 0 1 * Kód: 0 0 Poznámky MIKROPOČÍTAČE -MODUL DISPLEJE LTN 211 4-5 Poznámky Vynuluje adresový čítač, tj. nastaví kurzor na pozici prvního znaku na prvním řádku. Data v paměti zobrazovaného textu zůstávají nezměněna. 4.4.3 Vstupní režim R R D D S W 7 0 0 0 0 0 0 1 I/D S Kód: 0 0 Definuje chování displeje při zápisu a čtení dat. • I/D - Při zápisu nebo čtení dat se zvyšuje (I/D = 1) nebo snižuje (I/D = 0) adresa v adresovém čítači o 1. Kurzor se přitom pohybuje doprava (I/D = 1) nebo doleva (I/D = 0). K nastavené změně adresy dochází i při zápisu či čtení do/z paměti generátoru znaků. • S - Odsouvání textu. Při S = 1 se zobrazovaný text při zápisu do paměti RAM posouvá po displeji. Vypadá to jako by kurzor stál na místě a text se odsouval doprava nebo doleva v závislosti na I/D. Při čtení z paměti se text nepohybuje. 4.4.4 Režim displeje Kód: R R D D S W 7 0 0 0 0 0 0 0 0 D C B Nastavuje zobrazovací režim, zapíná a vypíná displej. Poznámky MIKROPOČÍTAČE -MODUL DISPLEJE LTN 211 4-6 Poznámky D - Zapnutí a vypnutí displeje. Pro D = 1 je displej zapnut. Po vypnutí displeje (D = 0) zůstávají zobrazovaná data v paměti a jsou opět zobrazena ihned po zapnutí displeje(D= 1). C - Zobrazení kurzoru. Kurzor je zobrazen jako podtržítko na osmém řádku matice znaku. Pozice kurzoru odpovídá obsahu adresového čítače. B - Blikání znaku. Je-li B = 1 znak na pozici kurzoru bliká. Blikání je provedeno záměnou zobrazovaného znaku a plného obdélníčku (znak FF hex, viz. Tabulku v příloze D) v taktu 2.5 Hz. 4.4.5 Posun kurzoru nebo textu R R D D S W 7 0 0 0 0 1 S/C R/L * * Kód: 0 0 • libovolná hodnota . Posunuje kurzor (S/C = 0) nebo text (S/C = 1) doprava (R/L = 1) nebo do leva (R/L = 0) bez zápisu nebo čtení zobrazovaných dat. Funkce je použitelná pro opravy a prohlížení zobrazovaného textu. Po přechodu za 40 znak prvního řádku kurzor přejde na řádek druhý. Při posunu textu se oosunují oba řádky zároveň. Text se pohybuje pouze vodorovně, tzn., že text na druhém řádku se nemůže posunout na řádek první. Při posunu textu se nemění obsah adresového čítače. 4.4.6 Funkční soubor R R Poznámky D D MIKROPOČÍTAČE -MODUL DISPLEJE LTN 211 4-7 Poznámky S W Kód: 0 • 0 7 0 0 0 1 DL 1 0 * * libovolná hodnota . Nastavení délky instrukcí. Pro osmibitové instrukce je DL = 1, pro čtyřbitové je DL = 0. Upozornění: Pro správnou součinnost modulu displeje s mikroprocesorem 68HC11 je třeba dodržet nastavení DL = 1. 4.4.7 Nastavení adresy v paměti RWM u generátoru znaků R R D D S W 7 0 Kód: 0 0 0 1 a a a a a a ← Vyšší bity adresy Nastaví binární adresu „aaaaaa“ do adresového čítače. Po této instrukci je možné zapisovat nebo číst data definice uživatelsky programovaných znaků. 4.4.8 Nastavení adresy v paměti zobrazovaného textu R R D D S W 7 0 Kód: 0 0 0 1 a a a a a a ← Vyšší bity adresy Poznámky MIKROPOČÍTAČE -MODUL DISPLEJE LTN 211 4-8 Poznámky Nastavení binární adresy „aaaaaaa“ do adresového čítače. Slouží k nastavení místa kam se mají zapisovat nebo odkud se mají číst zobrazovaná data. Prvnímu řádku odpovídají hexadecimálně adresy $00 - $27, druhému $40 - $67. 4.4.9 Čtení příznaku obsazení a adresy R R D D S W 7 0 Kód: 0 0 BF a a a a a a a ← Vyšší bity adresy Přečtěte aktuální stav mikrořadiče displeje. Hodnota příznaku obsazení BF ukazuje stav mikrořadiče. Je-li BF = 1 mikrořadič provádí interní operace a nemůže přijmout žádnou instrukci (kromě opětovného čtení řídicího registru). Hodnotu BF je třeba kontrolovat před každou novou instrukcí pro displej a případně vyčkat na dokončení provedení předcházející instrukce. Současně s příznakem obsazení je přečten také aktuální stav adresového čítače (bity „aaaaaaa“). 4.4.10 Zápis dat do paměti textu a generátoru znaků R R D D S W 7 0 Kód: 1 0 d d d d d d d d ← Vyšší bity dat Zapíše data „ddddddd“ na adresu, která se právě nachází v adresovém čítači. Adresa v čítači závisí na provedení předcházejících instrukcí (nastavení adresy), posun kurzoru, Poznámky MIKROPOČÍTAČE -MODUL DISPLEJE LTN 211 4-9 Poznámky příp. zápis nebo čtení paměti). Po zápisu se automaticky zvýší nebo sníží adresa v adresovém čítači o 1 a případně dojde k posunu zobrazeného textu v závislosti na nastaveném vstupním režimu displeje. 4.4.11 Čtení dat z paměti textu nebo generátoru znaků R R D D S W 7 0 Kód: 1 1 d d d d d d d d ← Vyšší bity dat Přečtěte data „ddddddd“ z paměti zobrazovaného textu nebo generátoru znaků. Před čtením dat je třeba nastavit adresu v adresovém čítači instrukcemi nastavení adresy příp. posun kurzoru. Bez tohoto nastavení jsou první přečtená data chybná. Při čtení bloku paměti stačí nastavit adresu bloku před prvním čtením. Adresa v čítači se po každém čtení automaticky zvyšuje či snižuje (podle nastaveného vstupního režimu) a čtená data jsou platná. 4.5 Příklady komunikace mezi 68HC11 a displejem: • • Zadání instrukce návrat na počátek (home) 1daa #$02 uložení hodnoty $02 - 00000010 bin do akumulátoru A staa $8000 zapsání této hodnoty do řídicího registru displeje Přečtení BF a adresy v čítači 1 daa $8000 • přečtení obsahu řídicího registru Přečtení dat z 2., pozice na prvním řádku 1daa $#81 nastavení adresy #$01 tj. 2. Pozice prvního staa #$8000 řádku Poznámky MIKROPOČÍTAČE -MODUL DISPLEJE LTN 211 4 - 10 Poznámky loop 1daa #$8000 načtení BF a adresy bita #$80 test BF bne loop je-li BF = 1, čekej 1daa #$8001 přečtení dat. 4.6 Paměťový prostor displeje Pro uložení kódu zobrazovaných znaků je celkem k dispozici 2x40 paměťových míst, z nichž může být vždy jen 2x16 znaků průběžně zobrazeno. Toto zobrazovací okénko lze přesouvat změnou vnitřní adresy nebo posunem kurzoru. Běžně zobrazitelné znaky jsou v této paměti reprezentovány svými ekvivalenty v kódu ASCII. 4.6.1 Mapa paměťového prostoru pro uložení zobrazovaných kódů: 1 2 3 4 5 ............ pozice na displ. 1. řádek 00 01 02 03 04 ............ 25 26 27 adresa v paměti 2. řádek 40 41 42 43 44 ............ 65 66 67 (hexadecimálně) 4.6.2 Generátor znaků Znakový generátor vytváří obrazce 5x7 bodů odpovídající kódům znaků. Kódy $00 až $07 osmi uživatelsky programovatelným znakům. Vztah mezi kódem programovatelného znaku jeho uložením v paměti generátoru znaků ukazuje tab. Naprogramování jednoho znaku sestává z nastavení inkrementálního vstupního režimu nastavení počáteční adresy umístění znaku a zapsání osmi hodnot do datového registru (inkrementace adresového čítače se děje automaticky). Poznámky MIKROPOČÍTAČE -MODUL DISPLEJE LTN 211 Poznámky Poznámky 4 - 11 MIKROPOČÍTAČE -MODUL DISPLEJE LTN 211 4 - 12 Poznámky 4.7 Popis ovladače displeje Ovladač displeje je tvořen souborem podprogramů, které vykonávají nejběžnější příkazové sekvence, jako je inicializace, smazání, zobrazení daného znaku nebo textu na displeji apod. Ovladač se standardně ukládá od adresy $D000, ale je možné jej uložit na libovolné místo v paměti přepsáním hodnoty DSTART. 4.7.1 Podprogramy ovladače: - dinit - inicializace displeje Parametry : žádné Návratové hodnoty: žádné Podprogram provede softwarovou inicializaci displeje, nastaví jeho režim na D/I = 1, S = 0, D = 1, C = 0, B = 0, naprogramuje znaky ý (kód $01), ř(kód $02), č(kód $03), zobrazí inicializační text: Mikroprocesorový řadič MS11 Mesit a vyčká dokončení všech vnitřních operací displeje (včetně inkrementace adresového čítače. - dels - smazání displeje Parametry: žádné Návratové hodnoty: žádné Poznámky MIKROPOČÍTAČE -MODUL DISPLEJE LTN 211 4 - 13 Poznámky Smaže displej, umístí kurzor na začátek 1. řádku, v adresovém čítači nastaví odpovídající adresu (0000000) a vyčká dokončení vnitřních operací displeje. - dline1- umístění kurzoru na začátek 1. řádku Parametry: žádné Návratové hodnoty: A - obsah adresového čítače ($00) Umístí kurzor na začátek 1. Řádku bez změny v paměti zobrazeného textu. Nastaví odpovídající adresu v adresovém čítači ($00) a vyčká dokončení vnitřních operací displeje. V akumulátoru A vrátí obsah adresového čítače. - dline2 - umístění kurzoru na začátek 2. řádku Parametry: žádné Návratové hodnoty: A - obsah adr. čítače ($40) Umístí kurzor na začátek 2. Řádku bez změny v paměti zobrazovaného textu. Nastaví odpovídající adresu v adresovém čítači ($40) a vyčká dokončení vnitřních operací displeje. V akumulátoru A vrátí obsah adresového čítače. - dprog - naprogramování uživatelského znaku Parametry: A - kód znaku IY - adresa definice znaku Návratové hodnoty: A - obsah adr. čítače před voláním podprogramu Naprogramuje do paměti RWM generátoru znaků jeden znak a vyčká dokončení vnitřních operací displeje. V akumulátoru A očekává kód pod kterým bude znak uložen (0-7) a Poznámky MIKROPOČÍTAČE -MODUL DISPLEJE LTN 211 4 - 14 Poznámky v registru IY adresu začátku definice znaku. Definice znaku odpovídá obrazci znaku v tab. Podprogram nezmění obsah adresového čítače, tedy ani pozici kurzoru. Obsah adresového čítače vrátí v akumulátoru A. - douta -zobrazení znaku na pozici kurzoru Parametry: A - kód zobrazovaného znaku Návratové hodnoty: A - obsah adresového čítače Zobrazí znak, jehož kód je v akumulátoru A na pozici kurzoru. Následný pohyb kurzoru nebo textu závisí na vstupním režimu displeje. Vyčká dokončení vnitřních operací a v akumulátoru A vrátí nový obsah adresového čítače. - dtext - zobrazí řetězec znaků Parametry: A - kód znaku IY - adresa textu Návratové hodnoty: A - obsah adresového čítače Zobrazí řetězec znaků ukončený nulovým bajtem, jehož adresa je v registru IY. Toto zobrazení provede na řádku, jehož kód je v akumulátoru A(DLN1),DLN2). Vyčká dokončení vnitřních operací displeje a v akumulátoru A vrátí obsah adresového čítače. Pokud chceme řetězec zobrazit jinde než od začátku řádku, je možné do akumulátoru A místo konstanty DLN1 nebo DLN2 umístit instrukci nastavení adresy v paměti textu s adresou odpovídající pozici, na které chceme text zobrazit. Poznámky MIKROPOČÍTAČE -MODUL DISPLEJE LTN 211 4 - 15 Poznámky tertext - přečtení obsahu paměti textu a jeho zobrazení na terminálu Parametry: žádné Návratové hodnoty: žádné Přečte obsah paměti textu a vyšle jej na terminál. Ve standardním provedení program vyžaduje, aby byl spuštěn pod monitorem M-Buffalo, ve kterém je podprogram outa, vysílající znak v akumulátoru A na terminál . Pokud program není spuštěn pod monitorem M-Buffalo nebo potřebujeme znaky čtené z displeje zpracovat jiným způsobem, stačí přepsat volání podprogramu outa voláním vlastního podprogramu. Přečtený znak je předáván v akumulátoru A. bftext - vyčkání na dokončení vnitřních operací Parametry: žádné Návratové hodnoty: A - obsah adresového čítače Testuje příznak BF a čeká na jeho vynulování. V akumulátoru A vrátí obsah adresového čítače. dawait - čekání 6µs Parametry: žádné Návratové hodnoty: žádné Čekací smyčka o délce 6µs. Využívá se k čekání na inkrementaci adresového čítače. Poznámky MIKROPOČÍTAČE -ASSEMBLER 5-1 Poznámky 5 ASSEMBLER 5.1 Programování 68HC11 v assembleru • překládá (transformuje) data nebo adresy z různých číselných soustav (např. z desítkové, osmičkové, šestnáctkové) do dvojkové a překládá i znaky do odpovídajících kódů ASCII, • umožňuje programátorovi, aby rezervoval a přiděloval paměť dočasné uchování dat, • umožňuje programátorovi uložit konstanty na určeném místě v paměti, • umožňuje programátorovi přiřadit symbolická jména paměťovým místům a vstupněvýstupním registrům, • umí vykonat některé aritmetické operace jako součást procesu překladu, • informuje programátora o formálních chybách v programu. Zdrojové programy pro překladač (assembler) se zapisují v jazyce symbolických adres (instrukcí), který se také v praxi nazývá assembler. Zdrojový jazyk připouští použití množiny znaků, které assembler umí rozpoznat: • písmena anglické abecedy, • číslice 0 až 9, • znaky používané jako speciální prefixy: Poznámky o # určuje bezprostřední adresování o $ určuje šestnáctkové (hexadecimální) číslo o % určuje dvojkové číslo, o ‘ (apostrof) určuje znak ASCII, MIKROPOČÍTAČE -ASSEMBLER 5-2 Poznámky • speciální znaky aritmetických operací: +,-, *,/, • čtyři speciální znaky jako oddělovače: o mezera o horizontální posuv (TAB) o CR(Carriage Return) - konec řádku, o , (čárka), • komentář ve zdrojovém řádku, který může obsahovat znaky ASCII, ale nepřekládá se. Zdrojový program, který vytváříme textovým editorem, se skládá z posloupnosti zdrojových řádků. Zdrojový řádek lze zpravidla rozdělit do čtyř polí např. v následujícím uspořádání: START LDAA # $FF Naplnění registru A jedničkami Komentář Operand Mnemonické označení instrukce nebo direktiva Návěští, může se v programu dále používat jako adresový operand Protože návěští určuje adresu instrukce, není dovolena dvojznačnost ve specifikaci hodnoty návěští, např.: START Poznámky LDAA # $ 45 ADDA NUMBER MIKROPOČÍTAČE -ASSEMBLER 5-3 Poznámky START STAA PLACE . . JMP START Je však dovoleno víckrát se na návěští odvolávat: START LDAA $ 45 ADDA NUMBER STAA PLACE . . JMP START . . BNE START Symbolická jména PLACE a NUMBER musí být v programu definována pomocí direktiv. Direktivy jsou pseudoinstrukce pro přiřazení symbolických názvů číselným hodnotám adres nebo dat, jako je např. instrukce EQU uvedená dále. Pole komentářů následuje za polem operandů a je oddělené jednou nebo více mezerami. I celý zdrojový řádek může být komentářem, jestliže znak na první pozici je *. Znak * může taky posloužit k naprogramování skoku zpět na stejnou instrukci např. místo: LOOP BRCLR 0, x $ 45 LOOP 0, x $ 45 * můžeme napsat: BRCLR Text komentáře se netýká vytváření strojového kódu a asembler ho ve fázi překladu ignoruje. Poznámky MIKROPOČÍTAČE -ASSEMBLER 5-4 Poznámky 5.2 Direktivy Asembler umožňuje ve zdrojovém programu používat příkazy, které se vztahují na řízení vlastního překladače (assembleru). Při překladu se těmto mnemonickým příkazům nepřiřazují žádné strojové kódy. Takovéto instrukce se nazývají pseudo-instrukce nebo direktivy. Programy a data se mohou ukládat v různých oblastech paměti v závislosti na organizaci adresovatelného prostoru. Direktiva ORG, která se zpravidla uvádí na začátku zdrojového programu, slouží k určení počátečního místa programu a dat v paměti. Příklad: ORG $ 100 Určení počáteční adresy cílového programu v paměti mikrořadiče LDAA #$ 5 Naplnění akumulátoru A hodnotou #$ C5. LDAA $ C5 Naplnění akumulátoru A hodnotou, která je uložena na adrese 00C5. Poznámky MIKROPOČÍTAČE -ASSEMBLER 5-5 Poznámky Uložení těchto instrukcí do paměti je následující: Adresa paměťového místa: Obsah paměťového místa: $0100 $86 $0101 $C5 $0102 $96 $0103 $C5 . LDAA #SC5 LDAA $CS . Direktiva FCB (Form Constant Byte) má jeden nebo víc operandů oddělených čárkami. Direktiva FCB přiděluje určeným pamě´tovým buňkám daný obsah specifikovaný v poli operandu. Příklad: DATA ORG $200 FCB $10, $20, $30, 16 Uložení do paměti: Adresa paměťového místa Poznámky Obsah paměťového místa: $0200 $10 $0201 $20 $0202 $30 MIKROPOČÍTAČE -ASSEMBLER 5-6 Poznámky $0203 $10 V programu pak můžeme dále psát: LDAA DATA+1 Do A dej hodnotu z adresy $0201, tj. $20 LDX #DATA Do IX dej adresu $0200. Direktiva FDB (Form Constant Double Byte) přiděluje určeným dvojicím paměťových buněk 16-bitové hodnoty. Např. TABLE ORG $300 FDB $AFFF, %0000111111110000 Uložení do paměti: Adresa paměťového místa Obsah paměťového místa $0300 $AF $0301 $FF $0302 $OF $0303 $FO . . V programu pak můžeme psát: LDX TABLE Do IX ulož hodnotu z adres $0300 a $0301 tj.$AFFF LDY #TABLE Do IY ulož adresu $0300. Poznámky MIKROPOČÍTAČE -ASSEMBLER 5-7 Poznámky Direktiva FCC (Form Constant Character) vloží do paměťových buněk kódy určených ekvivalentů ASCII. Například programový úsek: . TABLE ORG $400 FCC ‘TEXT’ . Uložení do paměti: Adresa paměťového místa Obsah paměťového místa $0400 $54 $0401 $45 $0402 $58 $0403 $54 . . Direktiva RMB (Reserve Memory Bite) se používá pro rezervaci místa v paměti. Například: DATA ORG $2000 RMB 10 . Poznámky MIKROPOČÍTAČE -ASSEMBLER 5-8 Poznámky Na adrese $2000 se vyhradí 10 paměťových buněk, na které je možné se odvolávat návěštím DATA, např.: . STA DATA+5 Na adresu $2005 se uloží obsah akum. A Direktiva EQU (Equate Symbol Value) slouží na přiřazení hodnoty symbolu, který se může objevit v programu na více místech. Symbol, kterému se přiřazuje hodnota, se uvádí v poli návěští. Například: . PORTC EQU $1003 Symbolu PORTC je přiřazena hodnota $1003, takže např. instrukce . LDAA PORTC naplní akumulátor A obsahem z paměťové buňky (portu C) na adrese $1003. Použitím pseudoinstrukce EQU se zvyšuje srozumitelnost programu. Např. čekání, dokud na nultém výstupu portu B nebude log. 1 naprogramujeme následovně: REGPOLE EQU $1000 Počátek reg. pole PORTB EQU $04 Registr PORTB v reg. poli Vystup_PBO EQU $01 . Poznámky Nultý výstup portu B MIKROPOČÍTAČE -ASSEMBLER 5-9 Poznámky LDY REGPOLE Do IY hodnota $1000 . BRCLR PORTB, y Vystup_PBO * Čekací smyčka. Nyní, když máme k dispozici soubor instrukcí mikrořadiče M68HC11 a známe použití jednotlivých direktiv jazyka symbolických adres, můžeme přistoupit k napsání zdrojového programu. Tento zdrojový program je vhodné psát v některém z textových editorů. K tomuto účelu jsou nejvhodnější programátorské editory nejjednoduššího typu, jako je např. AEDIT, Norton Editor, CREDIT, atd. Naopak zcela nevhodné pro tento účel jsou dokumentační editory, jako např. T602, WordStar, Wordperfect atd, neboť nejen že psaní programu neusnadňují, ale přidávají do textu některé řídicí znaky, které komplikují nebo úplně znemožní jeho následný překlad asemblerem. Příkazový řádek překladače Program AS11.EXE, jehož příkazový řádek může být např. ve tvaru: AS11 program.asm - 1 c s > program . lst soubor protokolu o překladu (listing file) Zdrojový soubor Tento assembler také generuje soubor pod jménem „program.s19“. Je v něm tzv. záznam typu S strojového kódu , v němž je uložen jak vlastní strojový kód, tak i pomocné kódy, jež Poznámky MIKROPOČÍTAČE -ASSEMBLER 5 - 10 Poznámky umožňují určeným pomocným programem (např. monitorem M-Buffalo) načtení strojového kódu do paměťového systému mikrořadiče . 5.3 ZÁZNAMY TYPU S Záznamy typu S slouží k úspornému zakódování programů a datových souborů ve formě, kterou je možno přenášet mezi výpočetními systémy, zobrazit na displeji a tisknout na tiskárně. Jejich formát umožňuje snadné zviditelnění a editaci na osobním počítači. Tyto záznamy slouží v podstatě ke stejným účelům, jako záznamy ve formátu INTELHEX, známé všem programátorům mikroprocesorů od firmy Intel. Oba uvedené formáty jsou si velmi podobné, avšak nejsou zcela shodné. 5.3.1 Obsah záznamů typu S Z hlediska uživatele jsou záznamy typu S znakovými řetězci o několika položkách. Tyto položky udávají typ záznamu, délku záznamu, adresu v paměti, zakódované instrukce/data a kontrolní součet. Každý bajt binárního kódu je zakódován do dvouznakového hexadecimálního čísla. V prvním znaku tohoto čísla jsou zakódovány čtyři řádově vyšší bity a ve druhém znaku čtyři řádově nižší bity kódovaného bajtu. Záznam typu S zahrnuje 5 následujících položek: TYP DÉLKA ZÁZNAMU ADRESA KÓD/DATA KONTROLNÍ SOUČET kde položky jsou vytvořeny následovně: POLOŽKA Typ Poznámky POČET ZNAKŮ 2 OBSAH Typ záznamu - SO, S1, atd MIKROPOČÍTAČE -ASSEMBLER 5 - 11 Poznámky Délka záznamu 2 Počet znakových párů v záznamu s výjimkou typu a délky záznamu. Adresa 4,6 nebo 8 Dvoubajtová, tříbajtová nebo čtyřbajtová adresa, od které se data přenášená v následující položce ukládají do paměti. Kód/data 0 až 2n Spustitelný kód nebo data pro uložení do paměti v počtu 0 až 2n znaků, kde n je počet bajtů přenášené informace Po dosažení kompatibility s dálnopisem mohou některé programy omezovat počet bajtů přenášených v jednom záznamu typu S na 28 (tj. 56 tisknutelných znaků na záznam). Kontrolní součet 2 Řádově nejnižší platný bajt z jednotkového doplňku dvojicemi položky: součtu hodnot reprezentovaných znaků a zahrnujícího následující délkuzáznamu, adresu a zakódované instrukce/data. Každý záznam lze zakončit pomocí znaků CR (návrat vozíku), LF (posun válce), NULL (prázdný znak). Navíc může mít záznam typu S inicializační položku pro uložení dalších dat, jako jsou např. čísla řádků, generovaná některými systémy reálného času. Věrnost přenosu je zajištěna údajem o délce záznamu (počet bajtů) a kontrolním součtem. Poznámky MIKROPOČÍTAČE -ASSEMBLER 5 - 12 Poznámky 5.3.2 Druhy záznamů typu S Je definováno celkem osm druhů záznamů typu S, které jsou přizpůsobeny různým potřebám kódování, přenosu a dekódování dat. Různé podpůrné programy mikroprocesorů firmy Motorola )jako jsou křížové překladače - assemblery, linkery atd.) pro programování, odlaďování a přenos dat využívají však pouze ty druhy záznamů , které nejlépe slouží pro účely daného programu. Podobně také monitor M-Buffalo u školního mikropočítače MS11-A10 . Student využívá pouze dva druhy záznamů typu S. Je to záznam S1 a záznam S9. Na příjem záznamu typu S reaguje monitor tak, že ignoruje všechna data před prvním záznamem S1. Z toho důvodu musí být všechny záznamy, ukládané do paměti školního mikropočítače typu S1 a celý přenos je ukončen záznamem S9. Soubor se záznamem typu S , který přenášíme do paměti školního mikropočítače, může obsahovat tedy následující záznamy: SO - Záznam záhlaví pro každý přenášený blok. Položky kódovaných instrukcí/dat nemohou zahrnovat žádnou popisnou informaci, která daný blok identifikuje pro potřeby uživatele. Proto záznam SO slouží k uložení popisných informací, které se vztahují k následujícím záznamům, a monitor na něj nereaguje. Jeho adresová položka je normálně nulová. S1 - Záznam obsahující kódované instrukce/data a dva bajty adresy, od které se mají tyto položky ukládat. S2 až S8 - Nejsou použitelné na školním mikropočítači. Poznámky MIKROPOČÍTAČE -ASSEMBLER 5 - 13 Poznámky S9 - Ukončovací záznam pro blok záznamů typu S1. Adresová položka může nepovinně obsahovat dvoubajtovou adresu instrukce, na kterou se předá řízení. Jestliže není určena, bere se v úvahu pro tyto účely první adresa přeneseného objektového modulu. Neobsahuje žádné kódované instrukce/data. Pro každý blok záznamů typu S se používá pouze jeden ukončovací záznam. Co se týká záznamu záhlaví, obvykle se také používá pouze jeden, ačkoliv nic nebrání, aby jich bylo v přenášeném bloku víc. 5.3.3 Vytváření záznamů typu S Záznamy typu S pro školní mikropočítač lze vytvářet několika obslužnými programy pro výpis obsahu paměti a dále s pomocí vývojových prostředí, křížových assemblerů a linkerů. Jsou také dostupné programy, které mohou přenést obsah paměti školního mikropočítače ve formátu typu S na hostitelský počítač nebo terminál. Příklad záznamu typu S Následující typický příklad záznamu ve formátu typu S, tak jak se vytiskne nebo zobrazí na displeji: S0 06 00 00 48 44 52 1B S1 13 00 00 28 5F 24 F2 21 22 26 A1 20 42 42 90 01 22 27 C0 12 S1 13 00 10 00 20 00 80 00 82 62 90 01 85 38 12 34 10 01 81 33 S1 13 00 20 41 E9 00 08 4E 42 23 43 00 18 23 42 00 08 24 A9 52 S1 07 00 30 00 14 4E D4 92 Poznámky MIKROPOČÍTAČE -ASSEMBLER 5 - 14 Poznámky S9 03 00 00 FC Výše uvedený modul sestává se záznamu záhlaví SO, čtyř záznamů kódovaných instrukcí/dat S1 a jeden ukončovací záznam S9. Záznam SO se skládá z následujících znakových párů: SO Indikátor záhlaví. 06 Hexadecimální hodnota 06 (dekadicky 6) udává, že následuje šest znakových párů (znaků v kódu ASCII). 00 00 48 Dvoubajtová adresa vyjádřená čtyřmi znaky. Jméno záhlaví „HDR“ pro uživatelskou identifikaci v kódu ASCII. 44 52 1B Kontrolní součet záznamu SO. První ze záznamu S1 se skládá z následujících znakových párů: S1 Druh záznamu typu S, tj. S1,který indikuje, že záznam kódovaných instrukcí/dat se má uložit do paměti a verifikovat. 13 Hexadecimální hodnota 13 (dekadicky 19) indikující 19 znakových párů, které reprezentují kódované instrukce/data. Poznámky MIKROPOČÍTAČE -ASSEMBLER 5 - 15 Poznámky 00 Čtyřznaková dvoubajtová adresa. Hexadecimální adresa 0000 indikuje počátek 00 umístění následujících přenášených bajtů instrukcí/dat. Následuje 16 znakových párů v ASCII, které obsahují skutečný zakódovaný program a data. Zápis tohoto programu v operačních kódech a v mnemonice jazyka symbolických adres je následující: HEXADECIMÁLNÍ KÓDY MNEMONICKÉ INSTRUKCE 28 5F BVC $0061 25 5F BHS $0063 22 12 BHI $0018 22 6A BHI $0072 12 04 BRSET 0,$04, $002F 29 00 BVS $000D 12 23 BRSET 4, $23, $008C 24 7C (Další část tohoto programu je zapsána v následujících záznamech typu S1 a uloží se od adresy $0010.) 01 Kontrolní součet prvního záznamu S1. Druhý a třetí řádek záznamu typu S1 obsahují také $ 13 (19) znakových párů a jsou ukončeny kontrolními součty $13 a $ 52. Čtvrtý řádek záznamu typu S1 obsahuje $ 07 znakových párů a jeho kontrolní součet je $ 92. Poznámky MIKROPOČÍTAČE -ASSEMBLER Poznámky Ukončovací záznam S9 se skládá z následujících položek: S9 Typ záznamu S9 indikuje, že se jedná o zakončovací záznam. 03 Hexadecimální hodnota 03 ukazuje, že následují tři znakové páry. 00 Čtyřznaková dvoubajtová adresa je nulová. FC Kontrolní součet záznamu S9. Poznámky 5 - 16 MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6-1 Poznámky 6 REAL – TIMOVÉ OPERAČNÍ SYSTÉMY • pomoc operátorovi, • podpora vlastností reálného času, víceuživatelských a víceúlohových systémů. Jednoúlohový systém OS CP/M (Basic Input Output System, Basic Disc Operating System, Console Comand Processor) RTOS “background/foreground” • hodiny reálného času - jediné přerušení • v paměti dvě části. V jedné je program, který reaguje na přerušení (popředí), ve druhé program, který může běžet, když nejede program na popředí. Víceúlohové a víceúrovňové OS • jeden procesor • víceuživatelský systém - musí zajistit přístup na procesor všem uživatelům v témže čase. Řešení zcela nezávislých úloh. • víceúlohový - 1 uživatel, více úloh spolu souvisejících. RTOS musí zajistit: • přidělování zdrojů počítače různým aktivitám Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY Poznámky • obsluhovat prioritní systém • komunikaci mezi úlohami (společná paměť, zprávy) • aktivaci úlohy externími událostmi • ochranu před současným vstupem do kritických sekcí • správu paměti 6.1 Struktura RTOS 6.1.1 Jádro OS • plánovač, • dispečer, • knihovna programů pro realizaci služeb RTOS 6.1.2 Data • vektory procesů, • vektory systémových prostředků, • data aktuálního procesu, • data RT, • systémová data. Poznámky 6-2 MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6-3 Poznámky 6.2 JÁDRO RTOS - provádí plánování a přepínání 1. úroveň Plánovač ∼ Scheduler - plánuje vyšší úroveň na základě informací o dostupnosti různých zdrojů RTOS (tiskárny, disky, periferie....), mění stav na připravený nebo čekající. 2. úroveň Dispečer ~ Dispatcher (low-level scheduler) - vyměňuje aktivní proces za jiný aktivní proces, který je připraven s nejvyšší prioritou. Dále zabezpečí okamžité přeplánování procesu. 6.2.1 Příkazy pro změnu stavu úloh Deadlock - dva nebo více procesů nemohou pokračovat v práci, poněvadž se vzájemně blokují. Situaci musí řešit RTOS (detekce a zabránit vzniku). výlučná žádost X A B použití výlučná žádost Poznámky Y použití MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6-4 Poznámky 6.3 Správa a řízení paměti 6.3.1 Statický systém • v průběhu běhu úloh nevznikají nové. (Jediný uživatelský prostor) • úlohy jsou rozmístěny v segmentech - nepružné vzhledem k velikosti úloh a pevně stanovených segmentů. 6.3.2 Dynamický systém - technika plovoucí paměti Paměť rozdělena do malých bloků (např. 64 slov), RTOS udržuje bitovou mapu, která reviduje obsazenost nebo neobsazenost těchto bloků. RTOS pak při požadavku na běh úlohy najde dostatečně dlouhou souvislou oblast, obsadí ji a změní stav bitové mapy. Při odkládání úlohy opačně. Často spouštěné úlohy zůstávají v paměti, přemisťované úlohy jsou ty méně často spouštěné. Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6-5 Poznámky systém systém ovladače ovladače prostor segmenty (partition) uživatele pracovní oblast pracovní oblast 6.3.3 Technika segmentace programu Program je sestaven do sekvence segmentů, které se postupně provádějí (chaining), překryvná struktura programu (overlaying) - program je uspořádán do stromové struktury segmentů. V hlavní paměti pak zůstává kořen stromu a segmenty dosažitelné cestou stromu. Segmenty se nahrávají do paměti voláním procedur ze segmentů umístěných momentálně v paměti. Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6-6 Poznámky 6.3.4 Sdílení kódu Problém - několik úloh vyžaduje využívat v jednom okamžiku stejný kód. Obecně může dojít k vzájemnému ovlivnění. Dvě techniky řešení: a) sériově použitelný kód: Ú A Ú A Ú B data kód Ú B kód data SUBRUTINA čistý kód b) reentrantní kód Sdílená subrutina nesmí mít lokální data, všechny mezivýsledky i výsledky jsou ukládány dovolující úlohy nebo do zásobníku úlohy. Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6-7 Poznámky ÚB ÚA LOCK SUBRUTINA UNLOCK 6.4 Plánování úloh, přidělování procesoru Plánování: • technika časových dávek (pravidelná střídání procesů) • prioritní strategie (priority pevné nebo dynamicky se měnící). U pevných priorit nutno pevně a správně určit, u dynamických mění prioritu vysokoúrovňový plánovač - nejdéle čekajícím úlohám zvyšuje prioritu. Proces existuje, když je program, který jej řídí a procesor, který jej realizuje. Proces je dynamická instance programu realizovaná procesorem. Řízení procesů se realizuje prostřednictvím jádra operačního systému. Procesy se nacházejí v různých stavech. Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6-8 Poznámky Cílem každého procesu je být ve stavu “aktivní”. Dosažení tohoto stavu závisí na strategii vybírání z fronty připravených procesů - na plánovacím algoritmu. Různé přístupy ke strategii: • dosažení max. využití procesoru • propustnost měřená počtem procesů proběhlých za čas • průměrná doba existence procesů • dosažení co nejrychlejší odezvy na externí požadavky • minimalizace doby strávené čekáním ve frontách. 6.5 Plánovací strategie 6.5.1 Cyklické plánování • procesor se přiděluje v časových kvantech • jestli se proces v kvantu neukončí, přepne se kontext • při ukončení časového kvanta se proces zařazuje do fronty připravených na konec, fronta se obsluhuje FIFO • časové kvantum ≈ milisekundy - desítky milisekund • čím menší, tím větší režijní členy. Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6-9 Poznámky 6.5.2 Prioritní strategie • priorita vyjadřuje přednost procesu při přidělování procesoru • vyjadřuje se přirozenými čísly • může být několik procesů se stejnou prioritou • problém “stárnutí procesů” s nízkou prioritou při existenci více procesů s vyšší prioritou (řeší se dynamickou změnou priorit) • přidělování priority o kritéria vyplývající z charakteru aplikace o časové kritérium SJF (Short Job First) - provede se odhad celkové doby běhu procesu a nejkratší procesy dostanou nejvyšší prioritu. 6.5.3 Kombinované strategie • prioritní strategie se uplatňuje jen na prvých K prioritních úrovních • na nižších prioritních úrovních než K se samostatně na každé z nich uplatňuje cyklické plánování (každá tato úroveň má samostatnou funkci připravených procesů. 6.5.4 Preemtivní a nepreemtivní plánování nepreemtivní • úlohy jsou prováděny postupně - každá až do konce - výběr se provádí jen ve smyslu “který proces bude převeden na procesor” . Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 10 Poznámky preemtivní (to preemt ≈ získat předem, přivlastnit si, preemtive ≈ předem obsazený, zabraný). • může být několik úloh v různém stadiu provádění • při příchodu úlohy s vyšší prioritou je prováděná úloha přerušena a pokračuje až když není v systému žádná úloha s vyšší prioritou. Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 11 Poznámky PRIORITNÍ ÚROVNĚ Přidělení priority závisí na tom jak rychle má být úloha obsloužena, jak rychle a přesně musí reagovat. 1. okruh - úroveň přerušení - úlohy reagují řádově v ms. Na této úrovni pracuje dispečer a hodiny reálného času. HW přerušení - činnost obsluhy přerušení musí být minimalizována, rozsáhlejší zpracování se přenechá obslužné úloze na nižší prioritní úrovni. 2. okruh - úroveň hodin - zpravidla úlohy, které vyžadují cyklické opakování (měření, výstupy, regulátory...) nebo úlohy s rychlou reakcí (start, stop, ...). Úroveň hodin - zde pracuje rutina pro obsluhu hodin reálného času (20 - 200 ms) a je cyklicky spouštěn dispečer (jádro), který může spouštět ůlohy: - cyklické - uspořádány prioritně - časově odložené - tyto si sami plánují časové prodlevy mezi jednotlivými operacemi nebo mezi opakovaným spouštěním. (Pokud systém neumožňuje ošetření úloh cyklických mohou se ošetřit touto technikou. 3. okruh - nízká úroveň - nejsou stanoveny časové limity, nebo je povolen velký časový rozptyl. základní úroveň - úlohy se spouští většinou na základě náhodně vzniklých požadavků (vstup z klávesnice, událost z řízeného procesu apod.). Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY Poznámky Poznámky 6 - 12 MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 13 Poznámky 6.6 RTOS pro PC • běží v prostředí OS DOS • je to modul, který se přilinkuje k ostatním aplikačním modulům. Aplikace = 1 exe soubor • ovládá běžící procesy pomocí služeb • všechny moduly, které služby používají musí obsahovat # include <RTM.H> • main program musí obsahovat volání inicializační služby RTMONu init_rtm( ) - tím se vytvoří procesy INIT (priorita 0) a DUMMY (255) • po ukončení se znovuspustí INIT a v něm je třeba zastavit a abortovat všechny procesy • na závěr ukončit činnost INIT a DUMMY službou rtm_end ( ) služby: • pro ovládání procesů • pro práci se schránkami a zprávami. data: • datové struktury jednotlivých procesů • datové struktury schránek • kódy chybových hlášení • přípustné hodnoty pro stav Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY Poznámky 6.6.1 Datová struktura procesu typedef struct { char name [ 8 ]; jméno proc. (jen pro ladící účely) unsigned int ident; identifikační byte unsigned int no_ident; negace předchozího byte unsigned char kandler; nepoužit unsigned char prio; unsigned char stat; stav procesu void (far * pfunc) ( ); char far * pstack; poč. adr. zásobníku int stack_size; unsigned stack_limit; limit pro kontrolu zásobníku void (far * pres); adr. id. rekordu předch. proc. ve frontě void (far * next); adr. následujícího proc. ve frontě long time_period; long time_to_start; long time_of_start; char * pnusg; adr. pole pro zprávu ALLREG reg; pomoc. dat. struktura CTOOLS } IDPROC; Poznámky 6 - 14 MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 15 Poznámky 6.6.2 Datová struktura schránky type struct { char name [ 8 ]; jméno pro ladění unsigned int ident; identifikační byte RTM_IDENT_Q unsigned int no_ident; negace předchozího byte int n_buff; int l_msg; int n_wait_buff; počet obsaz. buff. ve schránce char * buff_guenes; ukazatel na pole buff. int first_buff; index 1. obsaz. buff. int last_buff; index posledního buff. int emty_buff; index 1. volného buff. IDPROC * pid_proc_msg; ukaz. na 1. proces čekající na zprávu IDPROC * pid_proc_buff; ukaz. na 1. proces čekající na volnou schránku } IDQUEUE; Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY Poznámky 6.6.3 Kódy chybových hlášení RTMON_OK 0 bezchybný návrat RERR_NO_MEM 1 málo paměti na alokaci RERR_N_SERV 2 chybné číslo služby RERR_ID_PROC 3 nepřípustný id_record procesu RERR_ST_PROC 4 nepřípustný stav procesu pro danou službu RERR_ID_QUEUE 5 nepřípustný id_record schránky RERR_EMPTY_Q 6 prázdná schránka RERR_FULL_Q 7 plná schránka (všechny buff. naplněny) 1 proces je pouze definován, neiniciován STAV PROCESU PST_SLEEP PST_ACTIVE 2 proces je aktivizován, může být spuštěn PST_RUN 3 běžící proces PST_W_TIME_S 4 čekající na uplynutí času do spuštění PST_W_TIME_C 5 čekající na uplynutí času do pokračování PST_INTRPT 6 přerušený (pozastavený) proces PST_STOPPED 7 ukončený proces PST_W_Q_MSG 8 čekající na zprávu ve schránce PST_W_Q_BUFF 9 čekající na schránku (volný buffer ve schránce) Poznámky 6 - 16 MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 17 Poznámky 6.6.4 Služby pro práci s procesory Inicializace jádra int rtm_init (IDPROC ** init_id); • init_id - identifikátor inicializačního procesu • proces, ze kterého je RTMON inicializovaný je označen jako proces běžící s prioritou 0 Příklad: IDPROC * proces_1_id, * proces_2_id, . * proces_n_id, * init_id; . main { . rtm_init (& init_id); . . Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 18 Poznámky Ukončení práce jádra int rtm_end (IDPROC * init_id); • *init_id – identifikátor, s kterým byl RTMON inicializován • zastaví všechny procesy, dál pokračuje bez reálného času . . rtm_end ( init_id); Vytvoření procesu int rtm_create_p(char * pname, char prio, void(*pfunc)( ), int stack_size, IDPROC** proc_id); • *pname - pointer na jméno procesu (max 12 znaků) • prio - priorita procesu (1 - 254) nejvyšší je 1 • *pfunc - pointer na funkci void pfunc (void), která představuje vlastní proces. NESMÍ BÝT UKONČENA RETURN, ALE rtm_stop_p • stack_size - velikost zásobníku • *proc_id - identifikátor procesu (pointer na proces) pro další ovládání procesu • alokují se datové struktury, zásobník a proces je převeden do stavu pozastaven Příklad: rtm_create_p(„PROCES 1“, 20, proces_1, 1000,& proces_1_id); Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 19 Poznámky Spuštění procesu int rtm_start_p(IDPROC * proc_id, long time_to_start, long time_period); • *proc_id - identifikátor procesu • time_to_start - čas, který má uplynout do startu procesu , 0 = okamžité spuštění; čas v ticích RTMON 1 sec = 18,2 tiků. • time_period - perioda opakovaného spuštění; 0 = jednorázové • proces musí být ukončen rtm_stop_p, aby mohl být opět spuštěn • úplné zastavení procesu = změna periody na 0 a následné zastavení Příklad: rtm_start_p(proces_ 1_id, 0, 10); Pozastavení procesu int rtm_delay_p(IDPROC * proc_id, long time_to_delay); • proc_id - identifikátor procesu • time_to_delay - časový interval (v ticích RTMON), na který má být proces pozastaven; je-li pozastaven na neurčitou dobu, může se znovuspustit službou rtm_continue_p Příklad: rtm_delay_p(proces_ 1_id, 0, 91); Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 20 Poznámky Znovuspuštění pozastaveného procesu int rtm_continue_p(IDPROC * proc_id); • *proc_id - identifikátor procesu • znovuspuštění procesu pozastaveného funkcí rtm_delay_p Změna periody volání procesu int rtm_ch_period_p(IDPROC * proc_id, long time_period); • *proc_id - identifikátor procesu • time_period - nová hodnota časové periody (v ticích) - počítá se od startu do startu - nezávisí na době běhu procesu - k opakovanému spuštění může dojít až po ukončení předchozího běhu službou rtm_stop_p. Příklad: rtm_ch_period_p(proces_ 1_id, 0, ); Zastavení procesu int rtm_stop_p(IDPROC * proc_id ); • proc_id - identifikátor procesu • proces je okamžitě zastaven, je možno jej spustit službou rtm_start_p (ne rtm_continue_p) Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 21 Poznámky • byl-li proces spuštěn periodicky a nechceme už jeho další spuštění, musíme před stop změnit jeho periodu spouštění na 0. Příklad: rtm_stop_p(proces_ 1_id, ); Abortování procesu int rtm_abort_p(IDPROC * proc_id ); • *proc_id - identifikátor procesu • zruší se celý proces včetně jeho datových struktur • další použití procesu jen přes službu rtm_create_p 6.6.5 Služby pro práci se schránkami a zprávami Vytvoření schránky int rtm_create_q(char * pname, int l_msg, int n_buff, IDQUEUE **pid_queue ); • *pname - pointer na jméno schránky • l_msg - délka bufferu pro 1 zprávu • n_buff - počet bufferů - počet zpráv, které mohou čekat na čtení • ** pid_queue - identifikátor schránky - adr. pointru na schránku Příklad: rtm_create_q(„SM1“, 2, 5, & SCH1); Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 22 Poznámky • vytvoření schránky - platí pro každou používanou schránku • zprávy se fyzicky přesouvají z buff. vysílajícího procesu do buff. ve schránce a pak do buff. přijímajícího procesu • prostor se alokuje dynamicky • u více zpráv systém FIFO Zápis zprávy a) BEZ ČEKÁNÍ NA VOLNOU SCHRÁNKU int rtm_write_q(IDQUEUE * pid_queue, void * pdata); • *pid_queue - identifikátor schránky • *pdata - pointer na data, která mají být zapsána do schránky • zápis je proveden do prázdné schránky ihned, není-li volná program pokračuje bez zápisu zprávy dál - zpráva je ztracena Příklad: rtm_write_q(SM1, & zpráva 1 ); b) S ČEKÁNÍM NA VOLNOU SCHRÁNKU int rtm_write_q_w(IDQUEUE * pid_queue, void * pdata); Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 23 Poznámky • v případě, že ve schránce jsou zprávy - je plná - přejde zapisující proces do stavu čekající na volnou schránku a automaticky začne pokračovat po uvolnění příslušné schránky Čtení zprávy a) BEZ ČEKÁNÍ NA ZPRÁVU int rtm_read_q(IDQUEUE * pid_queue, void * pdata); • pid_queue - identifikátor schránky • pdata - pointer na data, kam má být zpráva zapsána • pokud ve schránce zpráva není, program pokračuje dál b) S ČEKÁNÍM NA ZPRÁVU int rtm_read_q_w(IDQUEUE * pid_queue, void * pdata); • pokud ve schránce zpráva není, program (proces), který ji chce číst se převede do stavu čekající na zprávu a automaticky pokračuje až ji do schránky některý jiný proces zapíše. Příklad: rtm_read_q_w(SCH1, & zpr3 ); Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 24 Poznámky 6.7 Charakteristika RTMON - HC11 • preemptivní systém • samostatný soubor, který se přilinkuje k uživatelským procesům • je užíván pomocí služeb o služby pro práci s procesy o služby pro práci se schránkami a zprávami • musí být inicializován Vektor uživatelského procesu NÁZEV DÉLKA VÝZNAM HDNPRO 1 číslo procesu (identifikátor) HDPRIO 1 HDSTAR HDSTAC HDSTSZ HDAKST HDPCYK HDPTRU HDPDLY HDSTAT 2 2 2 2 2 2 2 1 priorita (nejvyšší 1, nejnižší 254), systém si vyhrazuje priority 0 a 255 startovací adresa procesu adresa dna zásobníku procesu velikost zásobníku aktuální hodnota ukazatele zásobníku procesu časová perioda spouštění (počet systémových tiků) zbývá period do spuštění (počet systémových tiků) zbývá period do konce pozastavení (počet systémových tiků) stav procesu STDEF pouze definován pomocí CRTP STREDY připraven na spuštění STRUN běžící STSTOP pozastavený STABOR abortovaný STWTIM čeká na uplynutí času do spuštění STWCON čeká na uplynutí času do pokračování Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 25 Poznámky STWQF STWQE STOVRT HDSOW HDNEXT HDRESV 2 2 2 čeká na zprávu ve schránce, jejíž adresa je v HDSOW čeká na uvolnění schránky, jejíž adresa je v HDSOW proces přetekl přes časovou periodu spouštění (Stop) adresa schránky na kterou se čeká adresa další hlavičky procesu (0000H = poslední hlavička) rezerva Vektor schránky NÁZEV DÉLKA VÝZNAM QSTAT 1 stav schránky QBOX 2 obsah schránky 6.7.1 Volání služeb • Před voláním služby je nutno naplnit příslušné vstupní registry podle požadavků volané služby. • Akumulátor A obsahuje číslo volané služby ( pevně dáno ). • Akumulátor B většinou obsahuje číslo procesu, což je identifikátor vrácený službou CRTP (založení procesu - registrace pro jádro RTMON). • Každá služba vrací nejméně akumulátor A, kde je uložen návratový kód procesu (chyba). • Vlastní volání jádra RTMON se provede pomocí instrukce JSR SERV, čímž se předá řízení manažeru služeb. Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 26 Poznámky Seznam návratových kódů služeb NÁZEV VÝZNAM EOK OK, žádná chyba ENS chybné číslo služby ENP chybné číslo procesu (neznámý identifikátor) EQFU schránka je plná (nelze zapsat do schránky) EQEM schránka je prázdná (nelze číst ze schránky) ETPF nelze založit další proces, tabulka procesů je plná ETQF nelze založit další schránku, tabulka schránek je plná Číselné vyjádření kódů naleznete ve zdrojovém textu programu RTMON HC11. 6.7.2 Popis služeb Služby pro práci s procesy CRTP - založení procesu • Vyplní hlavičku procesu do tabulky hlaviček a regulérně zaregistruje proces pro jádro systému. • Nastavuje zásobník procesu a hodnotu jeho aktuálního ukazatele na dno zásobníku. • Stav procesu nastaví na „pouze definován“ a vyplní proměnnou HDSTAR ve vektoru procesu startovací adresou procesu. • Vrátí identifikátor procesu, kterým se odkazují ostatní služby na daný proces. Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 27 Poznámky • Je možno založit až 20 procesů (bez úpravy). STRP - spuštění procesu • Spustí založený proces buďto jednorázově nebo s periodickým spouštěním. • Při periodickém spouštění musí uživatel zaručit, že proces bude dokončen do doby dalšího možného spuštění. Pokud tato situace přece jen nastane, bude proces vyloučen z dalších rozhodování jádra a obdrží status STOVRT. • Při definovaném pozastavení do prvního spuštění nejsou odpočítávány tiky procesu v periodě spouštění. Proces počká až uplyne doba do spuštění, spustí proces a začne odpočítávat tiky do dalšího spuštění. DLYP - pozastavení procesu • Pozastaví další zpracování procesu buďto na neurčito nebo na zadanou dobu. • Je-li pozastavení časově omezeno, proces pokračuje po uplynutí časového intervalu. • Není-li časově omezeno, nemůže proces již dále pokračovat dokud jiný proces nespustí službu CONP. CONP - pokračování procesu • Povolení dalšího zpracování procesu pozastaveného službou DLYP. • Má-li pokračovat proces s vyšší prioritou, dostane ihned přidělen procesor, v jiném případě musí počkat, až budou uspokojeny ostatní procesy s vyššími prioritami. CHPP - změna periody spouštění Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 28 Poznámky • Změní periodu spouštění u periodicky spouštěných procesů. • Lze s výhodou využít pro zastavení dalšího periodického spouštění nebo pro zahájení spouštění s novou periodou. • Je nutno mít na paměti, že programátor aplikace musí zaručit ukončení procesu do příchodu dalšího požadavku na spuštění. STOP - zakončení procesu • Slouží k zakončení práce procesu. • Musí být na konci každého procesu! • Provádí regulérní korekci dat vektoru procesu. • Pokud nebude proces před předáním procesoru jádru systému ukončen touto službou, bude systém zablokován bez šance k regulérnímu obnovení práce bez resetu mikropočítače. ABRP - abort procesu • Provede symbolické vyřazení procesu z tabulek systému. • Je-li periodicky spouštěn musí být perioda spouštění před službou ABRP vynulována pomocí služby CHPP! • Programátor by po použití služby ABRP neměl provádět s daným procesem žádné další operace. Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 29 Poznámky • Tato služba nemá v RTMON HC11 tak výrazně nutné uplatnění jako v jiných systémech reálného času, jelikož se programy nemohou do mikropočítače zavádět dynamicky a není tedy třeba uvolňovat paměť jiným aplikacím. Služby pro práci se schránkami a zprávami CRTQ - založení schránky • Založí schránku pro výměnu dat mezi procesy a vrátí identifikátor schránky, kterým se odkazují ostatní procesy na tuto datovou strukturu. • Schránka má velikost 2 byty a je možno založit až 20 schránek. WRTQ - zápis do schránky bez čekání • Zapíše informace z registru IY do schránky určené identifikátorem bez čekání na volnou schránku. • Je -li ve schránce stará zpráva, bude přepsána a vrácen kód chyby EQFU. WRWQ - zápis s čekáním na volnou schránku • Zapíše informace z registru IY do schránky určené identifikátorem s čekáním, dokud je ve schránce stará zpráva. • Po dobu čekání není procesu přidělován procesor. REDQ - čtení ze schránky bez čekání • Čte zprávu ze schránky. • Je-li schránka prázdná, vrací zprávu 0000H a kód chyby EQEM. Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 30 Poznámky RDWQ - čtení s čekáním na zprávu • Čte zprávu ze schránky. • Pokud je schránka prázdná, čeká až bude naplněna některým z procesů. DELQ - zrušení schránky • Symbolicky zruší schránku. • Musí být zajištěno, že v okamžiku rušení již schránka není používána žádným procesem. Přehled služeb ZKRATKA NÁZEV PARAMETRY CRTP založení procesu A = 1, B = priorita IX = adresa počátku procesu IY = velikost zásobníku vrací: A = chyba, B = číslo procesu (identifikátor) STRP spuštění procesu A = 2, B = číslo procesu IX = počet tiků systému do startu procesu (0 = bez čekání) IY = perioda spouštění procesu (0 = není periodicky spouštěn) vrací: A = chyba DLYP pozastavení A = 3, B = číslo procesu IX = počet tiků pozastavení procesu (0 = neomezeně) vrací: A = chyba Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY Poznámky CONP pokračování procesu A = 4, B = číslo procesu vrací: A = chyba CHPP změna periody spouštění A = 5, B = číslo procesu IX = nová perioda spouštění vrací: A = chyba STOP zakončení procesu A = 6, B = číslo procesu vrací: A = chyba ABRP abort procesu A = 7, B = číslo procesu vrací: A = chyba CRTQ založení schránky A=8 vrací: A = chyba, IX = adresa schránky WRTQ zápis do schránky A=9 IX = adresa schránky IY = obsah zprávy vrací: A = chyba WRWQ zápis s čekáním na volnou schr. A = 10 IX = adresa schránky IY = obsah zprávy vrací: A = chyba REDQ čtení ze schránky A = 11 IX = adresa schránky IY = obsah zprávy vrací: A = chyba RDWQ čtení s čekáním na příchod zpr. A = 12 IX = adresa schránky IY = obsah zprávy Poznámky 6 - 31 MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 32 Poznámky vrací: A = chyba Seznam systémových proměnných AKTHED adresa hlavičky právě běžícího procesu AKTPRIO priorita právě běžícího procesu AKTNUM číslo aktivního procesu MEMADR adresa 1 byte volné paměti pro alokaci schránek TIMRTM počet tiků od startu jádra RTMONu MSN maximální přípustné číslo služby NUMHED další volné číslo procesu NUMQUE další volné číslo schránky TPNX adresa dalšího volného záznamu v tabulce hlaviček TQNX adresa dalšího volného záznamu v tabulce schránek TSNX adresa volné adresy v oblasti zásobníků pro alokaci TPSRC velikost jednoho záznamu v tabulce hlaviček CYKNX ukazatel na další volný byte v CYKL TPLS adresa poslední hlavičky procesu v tabulce hlaviček Systémové tabulky TABHED tabulka hlaviček procesů (max. 20) TABQUE tabulka schránek (max. 20) TABSRV tabulka adres služeb (zatím 13) STACKS prostor pro zásobníky (20 zásobníků po 32 bytech - lze dynamicky měnit velikost jednotlivých zásobníků, ale nesmí se překročit průměr 32 na jeden) Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY Poznámky MAPA PAMĚTI NÁVĚŠTÍ POPIS OCOOOH TABHED Tabulka 20 uživatelských vektorů procesů TABQUE Tabulka 20 uživatelských schránek TABSRV Tabulka adres služeb (pro manažer služeb) STACKS Oblast pro 20 zásobníků uživatelských procesů TABCYK Tabulka pro vyhodnocení cyklického přepínání procesů AKTHED Počátek bloku systémových proměnných RTSTRT Startovací rutina systému RTEND Ukončovací rutina systému DUMMY Vytěžovací proces systému TIK Podprogram obsluhy přerušení od obvodu reálného času JADRO Rutina zajišťující přepínání a řízení procesů SERV Manažer služeb FNDTPH Rutina pro hledání adresy vektoru procesu podle čísla proc. CRTP Služba založení procesu STRP Služba nastartování procesu DLYP Služba pozastavení procesu CONP Služba ukončující pozastavení procesu CHPP Služba změny periody spouštění procesu STOP Služba zastavení procesu ABRP Služba zrušení procesu Poznámky 6 - 33 MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 34 Poznámky CRTQ Služba založení schránky WRTQ Služba zápisu dat do schránky bez čekání WRWQ Služba zápisu dat do schránky s čekáním REDQ Služba čtení dat ze schránky bez čekání RDWQ Služba čtení dat ze schránky s čekáním DELQ Služba zrušení schránky QSERV Rutina zajišťující synchronizaci schránek DINIT Ovladače displeje (Mesit) RTCINIT Ovladače obvodu reálného času (Mesit) MAIN Blok uživatelských procesů MEMADR Ukazatel na první volný byte paměti OCBOOH Demonstrační příklad programu v reálném čase hlavní program MAIN Poznámky JSR RTSTRT inicializace RTMONu a jeho spusteni LDAA #$01 vyplneni hlavicky procesu 1 LDAB #05 priorita LDX #PROC1 adresa zacatku procesu LDY #32 velikost zasobniku JSR SERV STAB IDE1 uschovna cisla procesu LDAA #$01 vyplneni hlavicky procesu 2 MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY Poznámky Poznámky LDAB #05 priorita LDX #PROC2 adresa zacatku procesu LDY #32 velikost zasobniku JSR SERV STAB IDE2 uschova cisla procesu LDAA #$02 spusteni procesu 1 LDAB IDE1 identifikátor LDX #$0000 tiku do startu LDY #$0004 perioda spousteni JSR SERV start procesu LDAA #$02 spusteni procesu 2 LDAB IDE2 identifikator LDX #$0000 tiku do startu LDY #$0008 perioda spousteni JSR SERV start procesu LDAA #$03 sluzba DLYP LDAB #$00 pozastaveni hlavniho programu LDX #$0000 neomezene JSR SERV za touto instrukci bude pokracovat JSR RTEND ukonceni práce jadra RTMONu 6 - 35 MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY Poznámky RTS *Blok identifikatoru pouzitych procesu IDE1 FCB 0 cislo procesu 1 IDE2 FCB 0 cislo procesu 2 procesy * * Kod procesu P1, pouziva lokalni promenou PROM1 * PROC1 JSR dline1 LDAA #’1’ JSR douta LDAA PROM1 JSR douta LDAA PROM1 CMPA #’Z’ BEQ L1 na radek 1 vypisuje promennou PROM1 INCA L2 L1 Poznámky STAA PROM1 LDAA #$06 LDAB IDE1 JSR SER V LDAA #’A’ BRA L2 sluzba STOP 6 - 36 MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 37 Poznámky PROM1 FCB ‘A’ lokalni promena * * Kod procesu P2, pouziva lokalni promenou PROM1 * PROC2 JSR dline2 LDAA #’2’ JSR douta LDAA PROM2 JSR LDAA CMPA #’Z’ BEQ INCA douta PROM2 L4 STAA LDAA LDAB JSR PROM2 #$06 IDE2 SER V L3 LDAA BRA #’A’ L4 PROM2 FCB ‘A’ Poznámky na radek 2 vypisuje promennou PROM1 L3 sluzba STOP lokalni promena MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY Poznámky Obecný monitorovací a řídicí mikropočítačový systém Poznámky 6 - 38 MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 39 Poznámky 6.8 Programový systém DEMORTM Systém pracuje s pěti procesy: PROCES 1: Je periodicky spuštěn, vypisuje na obrazovku vzestupnou posloupnost čísel od 1 do 5. Po dosažení čísla 5 se čítá znovu od 1. V případě lichého čísla pošle zprávu Z1 pro PROCES 3. V případě sudého čísla posílá zprávu Z2 pro PROCES 4. • Perioda spouštění: 5 s = 91 tiků • Priorita procesu: 20 PROCES 2: Jednorázově spouštěn. Po spuštění vypisuje na obrazovku znak „ G “ a pozastaví se na 3 s. Po znovuspuštění znak vymaže. • Perioda spouštění: jednorázové spouštění • Priorita procesu: 3 PROCES 3: Čeká na zprávu od PROCESu 1, když ji obdrží vypisuje znak „ 3 “ a spustí jednorázově PROCES 2. • Perioda spouštění: jednorázové spouštění • Priorita procesu: 3 Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY 6 - 40 Poznámky PROCES 4: Čeká na zprávu od PROCESu 1, když ji obdrží vypisuje znak „ 4 „ a spustí jednorázově PROCES 2. • Perioda spouštění: jednorázové spouštění • Priorita procesu: 15 PROCES 5: Proces pro obsluhu spouštění a zastavování procesů 1, 2, 3, 4. Spouštění se děje zadáním znaku „ G „ a čísla procesu, zastavování je obdobné, zadáním znaku „ S “ a čísla procesu. Pro ukončení programu se zadá znak „ E „ a počítač se vrátí zpět do prostředí MS DOSu. Při spuštění procesu se vypisuje na spodním řádku „PROCES i“ což signalizuje, že příslušný proces byl spuštěn, po jeho zastavení signalizace zmizí. • Perioda spouštění: jednorázové spouštění • Priorita procesu : 29 # include # include # include IDPROC <rtm.h> <conio.h> <stdarg.h> *proces_1_id, *proces_2_id, *proces_3_id, *proces_4_id, *proces_5_id, *init_id; IDQUEUE *S1, *S2; void proces_1 ( void ); void proces_2 ( void ); void proces_3 ( void ); Poznámky MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY Poznámky void void int proces_4 ( void ); proces_5 ( void ); print ( int x, int y, char *str,...); void main ( void ) { rtm_init (&init_id); rtm_create_p rtm_create_p rtm_create_p rtm_create_p rtm_create_p ("PROCES1", ("PROCES2", ("PROCES3", ("PROCES4", ("PROCES5", 20, proces_1, 1000, &proces_1_id); 3, proces_2, 1000, &proces_2_id); 23, proces_3, 1000, &proces_3_id); 15, proces_4, 1000, &proces_4_id); 29, proces_5, 1000, &proces_5_id); rtm_create_q ("S1", 1, 1, &S1); rtm_create_q ("S2", 1, 1, &S2); rtm_start_p (proces_5_id, 0L, 0L); rtm_delay_p (init_id, 0L); rtm_ch_period_p(proces_1_id,0); rtm_stop_p (proces_1_id); rtm_stop_p (proces_2_id); rtm_stop_p (proces_3_id); rtm_stop_p (proces_4_id); rtm_stop_p (proces_5_id); rtm_abort_p rtm_abort_p rtm_abort_p rtm_abort_p rtm_abort_p (proces_1_id); (proces_2_id); (proces_3_id); (proces_4_id); (proces_5_id); rtm_end (init_id); clrscr(); printf(" Porgram DEMORTM ukoncen \n"); } Poznámky 6 - 41 MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY Poznámky void { static char char proces_1 ( void ) int i=1; sprava1='3'; sprava2='4'; print(1,7,"Proces 1 : %d",i); if(i%2) else { rtm_write_q(S1,&sprava1); } { rtm_write_q(S2,&sprava2); } i++; if(i==6) i=1; rtm_stop_p(proces_1_id); } void proces_2 ( void ) { print(1,8,"Proces 2 : G"); rtm_delay_p( proces_2_id, 54L); print(1,8," "); rtm_stop_p(proces_2_id); } void proces_3 ( void ) { static int i=0; char sprava; print(1,9,"Proces 3 : "); rtm_read_q_w ( S1, &sprava ); if(i) print(1,9,"Proces 3 : 3 "); Poznámky 6 - 42 MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY Poznámky else print(1,9,"Proces 3 : 33"); i=!i; rtm_start_p(proces_2_id, 0L, 0L ); print(1,9," "); rtm_stop_p ( proces_3_id ); } void proces_4 ( void ) { static int i=0; char sprava; print(1,10,"Proces 4 : "); rtm_read_q_w ( S2, &sprava ); if(i) print(1,10,"Proces 4 : 4 "); else print(1,10,"Proces 4 : 44"); i=!i; rtm_start_p(proces_2_id, 0L, 0L ); print(1,10," "); rtm_stop_p(proces_4_id); } void proces_5 ( void ) { int sluzba; int proces; clrscr(); printf("Demonstracni program pro RTMON"); while(1) { gotoxy(1,3); printf("Zadej sluzbu : "); clreol(); sluzba=getche(); switch(sluzba) { case 'G' : case 'g' : gotoxy(1,4); Poznámky 6 - 43 MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY Poznámky printf("Spusti proces : "); clreol(); proces=getche(); gotoxy(1,4); clreol(); switch(proces) { case '1' : rtm_start_p(proces_1_id,0L,91L); break; case '2' : rtm_start_p(proces_2_id,0L,0L); break; case '3' : rtm_start_p(proces_3_id,0L,0L); break; case '4' : rtm_start_p(proces_4_id,0L,0L); break; default : putch(7); } break; case case 'S' : 's' : gotoxy(1,4); printf("Zastav proces : "); clreol(); proces=getche(); gotoxy(1,4); clreol(); switch(proces) { case '1' : rtm_ch_period_p(proces_1_id,0); rtm_stop_p(proces_1_id); print(1,7," "); break; case '2' : rtm_stop_p(proces_2_id); Poznámky 6 - 44 MIKROPOČÍTAČE -REAL – TIMOVÉ OPERAČNÍ SYSTÉMY Poznámky print(1,8," "); break; case '3' : rtm_stop_p(proces_3_id); print(1,9," "); break; case '4' : rtm_stop_p(proces_4_id); print(1,10," "); break; default : putch(7); } break; case case default } 'E' : 'e' : rtm_continue_p(init_id); break; : putch(7); } } int print ( int x, int y, char *str,...) { int _x,_y; va_list argptr; int cnt; // uchovam kurzor _x=wherex(); _y=wherey(); // nastavym kurzor gotoxy(x,y); // poslu zasobnik do funkce vprintf va_start(argptr, str); cnt = vprintf(str, argptr); va_end(argptr); // vratim kurzor gotoxy(_x,_y); return(cnt); } Poznámky 6 - 45 MIKROPOČÍTAČE - Propopjení s technologickým procesem 7-1 Poznámky 7 PROPOJENÍ S TECHNOLOGICKÝM PROCESEM 7.1 Jednotka pro styk s technologickým procesem 7.1.1 Osmibitový A/D PŘEVODNÍK + 8 binárních vstupů B I 1 N 8 A 1 N 2 A L 8 O G. A/D 8 adr4 BIN. ÚDAJE adr1 ANALOG. ÚDAJE adr3 MULTI adr2 PLEXOR START PŘEVOD 4=0 VOLBA Č. KANÁLU 0 V ÷ 10 V 0 ........... k. č. 1 -5V÷+5V 1 ........... k. č. 2 7 ........... k. č. 8 Poznámky MIKROPOČÍTAČE - Propopjení s technologickým procesem Poznámky TEST ANALOG. KANÁLU TEST BIN. PORTU č. k. → adr. 2 čas 5µ s 0 → adr.3 čti adr. 4 maskuj čas 5 µ s zpracuj čti + adr. 1 zpracuj čas Poznámky čas 7-2 MIKROPOČÍTAČE - Propopjení s technologickým procesem 7-3 Poznámky 7.1.2 Dvanáctibitový A/D převodník adr.1 0 bity 0 - 7 M U L T I P L E X. 7 A/D adr. 2 12 adr. 4 x x x S bity 8 - 11 S=0 ukončení START Př. = 0 adr.3 VOLBA č. k. 0 ...........k. č. 1 . 7 ...........k. č. 8 7 z adr. 1 XXXX 0 XXXX z adr. 2 11 XXXX X 8 z adr. 1 0000 11 Poznámky 8 7 0 MIKROPOČÍTAČE - Propopjení s technologickým procesem Poznámky Test analogového kanálu č. k. → adr. 3 čas 5 µs 0 → adr. 4 čti status s = 0? ano čti adr. 2 rotace o 4 bity čti adr. 1 sluč zpracuj Poznámky 7-4 MIKROPOČÍTAČE - Propopjení s technologickým procesem 7-5 Poznámky 7.1.3 Osmibitový D/A převodník + 8 binárních výstupů Analog. čas analogový údaj 0 - 10 V - 5 až + 5 V D/A adr. 1 Binární adr. 2 Test D/A Poznámky 1x8 + 8 bin . . . bin. výstupy TTL Test bin. hodnota → adr. 1 hodnota → adr. 2 čas pro změnu čas pro změnu MIKROPOČÍTAČE - Propopjení s technologickým procesem 7-6 Poznámky 7.1.4 Dvanáctibitový D/A převodník 7 0 adr. 1 XXXX 11 XXXX 8 D/A adr. 2 XXXX 0 - 10 V -5÷+5V 1 x 12 bit 15 0 0 0 0 0 0 0 0 Poznámky anal. výstup 8 7 0 X X X X X X X X X X X X 1 1 1 1 1 1 1 1 255 X X X X X X X X údaj pro adr. 1 1 1 1 1 0 0 0 0 0 0 0 0 3840 MIKROPOČÍTAČE - Propopjení s technologickým procesem 7-7 Poznámky číslo and 255 → DB číslo and 3840 → HB rotace HB DB → adr. 1 HB → adr. 2 čas Poznámky (pro adr. 1) MIKROPOČÍTAČE - Propopjení s technologickým procesem 7-8 Poznámky 7.1.5 Obvod binárních vstupu/výstupu adr.1 1 adr.2 IN Bin. 1 V/V adr.3 adr.4 OUT adr.5 24 OUT 7.2 STANDARDNÍ ROZHRANÍ RS232C Je určeno pro styk osobního mikropočítače třídy PC s jiným počítačem nebo zařízením s obousměrnou komunikací, americká norma RS 232 C, evropská V.24 a V.28. DATOVÝ OKRUH PŘENOSOVÝ OKRUH S2 A Poznámky UZD D UZD KZD S1 KZD S1 S2 B MIKROPOČÍTAČE - Propopjení s technologickým procesem 7-9 Poznámky Sériový datový okruh Sériově, přenášet postupně o sériovém datovém okruhu koncových zařízení datového okruhu. Přenosový okruh se dvěma ukončujícími zařízeními přenosu dat (UZD). Odlehlost, typ a druh přenosového okruhu. Pro velmi malé vzdálenosti do (15m) lze datový okruh vynechat a obě koncová zařízení spojit přímo (nulový modem). CANNON s 25, CANNON s 9 špičkami, KZD se špičkami, UZD konektor s dutinkami. Malá varianta jednokanálový asynchronní přenos dat. Neumožňuje zjistit stav zařízení a nemůže zajistit potvrzení, jen programově. Nejčastější je střední varianta - jednokanálový synchronní nebo asynchronní přenos dat. Má prostředky pro zjištění stavu přenosu i k potvrzení na větší vzdálenosti s modemem i krátké vzdálenosti přímo mezi dvěma koncovými zařízeními. Velká varianta má všechny možnosti dané tímto standardním rozhraním. aplikace - nejtypičtější variantu uvádí obr. K KZ D D KABEL K D UZD PŘENOSOVÝ OKRUH KZD Poznámky K D KABEL K D UZD Standardní MIKROPOČÍTAČE - Propopjení s technologickým procesem 7 - 10 Poznámky Standardní provedení sériového rozhraní Nejběžnější - střední skupinu je kabel dvanáctižilový se stíněním, délka nemá přesáhnout 15 m. SG - signálová zem TD - vysílaná data RD - Receive Data - přijímaná data RTS - výzva k vysílání CTS - pohotovost k vysílání DSR - pohotovost ukončujícího zařízení DTR - pohotovost koncového zařízení DCD - detektor koncového zařízení RI - indikátor volání KZD K D KABEL K NULOVÝ MODEM K KZD Poznámky K D KABEL MIKROPOČÍTAČE - Propopjení s technologickým procesem 7 - 11 Poznámky Realizace přímého propojení typu KZD-KZD Nulový modem má dvě základní provedení. Třídrátové a úplné zapojení. Třídrátový nulový modem Úplný nulový modem Základním stavebním kamenem adaptéru obvod 8250 UART ze šířky kmitočtového pásma, ale přizpůsobení se týká i úrovně výstupních signálů a impedance na rozhraní S1. Linkovou jednotku, obvody řízení slouží modemu s koncovým zařízením, v našem i speciální obvody zajišťují kompresi a odolnost proti chybám. Komprese dat znamená, že se delší posloupnost nul nebo jedniček nepřenáší celá, ale nahradí informací o stavu a délce jeho trvání. Chybovou odolnost zabezpečují cyklické kódy, vstupní data kóduje do pseunáhodné posloupnosti, a tak znemožňuje nepovolané osobě zjistit obsah zprávy. Pro vyšší rychlost přenosu dat i korektor - kompenzuje nedokonalosti telefonních okruhů. U odlehlejších zařízení sériovým rozhraním RS 232 C se neobejdeme bez UZD zařízení zvaného modem, modulátor a demodulátor - převést data z koncového zařízení na takovou formu datového okruhu převedením dvouhodnotového číslicového signálu na Poznámky MIKROPOČÍTAČE - Propopjení s technologickým procesem 7 - 12 Poznámky signál přenosný telefonním kanálem. Modulací se tedy signál z počítače převádí na střídavý analogový signál, jehož kmitočty spadají do uvedeného pásma. Demodulace je proces přesně opačný. Blokové schéma modemu Všechny vývody obvodu 8250 jsou TTL kompatibilní. Napěťové úrovně pro zobrazení logických úrovní jinak (úroveň H představuje napětí v rozmezí - 3 V až - 15 V úroveň L napětí v rozmezí + 3 V až + 15 V, je součástí adaptéru konvertor mezi TTL a zobrazením na tomto rozhraní. Doporučováno je zapojení podle obr. 12.11. Poznámky MIKROPOČÍTAČE - Propopjení s technologickým procesem 7 - 13 Poznámky 7.2.1 Přenosy na větší vzdálenost Konvertor RS 232 / RS 485 převádí nejužívanější rozhraní RS 232 s omezeným dosahem (řádově metry) na rozhraní RS 485 s diferenciálním přenosem signálu a s výrazně delším dosahem (řádově stovky metrů). Řízení třetího stavu RS 485 je odvozeno od signálu RTS. Signály DSR a CTS jsou staticky ošetřeny. Konvertor RS 232 / proudová smyčka převádí nejužívanější rozhraní RS 232 s omezeným dosahem (cca 10 m) na proudovou smyčku s vysokou odolností proti rušení. Přenos je úplně duplexní, nevyžaduje SW řízení. Dosah stovky metrů. Proudovou smyčku lze používat při přenosech dat v průmyslovém prostředí s velkým rušením... Vysílač konvertoru proudové smyčky je aktivní. Přijímač konvertoru proudové smyčky je pasivní, galvanicky oddělený od linky. Konvertor staticky ošetřuje signály CTS a DSR. Poznámky MIKROPOČÍTAČE - Propopjení s technologickým procesem 7 - 14 Poznámky Při použití dvou CONV 1 proti sobě dojde ke galvanickému oddělení protilehlých stanic. RS - 232 je digitální rozhraní, u kterého se nepředpokládá komunikace na vzdálenost delší než 15 m a rychlost vyšší než 20 000 bps. (Všichni ho sice používají na větší vzdálenosti a větší rychlosti, ale 15/20 000 je norma). Komunikace se provádí po 25 vodičích, z nichž každý má svůj vlastní úkol. RS-232 je určen pro synchronní i asynchronní komunikaci. 7.2.2 Časová synchronizace signálů RS 232 C ≈V24 s par. V28 Datový okruh Přenosový okruh KZ UZ 1 DCD detektor nos. signálu 2 RD přijímaná data 3 TD vysílaná data 4 DTR pohotovost KZ 5 SG signálová zem 6 DSR pohotovost UZ Poznámky UZ KZ MIKROPOČÍTAČE - Propopjení s technologickým procesem Poznámky 7 RTS výzva k vysílání 8 CTS pohotovost k vysílání 9 RI indikátor volání Poznámky 7 - 15 MIKROPOČÍTAČE - Propopjení s technologickým procesem Poznámky RS 422/485 Poznámky 7 - 16 MIKROPOČÍTAČE - Propopjení s technologickým procesem 7 - 17 Poznámky RS 485 standardní liniové zapojení KZ KZ KZ CT CT KZ RS 485 standardní kruhové zapojení Poznámky KZ MIKROPOČÍTAČE -PLC ( PA ) SYSTÉMY 8-1 Poznámky 8 PLC ( PA ) SYSTÉMY Programovatelný automat je uživatelský programovatelný řídicí systém přizpůsobený pro řízení průmyslových a technologických procesů nebo strojů. Nejčastěji se označuje zkratkou PLC (Programmable Logic Controller). Česká zkratka, která se teprve začíná používat, je PA (Programovatelný automat). Původně byly navrženy k řešení úloh logického řízení, často jako přímá náhrada pevné reléové logiky. V současných aplikacích se zvyšuje podíl úloh regulačního typu, monitorování i úloh měření. 8.1 PA se skládá z • centrální procesorové jednotky, • systémové paměti, • uživatelské paměti, • vstupních a výstupních jednotek pro připojení řízeného systému, • komunikačních jednotek pro komunikaci se souřadnými i nadřazenými řídicími systémy. Navzájem jsou propojeny systémovou sběrnicí. Poznámky MIKROPOČÍTAČE -PLC ( PA ) SYSTÉMY 8-2 Poznámky Řídicí algoritmy jsou realizovány uživatelským programem, který může být zapsán v různých programovatelných jazycích a je uložen v uživatelské paměti PA. Obsahuje posloupnost instrukcí, kterou procesor vykonává cyklicky. Chování PA je tedy dáno v podstatě zaměnitelným programem, u reléových systémů bylo chování určeno strukturou zapojení, která byla nezměnitelná. 8.2 Třídění PA- dle různých hledisek Kompaktní PA (KPA) - menší - měly původně pevně danou konfigurací integrovaných modulů a byly uzavřeny v jednom pouzdře. Pouzdro se montuje přímo do výrobku, je snaha o určitý stupeň modularity a je možno i u malých aplikací přizpůsobit sestavu. Typickými aplikačními oblastmi jsou např. řízení klimatizačních zařízení a technického vybavení v budovách, ovládání garážových vrat, zvedacích plošin, mycích linek, prodejních automatů, balicích strojů apod. KPA mohou ale sloužit i jako komponenty v distribuovaných řídicích systémech. Modulární PA jsou vhodné pro automatizační úlohy středního a velkého rozsahu. Je tvořen v podstatě pevným procesorovým jádrem s napájecím zdrojem umístěným v rámu, ke kterému se přes sběrnici připojují místní i vzdálené periferní jednotky. Kromě i analogové vstupně výstupní jednotky bývá možnost volby jednotek pro rychlé čítání, polohování, nejrůznější typy komunikace, regulaci, i pro speciální funkce. U úloh většího rozsahu je důležitá problematika MMI (Man Machine Interface), tedy rozhraní mezi člověkem a strojem, případně technologickým procesem. Mělo by být dostatečně uživatelsky vstřícné s vizualizací a diagnostikou chyb. Nezbytným doplňkem MPA jsou také ovládací panely, datové terminály a vizualizační prostředky. Poznámky MIKROPOČÍTAČE -PLC ( PA ) SYSTÉMY 8-3 Poznámky Úloha programovatelného automatu v systémech řízení Při dopředném řízení působí PA na řízený objekt jednosměrně, jen jej ovládá a nekontroluje dosažený stav ručním řízením, člověk - operátor. Může plnit úlohy i v automatizovaném, automatickém systému řízení, kdy povely pro automat poskytuje nadřazený řídicí systém. Při zpětnovazebním řízení získává řídicí systém zpětnou informaci o stavu řízeného objektu. Zpětnovazební řízení je typické pro regulační úlohy. Za zpětnovazební řízení ale můžeme považovat i logické řízení, při kterém na objekt působíme jen dvouhodnotovými povely typu „vypni - zapni“ a zpracováváme i zpětnovazební informace dvouhodnotového charakteru. I zpětnovazební řízení může být ruční, automatizované nebo plně automatické. Poznámky MIKROPOČÍTAČE -PLC ( PA ) SYSTÉMY Poznámky 8.3 BLOKOVÉ SCHÉMA TYPICKÉHO PA Poznámky 8-4 MIKROPOČÍTAČE -PLC ( PA ) SYSTÉMY 8-5 Poznámky 8.4 POČÍTAČOVĚ ŘÍZENÁ VÝROBA (CIM) Uplatnění programovatelných automatů v pyramidě řízení podniku - na všech úrovních jedna až tři, hlavní oblast uplatnění na úrovni jedna. Plánování výrobních a podnikových zdrojů 4. MRP/ERP Řízení/sledování výroby 3. MES 2. SUPRVIZE/SCADA PŘÍMÉ ŘÍZENÍ (PLC, DCS, RTU, aj. 1. MRP/ERP - Manufacturing/Enterprice Resource Planning MES - Manufacturing Execution System SCADA - Supervisory Control And Data Acquisition PLC - Programmable Logic Controller DCS - Digital Control System RTU - Real Time Unit Poznámky Řízení/sledování výrobní buňky Řízení stroje/ zařízení MIKROPOČÍTAČE -PLC ( PA ) SYSTÉMY 8-6 Poznámky 8.5 Zařazení programovatelného automatu mezi řídicí systémy Relé a kontakty versus PA Relé, stykače a tlačítka jsou v některých případech nenahraditelné. Rozsáhlejší funkce se kontaktní a reléovou technologií již nerealizují, svěříme je důsledně programu PA. Regulátory versus PA Rozdíl se postupně stírá, pracují číslicově a hranice je neostrá. Výrobci PA postupně expandují do aplikačních oblastí dosud vyhrazených pro regulátory. Tradiční výrobci regulátorů své PA uzpůsobují i pro logické řízení. Např. inteligentní regulátory, které mají přidány logické funkce schopny pracovat v různých režimech. Personální počítače a versus PA Přímé řízení technologických procesů standardním PC - přinejmenším riskantní a diskutabilní - komerční elektronika. Průmyslové počítače - problémem je vysoká cena. Standardním řešením je použití distribuovaného systému, kdy osobní počítač je použit ve velínu nebo na dispečerském pracovišti a do drsného průmyslového prostředí jsou předsunuty PA. Někteří výrobci nabízejí počítačový modul kompatibilní s PC. Poznámky MIKROPOČÍTAČE -PLC ( PA ) SYSTÉMY 8-7 Poznámky 8.6 Hlavní charakteristika PA Výhody : rychlá realizace, spolehlivost, odolnost a diagnostika. Snadná přizpůsobitelnost řešení (nekončící změny v zadání, dodatečné požadavky, schopnost komunikace v podřízené úrovni, v souřadné úrovni i směrem k systémům nadřízeným. Nevýhody: prodloužení odezvy, odezva PLC bývá delší - je dána dobou průchodu programu. Nespojitost v čase - algoritmus je vykonáván cyklicky. Uvnitř intervalu nereaguje na změny vstupních hodnot. Může být příčinou hazardů a chyb, ztráty krátkého vstupního impulsu, nevyhodnocení hrany signálu apod. Postupnost zpracování - program PLC je vykonáván v pořadí, v jakém je zapsán. 8.7 Typy PA 8.7.1 Hledisko konfigurace PLC Skutečnou sestavu volí uživatel tak, aby co nejlépe přizpůsobil svůj PLC požadavkům řešené úlohy. Některé typy modulů mohou chybět, jiné se mnohonásobně opakují. V krajním případě čistě binární (logický) systém nebo naopak jako výhradně analogový. Sestavy čistě vstupní, systém pro měření, předzpracování dat i čistě výstupního. Aplikace bez fyzických vstupů a výstupů, jen jako inteligentní, programovatelný komunikační adaptér. 8.7.2 Hledisko velikosti a konstrukčního uspořádání Mikro PLC Poznámky MIKROPOČÍTAČE -PLC ( PA ) SYSTÉMY 8-8 Poznámky Nabízejí pevnou sestavu vstupů a výstupů, kompaktní provedení, malé rozměry a nízkou cenou. Jejich funkční a programátorský komfort je obvykle redukován na nezbytné minimum, komunikační možnosti mnohdy chybějí. Kompaktní PLC Nabízejí určitou i když omezenou variabilnost. Uživatel může k základnímu modulu připojit jeden nebo několik přídavných modulů z omezeného sortimentu s pevnou kombinací vstupů a výstupů, např. modul s 8 binárními vstupy a 8 binárními výstupy, modul rychlých čítačů, analogový vstupní a výstupní modul, modul regulátoru, apod. 8.7.3 Modulární PLC Větší volnost ve volbě konfigurace, možnost zasouvat libovolné moduly, jeden systém může být tvořen několika rámy, rozšiřovací moduly mohou být připojeny na vzdálenosti stovek metrů. 8.7.4 Programovatelné pracovní stanice Sdružují funkce PLC a operátorského panelu. Výhody - integrace funkcí, praktické konstrukční provedení, výhodný poměr cena/výkon, široké možnosti uplatnění i tam, kde bylo použití tradičního PLC s odděleným operátorským panelem dosud cenově nedostupné. Nejvýznamnější světoví výrobci (řazeno abecedně): ABB, Allen-Bradley, AEG, B+R, Eberle, Klöckner Moeller, Festo, GE, H+B, Idec, Matsushita, Mitsubishi, Omron, Saia, Siemens Telemechanique. Poznámky MIKROPOČÍTAČE -PLC ( PA ) SYSTÉMY 8-9 Poznámky 8.8 Konstrukční a elektrické provedení PA Pouzdro, základní modul, napájení Kompaktní PA jsou umístěny buď v jednom pouzdře nebo dovolují v malé míře rozšíření. Většinou se montují přímo na lištu DIN do rozvaděče. V základním modulu modulárních PA (rám, nosná deska, lišta) bývají umístěny: centrální procesorová jednotka (CPU), napájecí jednotka, systémová a napájecí sběrnice a několik volných pozic pro zásuvné periferní jednotky. Pokud počet volných pozic v základním modulu nepostačuje, bývají k dispozici rozšiřující moduly. Rozšiřující moduly se připojují pomocí tzv. expanzní jednotky. Centrální procesorová jednotka - je jádrem celého PA, určuje jeho výkonnost, je jednoprocesorová nebo i víceprocesorová. U víceprocesorových systémů bývají použity matematické koprocesory nebo vstupně výstupní procesory, někdy též komunikační procesory, pro urychlení práce používá rychlý bitový procesor. Důležitým charakteristickým parametrem CPU je operační rychlost posuzovaná podle tzv. doby cyklu, což je doba zpracování 1000 (1k) logických instrukcí. Pohybuje se řádově od desítek milisekund až k desetinám milisekund. Paměťový prostor se může dělit na paměť uživatelskou, systémovou a paměť dat. Do uživatelské paměti se ukládá uživatelský program. Tato paměť bývá typu EPROM nebo EEPROM s kapacitou řádově od desítek kB až po jednotky MB u modulárních PA, u kompaktních PA spíše v desítkách kB. V systémové paměti je umístěn systémový program. Tato paměť bývá rovněž typu EPROM. V samostatné jednotce může být umístěna přídavná Poznámky MIKROPOČÍTAČE -PLC ( PA ) SYSTÉMY 8 - 10 Poznámky uživatelská paměť. V paměti dat typu RAM jsou umístěny uživateli dostupné registry, zápisníkové registry, čítače, časovače a většinou i vyrovnávací registry pro obrazy vstupů a výstupů. Počet těchto registrů výrazně ovlivňuje možnosti PA. Adresovatelný prostor vymezený pro vstupy/výstupy omezuje počet připojitelných periferních jednotek. Důležitým parametrem jsou rozsahy čítačů a časovačů, jeden nebo i více sériových komunikačních kanálů. Většina automatů má dostupné i hodiny reálného času, případně i s kalendářem. 8.9 Binární vstupní jednotky Binární vstupní jednotky slouží k připojování prvků pro tvorbu vstupů s dvouhodnotovým charakterem výstupního signálu např. tlačítka, přepínače a koncové spínače. Vstupní binární modul zajišťuje většinou tyto funkce: • ochranu všech konkrétních vstupů PA před poškozením či zničením • chybným napětím či přepětím odfiltrování krátkodobých rušivých impulsů (např. pomocí zpoždění signálu) • galvanické oddělení obvodů vstupního modulu od centrální jednotky (pomocí optočlenů) • signalizace stavu vstupů (pomocí LED diod na čelním panelu jednotky). U některých automatů je připraven prostor pro popis jednotlivých vstupů. Nejčastější jednotky pro vstupy stejnosměrné - v rozsazích 5 V, 12 V, 24 V, 48 V, střídavé v rozsazích 24 V, 48 V, 115 V a 230 V. Poznámky MIKROPOČÍTAČE -PLC ( PA ) SYSTÉMY 8 - 11 Poznámky 8.10 Binární výstupní jednotky Binární výstupní jednotky slouží k připojování nejrůznějších akčních členů s dvouhodnotovým charakterem vstupního signálu, např. různá optická i akustická signalizační zařízení, cívky relé, stykačů, solenoidových ventilů, elektromagneticky ovládaných pneumatických či hydraulických rozvaděčů. Binární výstupní jednotka většinou plní tyto funkce: • galvanické oddělení signálu přicházejícího z CPU od signálu předávaného z výstupní jednotky akčním členům (pomocí optočlenů) • zesílení signálu na potřebnou úroveň • ochrana výstupů před zkratem • signalizace stavu výstupů (pomocí LED diod). Dodávají se v různých variantách a provedeních: • pro stejnosměrné spínané napětí (nejčastěji 24 V, 48 V) se spínacími prvky tranzistorovými typu NPN i PNP • pro střídavé spínané napětí 24 - 250 V AC, 24 - 48 V AC, 115 ÷ 230 V se spínacími prvky triakovými • pro stejnosměrné i střídavé napětí (do 250 V AC/60V DC) se spínacími prvky reléovými. Poznámky MIKROPOČÍTAČE -PLC ( PA ) SYSTÉMY 8 - 12 Poznámky 8.11 Kombinované jednotky binárních vstupů a výstupů V sortimentu binárních jednotek bývá i kombinovaný modul binárních vstupů a výstupů. Může být využit na optimální doladění sestavy, ale především je určen k multiplexovanému buzení a snímání matice tlačítek do rozsahu 8 x 8 nebo až 16 pater plochých zadávacích přepínačů. Analogové vstupní jednotky Analogové vstupní jednotky zprostředkují kontakt programovatelného automatu se spojitým prostředím. Lze k nim připojit např. snímače teploty, vlhkosti, tlaku, síly, hladiny, rychlosti, ale i inteligentní přístroje s analogovými výstupy. Důležitou součástí je A/D převodník s rozsahem 8 nebo 12 bitů. Sortiment bývá široký, např. jednotky pro určité typy čidel - pro termočlánky. U specializovaných jednotek je poněkud potlačena univerzálnost, zato jsou optimálně přizpůsobeny svému určení a poskytují tak levnější a kvalitnější řešení. Analogové moduly s galvanickým oddělením dovolují zvýšit odolnost systému proti rušení, v některých situacích jsou principiálně nenahraditelné. Analogové výstupní jednotky Analogové výstupní jednotky slouží pro ovládání různých akčních členů či zařízení se spojitým charakterem vstupního signálu, jako jsou např. spojité servopohony, frekvenční měniče, ale třeba i ručkové měřící přístroje apod. Nezbytnou součástí je D/A převodník, většinou mívá rozsah 8 nebo 12 bitů. Analogové výstupy jsou buď napěťové nebo proudové. Proudové výstupy mohou být aktivní nebo pasivní. U aktivních nemusí mít Poznámky MIKROPOČÍTAČE -PLC ( PA ) SYSTÉMY 8 - 13 Poznámky připojený akční člen svůj zdroj proudu a je napájen přímo z analogového proudového výstupu automatu. Připojený akční člen má v tomto případě omezený maximální odpor. Čítačové jednotky Rychlé čítače, odměřovací a polohovací jednotky jsou určeny k měření a řízení polohy, k řízení dráhy a rychlosti pohyblivých částí strojů a manipulačních mechanismů. Čítačové jednotky jsou určeny k čítání pulsů, jejichž perioda je srovnatelná nebo kratší, než je smyčka programu PA. Polohovací jednotky polohovací jednotky jsou určeny pro snímání polohy a řízení jedné nebo dvou souvislých os, případně pro řízení pohybu po naprogramované dráze. Parametry pohybu jsou zadávány programově z PA. Komunikační jednotky Důležitou vlastností PLC je schopnost komunikovat se vzdálenými moduly vstupů a výstupů, s podsystémy i nadřízenými systémy, s operátorskými panely a s jinými inteligentními přístroji, s počítači a s jejich sítěmi a tak vytvářet distribuované systémy. Komunikační jednotky většinou rozšiřují počet asynchronních sériových komunikačních kanálů U některých systémů jsou k dispozici i jednotky dálkových přenosů umožňující dálkové přenosy dat přes modem nebo přes radiomodem (40 km), RS 232 (15 m), RS 422, RS 485 i 2 km. Speciální jednotky Poznámky MIKROPOČÍTAČE -PLC ( PA ) SYSTÉMY 8 - 14 Poznámky Mohou mít specializované moduly pro řešení regulačních úloh (např. regulátor PID) nebo pro řešení úloh s využitím fuzzy logiky a fuzzy regulace. Kuriozní moduly, např. Klöckner Moeller dodávají moduly pneumatických výstupů. Pneumatické ovládání má význam pro výbušné prostředí. Firma Allen Bradley má jednotku pro vstup z CCD kamery. Počítačové jednotky Počítačový modul, kompatibilní s PC. V něm lze standardními počítačovými prostředky řešit úlohy, které nejsou pro PLC typické, např. složité a rychlé výpočetní algoritmy, grafické a geometrické úlohy, zpracování a archivace velkého množství dat, databázové úlohy, výkonné komunikace, napojení PLC do počítačových sítí, připojení standardních počítačových periferií, paměťových karet PCMCA, apod. Poznámky
Podobné dokumenty
Perspectives of Using Motorola 8-bit Microcontrollers for
MC68HC11 jsou osmibitové jednočipové mikrořadiče firmy Motorola. Přímo na čipu jsou
poskytovány základní periferie jako je osmi-kanálový analogově digitální převodník s
rozlišením 8 bitů a rozhraní...
Kdyš Otar odełel
naučit gruzínsky a Marina nerada mluvila rusky, protože to pro ni byl jazyk útisku. Hlavní
předností zkoušek bylo, že jsme stanovili, kdo kdy bude mluvit jakým jazykem. A pro mě to
bylo velmi užite...
16-bitový mikrokontrolér MC9S12NE64
záchytnými/komparačními registry lze měřit časy příchodu externích událostí nebo naopak generovat výstupní
průběhy podle předem nastaveného časovacího schématu. Další součástí modulu je tzv. pulsní...
Programování I. - Střední průmyslová škola elektrotechniky a
On totiž není žádná myslící bytost, a proto nebudeme hovořit o postupu
řešení, ale o algoritmu.
Modem MRS32
Modemová jednotka MRS32 je určena k přenosu dat mezi zařízeními používajícími
rozhraní RS232 telefonním kanálem v rozsahu hovorových frekvencí, dle doporučení V.23.
Ze strany linky umožňuje modemov...
zapisky v TEXu z roku 2007
Procesor obsahuje vektor přerušení který obsahuje informace o jednotlivých druzích přerušení
a místa které obsahují instrukce k jejich obsluze. Operační systém typicky obsadí tyto místa
vlastními i...
PMSDR-popis instalace
14. Vytvořit novou skupinu: sudo groupadd pmsdrusb
sudo usermod -a -G pmsdrusb
Přehled nástrojů CASE na tuzemském trhu
Computer Aided Software Engineering, tedy počítačová podpora softwarového inženýrství.
Ta je v literatuře více zažitá, avšak pro účel naší práce se kloníme spíše k jinému, méně
používanému významu....
stavební návod: GENERÁTOR DATA A ČASU VTG
Pro zdroj reálného času jsme použili osvědčený integrovaný obvod PCF 8583 (IO6). Tento integrovaný obvod
počítá rok pouze jako jeden byte se stavem 0 až 3 (z důvodu nastavení 29.2. u přestupného ro...