Mikroprocesorová technika
|
|
- Štěpánka Procházková
- před 9 lety
- Počet zobrazení:
Transkript
1 Mikroprocesorová technika Laboratorní cvičení Ing. Tomáš Frýza, Ph.D. Ing. Zbyněk Fedra, Ph.D. Ing. Jiří Šebesta, Ph.D. ÚSTAV RADIOELEKTRONIKY
2 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 1 Obsah 1 Vývojové prostředí AVR Studio, aritmetické operace Zadání Teoretické poznatky Pokyny k zadání Shrnutí Kontrolní otázky Ovládání LED diod, využití podprogramů Zadání Teoretické poznatky Pokyny k zadání Shrnutí Kontrolní otázky Obsluha přerušení Zadání Teoretické poznatky Externí přerušení Přerušení od čítače/časovače Pokyny k zadání Shrnutí Kontrolní otázky Pulzně šířková modulace PWM Zadání Teoretické poznatky Pokyny k zadání Shrnutí Kontrolní otázky Programování v jazyce C, obsluha přerušení Zadání Teoretické poznatky Vyšší programovací jazyky Obsluha přerušení v jazyce C Pokyny k zadání Shrnutí Kontrolní otázky Komunikace s LCD displejem Zadání Teoretické poznatky Pokyny k zadání
3 2 Mikroprocesorová technika 6.4 Shrnutí Kontrolní otázky Zpracování analogových signálů Zadání Teoretické poznatky Pokyny k zadání Shrnutí Kontrolní otázky Sériový přenos dat Zadání Teoretické poznatky Pokyny k zadání Shrnutí Kontrolní otázky Literatura 43 A Vývojová deska ATmega16 45 B Základní popis jazyka C 46 B.1 Proměnné a operandy B.2 Syntaxe podmínky B.3 Syntaxe cyklu B.4 Specifika překladače GCC a knihovny avr-libc C Znaková sada LCD displeje 50
4 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 3 Seznam obrázků 1.1 Vytvoření nového projektu a výběr programovacího jazyka Výběr ladící platformy a cílového mikrokontroléru ATmega Vývojové prostředí AVR Studio s vytvořeným prázdným projektem Úspěšný překlad aplikace a informace o velikosti výsledného kódu Ladicí prostředí AVR Studia Výběr AVR programátoru Dialogové okno pro programování mikrokontroléru ATmega Zobrazení obsahu registrů I/O portů A, B, C a D Ukázka použití direktiv pro řízení překladu zdrojového kódu Ukázka zápisu přerušení v jazyce symbolických adres Princip tvorby PWM signálu Časový diagram generování PWM signálu Ukázka zápisu přerušení v programovacím jazyce C Princip změny frekvence generovaného akustického signálu Výběr programátoru AVRISP mkii Zapojení LCD displeje na vývojové desce ATmega Nově definovaný znak pro LCD displej Zapojení odporového děliče v poli konektorů vývojové desky Struktura asynchronního rámce Aplikace Terminal pro ovládání sériového portu počítače A.1 Zapojení vývojové desky Development Board ATmega C.1 Znaková sada LCD displeje
5 4 Mikroprocesorová technika Seznam tabulek 3.1 Přehled vektorů přerušení pro mikrokontrolér ATmega Způsob spouštění externích přerušení INTn (registr MCUCR) Nastavení předděličky čítače/časovače 0 (TCCR0) Přehled vektorů přerušení pro mikrokontrolér ATmega Některé příkazy HD44780 pro komunikaci s LCD displejem Soupis některých funkcí knihovny pro LCD B.1 Některé typy a rozsahy hodnot proměnných B.2 Aritmetické operace B.3 Bitové a logické operace B.4 Relační operandy B.5 Speciální funkce pro mikrokontroléry AVR
6 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 5 1 Vývojové prostředí AVR Studio, aritmetické operace Test předchozích znalostí 1. Jaké číselné soustavy se nejčastěji využívají k reprezentaci hodnot v mikroprocesorové technice a jakým způsobem se graficky odlišují (přípony, prefixy,...)? 2. Jakým způsobem lze převádět hodnoty z binární podoby do hexadecimální, příp. do soustavy desítkové? 3. Jaké instrukce lze u mikrokontroléru AVR použít k výpočtu součtu a rozdílu dvou hodnot? Cíle laboratorní úlohy Cílem laboratorní úlohy je osvojení si práce s vývojovým prostředím AVR Studio, určené pro psaní a ladění aplikací, stejně jako programování mikrokontrolérů AVR. Současně má úloha za cíl umožnit studentům proniknout do způsobu vývoje a testování jednoduchých aplikací, určených pro mikrokontrolér ATmega Zadání 1. Seznamte se s vývojovým prostředím AVR Studio pro programování a ladění aplikací s mikrokontroléry AVR. Vytvořte jednoduchou aplikaci pro výpočet vztahu y(n) = n i=0 {a + b i} v jazyce symbolických adres (JSA). 2. Pomocí integrovaného ladícího nástroje analyzujte správnou funkci vytvořené aplikace. 3. Proved te ruční překlad jedné instrukce z vašeho programu. Výsledek zkontrolujte se automatickým překladem. 4. Modifikujte vytvořenou aplikaci na výpočet hodnot 2 n, kde n = 1, 2,..., Vytvořte program pro realizaci součtu dvou komplexních čísel. 1.2 Teoretické poznatky V číslicových soustavách, tedy i v mikroprocesorové technice, jsou hodnoty reprezentovány vždy v binární soustavě, tj. rozlišují se jen dva stavy. Vzhledem k faktu, že zápis hodnot v binární podobě je rozsáhlý a tudíž nepříliš přehledný, používá se pro lepší kompaktnost zápisu soustava hexadecimální. V této soustavě je možné každou čtveřici bitů nahradit jediným symbolem z množiny {0, 1,..., 9, A,..., F }. Poslední číselnou soustavou, která se nejčastěji používá v mikroprocesorové technice je soustava desítková. V této soustavě jsou zpravidla vyžadovány vstupní a výstupní hodnoty systémů srozumitelné pro
7 6 Mikroprocesorová technika uživatele; např.: hodnoty operandů v kalkulačce, zobrazená velikost měřeného napětí, čas na digitálních hodinách a podobně. Historie mikrokontrolérů sahá do poloviny sedmdesátých let 20. století, od kdy se vývoj v mikroprocesorové technice rozdělil na dvě větve. První směr vede ke zvyšování početního výkonu procesorů, větších kapacit i rychlostí pamětí, apod. Do této kategorie patří např. mikroprocesory z oblasti PC techniky. Druhý proud směřoval k integraci všech potřebných obvodů do jediné součástky. O mikrokontrolérech tedy hovoříme jako o mikroprocesorech, doplněných o obvody pamětí a přídavných periferií, umístěných na jediném čipu. Takto vytvořený obvod je následně schopen řídit jednoduché aplikace z oblasti spotřební elektroniky, audio-video techniky, zabezpečovacích zařízení, obsluhy klávesnic a myší v PC technice, v automobilovém průmyslu (řídicí jednotky motorů, ABS) a v mnoha dalších technických oblastech [1]. V současné době existuje celá řada výrobců, kteří produkují mikrokontroléry s různou strukturou. Kromě nejstarší a patrně nejrozšířenější řady 51 firmy Intel, jsou běžné také produkty firmy Microchip (PIC), Freescale (HCS08, HC11,...), či Atmel (AVR). Mikrokontroléry AVR obsahují 32 identických 8bitových registrů pro běžné použití (označované r0 až r31), které mohou obsahovat jak data, tak i adresy. Pamět ový prostor mikrokontroléru dále obsahuje 64 adres vstupně/výstupních registrů, které slouží k periferním funkcím jako jsou řídicí registry, čítače/časovače, A/D převodníky a další (podrobněji o I/O registrech v následujících laboratorních cvičeních). 1.3 Pokyny k zadání Bod 1. Vývojové prostředí AVR Studio je volný nástroj, který je dostupný ke stažení na internetových stránkách firmy Atmel [2] a slouží k vývoji a testování aplikací pro mikrokontroléry AVR. Program lze spustit kliknutím na ikonu berušky na pracovní ploše, příp. přes Start/Programs/Atmel AVR Tools/AVR Studio 4. Pro každou aplikaci je nutné vytvořit tzv. projekt, který obsahuje informace o souborech se zdrojovým kódem i o konkrétním mikrokontroléru, pro který je aplikace určena. Nový projekt lze vytvořit v menu Project/New Project. V následujícím dialogovém okně je potřeba zvolit v jakém programovacím jazyce bude celá aplikace napsána. Možné jsou dvě varianty: v jazyce symbolických adres (tj. v tzv. asembleru) - Atmel AVR Assembler, nebo ve vyšším programovacím jazyce C (v laboratoři je dostupný volný překladač GCC) - AVR GCC. Toto laboratorní cvičení je určeno k osvojení si programování v JSA, proto zvolte volbu Atmel AVR Assembler. Dále je nutné napsat název celého projektu Project name a především uvést umístění na pevném disku Location, kam má být nově vytvořený projekt uložen. Všechny projekty dočasně ukládejte do adresáře D:\BMPT\vase jmeno\. Zatržením voleb Create initial file a Create folder zajistíte vytvoření podadresáře (jméno bude totožné s názvem projektu) a vytvoření prázdného zdrojového souboru s názvem např. prvni asm.asm (viz. obrázek 1.1). Volby potvrd te tlačítkem Next. Tvorba projektu pokračuje výběrem platformy pro ladění projektu a cílového mikrokontroléru. Vyberte ladění aplikace pomocí interního simulátoru AVR Simulator a mikrokontrolér ATmega16. (viz. obrázek 1.2). Po stisknutí tlačítka Finish se nový projekt vytvoří a otevře se v samotném vývojovém prostředí, jak lze vidět na obrázku 1.3.
8 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 7 Obrázek 1.1: Vytvoření nového projektu s názvem prvni asm a výběr programovacího jazyka Obrázek 1.2: Výběr ladící platformy a cílového mikrokontroléru ATmega16 Prostředí je rozděleno do čtyř částí: 1) menu a ovládací prvky, 2) inspektor projektu (v programovacím módu) a vnitřní uspořádání mikrokontroléru (v ladicím módu), 3) editor pro psaní zdrojového kódu a 4) informační panel o průběhu překladu aplikace. Pomocí editoru vytvořte zdrojový kód v JSA pro mikrokontrolér ATmega16, který umožní naplnění dvou 8bitových registrů konstantami a a b, které následně využijte pro aritmetickou operaci y(n) = n i=0 {a + b i}. V podstatě se jedná o nekonečnou smyčku s jednou operací součtu a jednou dekrementací v každém cyklu. Pro hodnoty a a b uvažujte neznaménková čísla. Využijte instrukce mikrokontroléru ATmega16 pro aritmetické operace bez přenosu a z důvodu zjednodušení neuvažujte možnost překročení maximálního rozsahu hodnot pro 8bitový výsledek. Hodnotu prvního sčítance zadejte v hexadecimální a druhého v binární podobě! Ručně vypočtěte hodnoty y(n) pro n = 0, 1,..., 7. Zdrojový kód lze přeložit příkazem Build/Build, příp. stisknutím klávesy F7, nebo kliknutím na ikonu na liště 1). Tímto příkazem dojde nejprve ke syntaktické kontrole zdrojového kódu a následně k překladu do strojového kódu daného mikrokontroléru. Informace o průběhu a výsledcích překladu jsou zobrazeny v informačním panelu 4). Úspěšný překlad je indikován konstatováním Assembly complete, 0 errors.
9 8 Mikroprocesorová technika Obrázek 1.3: Vývojové prostředí AVR Studio s vytvořeným prázdným projektem 0 warnings. Eventuální chyby je potřeba odstranit. Úspěšný překlad je také doprovázen informací o velikosti výsledného kódu a jeho rozložení do programové paměti Flash (.cseg), datové paměti (.dseg) a do paměti EEPROM (.eseg) (viz. obrázek 1.4). Obrázek 1.4: Úspěšný překlad aplikace a informace o velikosti výsledného kódu Bod 2. Korektní funkci programu vyzkoušejte v integrovaném simulátoru. Do ladícího režimu se přepíná příkazem Debug/Start Debugging, stisknutím klávesové
10 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 9 zkratky Ctrl+Shift+Alt+F5, nebo kliknutím na ikonu. V prostředí simulátoru jsou zpřístupněny tlačítka v příkazové liště ovládající běh a krokování programu, nastavování breakpointů, či zobrazující obsah paměti, registrů a zvolených proměnných. V inspektoru projektů na levé straně došlo automaticky k přepnutí na záložku I/O View, obsahující hodnoty veškerých registrů (řídicích i pro obecné použití r0 - r31) jak znázorňuje obrázek 1.5. Obrázek 1.5: Ladicí prostředí AVR Studia Krokováním programu (např. klávesou F11) ověřte správnou funkci vaší aplikace. Ukončení režimu ladění lze provést příkazem Debug/Stop Debugging, klávesovou zkratkou Ctrl+Shift+F5, nebo tlačítkem. Bod 3. Vyučující vám zadá jednu konkrétní instrukci z vašeho programu a pomocí manuálu instrukční sady mikrokontrolérů AVR [3] ji ručně přeložte do strojového kódu. Výsledek zkontrolujte s automatickým překladem programu AVR Studio. Zobrazit strojový kód lze v ladicím módu například příkazem View/Disassembler (tlačítko ). Z kolika bitů se skládá jedna instrukce mikrokontroléru AVR? Bod 4. Vytvořte nový projekt pro mikrokontrolér ATmega16 a v JSA realizujte program pro postupný výpočet hodnot 2 n, kde n = 1, 2,..., 7. Lze využít část programu vytvořeného v bodě 1. Ukončovací podmínkou se nezabývejte. Kolik bytů obsahuje vámi vytvořený program a kolik instrukcí jste použili? Jakým způsobem lze jednoduše realizovat násobení a dělení hodnotou 2 n v binární soustavě? Bod 5. Vytvořte nový projekt pro mikrokontrolér ATmega16 a v JSA naprogramujte aplikaci, která bude realizovat součet dvou komplexních čísel zadaných ve složkovém tvaru. Pro reálné i imaginární složky uvažujte celá neznaménková čísla, která si zvolíte. Je vhodné volit čísla menší, aby při dílčích aritmetických operacích nedošlo k přetečení
11 10 Mikroprocesorová technika a tím k obtížné kontrole správnosti výsledků. Pro každou z komplexních částí vstupních a výstupních hodnot vyčleňte jeden 8bitový registr. Celkem tedy vstupní a výstupní data zaberou šest registrů (reálná a imaginární část pro dvě vstupní čísla a jeden výsledek). Pro připomenutí je součet dvou komplexních čísel a a b definován rovnicí a + b = R{a} + R{b} + (I{a} + I{b}) j, (1.1) kde R{a} reprezentuje reálnou část a I{a} imaginární část komplexního čísla a a j je imaginární jednotka. Vypočtenou hodnotu zkontrolujte ručním výpočtem, příp. v programu Matlab. Kolik instrukcí obsahuje váš program pro výpočet součtu komplexních čísel? Jak velkou část paměti program zabírá? Kolik registrů využíváte celkem? 1.4 Shrnutí Laboratorní úloha byla koncipována jako úvod do vývoje aplikací pro mikrokontrolér ATmega16. Jejím úkolem bylo přiblížit studentům tvorbu programu v jazyce symbolických adres, správné použití základních instrukcí, překlad instrukcí do strojového kódu a ladění programu pomocí simulátoru. Hlavní důraz byl kladen na užití instrukcí aritmetických operací a operací pro přesun dat. 1.5 Kontrolní otázky Otázka 1.1 Kolik registrů obsahuje mikrokontrolér ATmega16 a jakým způsobem lze v programu AVR Studio zobrazit jejich obsah? Otázka 1.2 Je následující posloupnost instrukcí syntakticky a sémanticky správná? ldi r16,1f ldi r17,25 add r16,r15 sub r16,r17 Otázka 1.3 Obměňte aplikaci z bodu 5 pro výpočet komplexního součinu. a b = R{a} R{b} I{a} I{b} + (R{a} I{b} + I{a} R{b}) j. (1.2)
12 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 11 2 Ovládání LED diod, využití podprogramů Test předchozích znalostí 1. Jakým způsobem může mikrokontrolér komunikovat s okolím? Jak lze u mikrokontroléru ATmega16 definovat směr komunikace jednotlivých pinů? 2. Jak je možné v mikroprocesorové technice snadno testovat, zda je výsledek aritmetické operace roven nule? Jak lze tento postup využít pro realizaci cyklu? 3. Jakou funkci má programový čítač (Program Counter), ukazatel na zásobník (Stack Pointer) a zásobník (Stack)? Cíle laboratorní úlohy Cílem laboratorní úlohy je využití mikrokontroléru k řízení jednoduchých procesů prostřednictvím I/O portů. Dále je cílem úlohy realizace podmíněných skoků a volání podprogramů. 2.1 Zadání 1. V jazyce symbolických adres AVR sestavte a ověřte jednoduchou aplikaci pro rozsvícení zvolených LED diod, které jsou připojeny k I/O bráně mikrokontroléru. Seznamte se s vývojovou deskou STK500 a s metodou programování reálných mikrokontrolérů prostřednictvím ISP (In System Programming). 2. Vytvořte 8bitový binární čítač, jehož hodnotu zobrazte pomocí LED diod. Realizujte zpoždění chodu čítače. 3. Modifikujte aplikaci z předchozího bodu a zpoždění realizujte pomocí podprogramu. 4. Ověřte funkci zásobníku při volání podprogramu. 2.2 Teoretické poznatky Všechny vstupně/výstupní porty (I/O brány) mikrokontroléru ATmega16 mohou být použity jako obecné číslicové vstupy/výstupy a současně mohou tvořit rozhraní k jednotlivým periferiím implementovaným na čipu procesoru. Alternativní periferie jsou ve schématickém znaku definovány popisem pinu v závorce; např. PA0(ADC0). Tímto způsobem jsou řešeny I/O obvody všech mikrokontrolérů (některé I/O piny nemusejí být připojeny k interní periferii a obvykle pak jsou pouze obecným číslicovým vstupem/výstupem). Jednotlivé I/O piny procesorů řady AVR jsou řešeny tzv. Read-Modify- Write architekturou, tj. směr toku dat a stav jednotlivých I/O pinů lze libovolně měnit nezávisle na ostatních pinech. Pro práci s I/O bránami, aplikovanými jako obecné číslicové vstupy/výstupy, slouží skupina konfiguračních registrů. U mikrokontroléru AVR jsou pro tyto účely k dispozici následující registry (symbol n definuje název portu A, B, C nebo D):
13 12 Mikroprocesorová technika DDRn (Data Direction Registr) určuje směr toku dat, zápisem hodnoty 0 na příslušný bit tohoto registru konfigurujeme I/O pin jako vstupní, zápisem hodnoty 1 jako výstupní, PORTn je datovým registrem portu a odpovídá hodnotě zapsané do vyrovnávacího registru portu, tedy hodnotě kterou zapisujeme na příslušný pin (vývod) brány, PINn (Pins Input) je určen pro čtení a odpovídá hodnotě přečtené (synchronizované) z příslušného pinu (log. úroveň signálu přivedená z vnějších obvodů na tento pin). V architektuře AVR jsou definovány další registry pro práci s I/O branami umožňující konfiguraci pull-up rezistorů, nastavení vysoké impedance, apod. Pro naši práci budou prozatím postačovat výše uvedené registry. Pro často se opakující úseky zdrojového kódu se využívají makra nebo podprogramy. Makra jsou realizována pomocí překladače, kdy se do zdrojového kódu vkládá požadovaná posloupnost instrukcí. Takto psané aplikace tedy zabírají větší část programové paměti. Jejich výkon je ale rychlejší. Podprogram se odlišuje tím, že je v paměti obsažen pouze jednou a při každém použití se tzv. volá, tj. skáče se na místo v paměti, kde je uložen. Skoky a návraty z podprogramu způsobují delší dobu výkonu oproti makru. Při volání podprogramu je také nutné uložit tzv. návratovou adresu, tj. pamět ovou pozici kde bude výkon programu pokračovat po návratu z podprogramu. Návratová adresa se ukládá do zásobníku, pro který je vyčleněna část paměti SRAM. 2.3 Pokyny k zadání Bod 1. Ve vývojovém prostředí vytvořte nový projekt v jazyce symbolických adres (v kolonce Project type je nutné vybrat volbu Atmel AVR Assembler). V zadané aplikaci je úkolem rozsvítit LED diody zapojené k I/O bráně. Postup je tedy zřejmý, nejprve zápisem do registru DDRn zapíšeme konfigurační hodnotu tak, aby příslušné piny dané I/O brány, k nimž jsou připojeny LED diody, byly nastaveny jako výstupní (hodnota 1). Zápisem do příslušného registru PORTn pak definujeme, která z těchto LED diod bude svítit. Pro zápis do registrů periferií (I/O registry) se využívá instrukce out, pro čtení pak instrukce in. Z hlediska hardwarového je tedy nutno vědět jak jsou LED diody k I/O vývodům mikrokontroléru připojeny. Další důležitou informací při připojování dalších obvodů k I/O pinům je proudová zatížitelnost jednotlivých pinů. Ta je uvedena v katalogovém listu mikrokontroléru a je specifikována jak pro logickou úroveň výstupu 0, tak i 1 a obvykle se tyto hodnoty liší. Současně je třeba kontrolovat také celkový odběr všech připojených obvodů k I/O portům mikrokontroléru, aby nebyla překročena celková dovolená výkonová ztráta na čipu (najdeme ji opět v katalogovém listu a obvykle je definována v závislosti na provozní teplotě okolí). Pro tuto laboratorní úlohu budeme využívat vývojovou desku STK500 firmy Atmel, připojenou k počítači prostřednictvím sériového rozhraní RS-232. Zapojení desky a její popis je uveden v [4]. Vývojová deska umožňuje programovat celou řadu mikrokontrolérů typu AVR. Pro naše potřeby byl vybrán mikrokontrolér ATmega16. K I/O branám procesoru lze pomocí propojek připojovat různé periferní obvody. S ohledem na zadání je port B připojen k sadě LED diod. Propojení neměňte.
14 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 13 Nedílnou částí vývojové desky je programovací modul mikrokontroléru, tedy jednotka umožňující naprogramovat mikrokontrolér přímo z prostředí AVR Studio. Tato programovací jednotka umožňuje bezprostřední programování mikrokontroléru zapojeného v reálném systému. Není tedy třeba mikrokontrolér vytahovat či vypajovat z cílového hardwaru. Tento způsob programování je označován zkratkou ISP (In System Programming). V následujícím odstavci bude stručně ukázáno jak vaši sestavenou, přeloženou a případně odladěnou aplikaci v simulátoru AVR Studia naprogramovat do fyzického mikrokontroléru prostřednictvím ISP. Při zakládání projektu zadáte jeho jméno a v okně Select debug platform and device natavíte AVR Simulator a ATmega16. ISP systém neumožňuje ladění aplikace přímo v systému, k tomuto účelu slouží jiné, finančně nákladnější prostředky (využívající např. JTAG rozhraní), viz. přednášky. Ladění můžete provádět v simulátoru v AVR Studiu. Po sestavení a odladění aplikace lze přistoupit k fyzickému naprogramování mikrokontroléru ve vývojové desce. ISP programování v AVR Studiu aktivujeme v menu Tools/Program AVR, kde jsou k dispozici dva způsoby navázání komunikace AVR Studia s ISP programátorem: Connect a Auto Connect. V našem případě je výhodnější položka Auto Connect, po kliknutí na ni se vyhledá dostupný programátor připojený k počítači a otevře dialogové okno pro fyzické naprogramování mikrokontroléru. Auto Connect lze aktivovat také kliknutím na ikonku v horní liště nástrojů. Pro úplnost, položka Connect umožňuje ruční nastavení programátoru. Vyberte programátor STK500 or AVRISP. Obrázek 2.1: Výběr AVR programátoru Okno pro nastavení programování pomocí ISP programátoru je znázorněno na obrázku 2.2. Obsahuje několik záložek. Nejdůležitější je pro nás první záložka Program, kde nastavíme typ cílového mikrokontroléru. Následuje volba způsobu programování procesoru. Pro spolehlivé naprogramování mikrokontroléru je vhodné mít zaškrtnuty položky mazání paměti před programováním a verifikace obsahu po naprogramování. Pak bude pamět mazána vždy před novým naplněním a po naplnění bude zkontrolován její obsah. Následuje blok komponent v rámci programové paměti Flash. Pomocí malého tlačítka vedle editačního řádku otevřeme dialogové okno pro načtení souboru, kterým chceme mikrokontrolér naprogramovat. Příslušný soubor najdeme ve složce vytvořeného projektu, má jméno projektu s příponou hex. Jakmile soubor načteme, můžeme jej stiskem tlačítka Program naprogramovat do programové paměti mikrokontroléru. Tlačítkem Verify provádíme případnou kontrolu naprogramovaného obsahu paměti. Tlačítko Read je určeno pro načtení kódu z programové paměti mikrokontroléru (pokud je to umožněno) do souboru. Pokud je požadována práce s interní pamětí EEPROM mikrokontroléru,
15 14 Mikroprocesorová technika lze její obsah naplnit, verifikovat nebo číst pomocí bloku komponent v rámci EEPROM. Všechny operace, výsledky a chyby, které nastanou při programování mikrokontroléru, jsou přehledně zobrazovány ve spodním rámu. Obrázek 2.2: Dialogové okno pro programování mikrokontroléru ATmega16 Další záložky v okně rozšiřují možnosti pro konfiguraci vlastního mikrokontroléru i programátoru. Těmito záložkami se nebudeme zabývat. Nyní již víme, jak kód získaný úspěšným překladem zadané aplikace naprogramovat do fyzického mikrokontroléru, vrat me se tedy k zadanému úkolu. LED diody jsou propojeny s portem B. Všechny LED diody jsou nízkopříkonové (cca 2mA v propustném směru), což bezpečně vyhovuje parametrům zatížitelnosti mikokontroléru ATmega16. Zvolte si, které LED rozsvítíte. Ladění aplikace lze provést v AVR simulátoru, přičemž stav nastavení jednotlivých bitů I/O registrů lze sledovat v levém simulačním okně v rozbalovacím menu I/O ATMEGA16 (PORTA, PORTB, PORTC, PORTD) viz. obrázek 2.3. Pro rozšíření vašeho programátorského umění uved me část zdrojového kódu v JSA odpovídající řešené aplikaci pro rozsvěcování LED diod, který obsahuje nové užitečné direktivy pro překladač (viz. obrázek 2.4). Direktivy netvoří výsledný program, jen určitým způsobem řídí chod překladu celé aplikace do strojového kódu; vyznačují se tečkou na pozici prvního znaku. Direktivy.nolist a.list vypnou, resp. zapnou, generaci informačního výpisu. Lze je využít pro přehlednost, např. pro vyjmutí dlouhých výpisů definičních souborů. Direktiva.cseg informuje překladač, že následující kód je určen pro programovou pamět. Pokud je nutné část kódu uložit např. do paměti EEPROM (obvykle nějaké konstanty, nejčastěji kalibrační) použijeme před tímto kódem direktivu.eseg, apod. Další velmi důležitou direktivou pro práci s reálným mikrokontrolérem je.org, která definuje fyzickou adresu v paměti, od které má být přeložený kód uložen. Některé části programové paměti mají totiž speciální význam např. pro přerušení. Pro nás je v této chvíli důležitá adresa 0 (0x0000), od které se provádí vykonávání kódu (instrukcí) po resetu (také po připojení napájecího napětí). V předloženém výpisu zdrojového kódu je zde umístěna instrukce nepodmíněného skoku na adresu 0x002a, kde pokračuje další běh vykonávaného
16 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 15 Obrázek 2.3: Zobrazení obsahu registrů I/O portů A, B, C a D.nolist ; vypnutí výpisu.include <m16def.inc> ; definiční soubor pro mikrokontrolér ATmega16.list ; povolení výpisu.cseg.org 0x0000 rjmp reset.org 0x002a reset:... ; přeložený kód bude uložen v prog. paměti ; následující kód bude uložen v paměti od adr. 0x0000 ; skok na návěští reset - inicializace po resetu ; následující kód bude uložen v paměti od adr. 0x002a Obrázek 2.4: Ukázka použití direktiv pro řízení překladu zdrojového kódu programu. Tato adresa není zvolena náhodně, ale je první adresou v programové paměti ATmega16, která není určená pro výše zmíněné speciální účely. U jiných typů mikrokontrolérů může být jiná. Tímto krokem zajistíme, že nedojde k žádným problémům při běhu programu a že speciální adresy zůstanou volné pro další rozšiřování programu [5]. Bod 2. Binární čítač vytvořte pomocí nekonečné smyčky, ve které budete inkrementovat obsah 8bitové proměnné, tu odesílat na výstupní port a zobrazovat pomocí LED diod. Ošetření přetečení maximální hodnoty dané 8 bity neuvažujte. Aby byly změny čítače patrné, je nutno do programu zařadit tzv. zpožd ovací smyčku, která zajistí prodloužení doby trvání jednoho stavu. Zpožd ovací smyčku vytvořte pomocí cyklu a instrukce NOP. Bod 3. V rámci tohoto úkolu budete sestavovat a využívat svůj první podprogram. Aby
17 16 Mikroprocesorová technika vše bylo jednoduché a srozumitelné, bude se jednat o úpravu aplikace z předešlého bodu. Podprogram bude realizovat zpožd ovací smyčku. Teorie volání a návratů z podprogramů byla probrána na přednášce. Připomeňme jen, že ke správné funkci podprogramu musí být část datové paměti vyhrazena pro zásobník. Definice zásobníku je možné naprogramovat následujícím způsobem. ldi r16,low(ramend) ; načtení nižšího bytu posledního slova adresy ram out spl,r16 ; naplnění nižšího bytu ukazatele na zásobník ldi r16,high(ramend); načtení vyššího bytu posledního slova adresy ram out sph,r16 ; naplnění vyššího bytu ukazatele na zásobník Bod 4. Vytvořte nový projekt v JSA. Aplikace bude obsahovat hlavní funkci a dva vnořené podprogramy. V hlavní části definujte zásobník a zavolejte první z podprogramů. Ten může obsahovat libovolné instrukce (např. NOP) a volání druhého podprogramu. Pro větší přehlednost je možné v kódu využít direktivy specifikující adresy, kde mají být podprogramy uloženy. Aplikaci spust te v simulátoru a při krokování si poznačte hodnoty ukazatele na zásobník (SP), programového čítače (PC) a návratovou adresu před voláním prvního a druhého podprogramu. Po skoku do podprogramu pak zjistěte změny PC a SP. Jaká data jsou uložena v zásobníku? Obsah paměti je možné zobrazit volbou View/Memory. 2.4 Shrnutí Laboratorní úloha umožňuje studentům osvojení si použití vstupně/výstupních portů pro obsluhu jednoduchých periferních zařízení. Rovněž představuje tvorbu a programování aplikací pro reálné mikrokontroléry, včetně použití podprogramů pro efektivnější zápis zdrojového kódu. 2.5 Kontrolní otázky Otázka 2.1 Co znamená zkratka ISP a jaké výhody tato metoda přináší? Otázka 2.2 Jaké znáte direktivy překladače a k čemu konkrétně slouží? Otázka 2.3 Nakreslete vývojový diagram aplikace z bodu 3.
18 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 17 3 Obsluha přerušení Test předchozích znalostí 1. Jaké jsou rozdíly mezi podprogramem a obsluhou přerušení? 2. Jmenujte dvě nutné podmínky, které musí být splněny k zahájení obsluhy libovolného přerušení? 3. Na čem závisí rychlost přetečení interního čítače/časovače? Cíle laboratorní úlohy Cílem laboratorní úlohy je osvojení si práce s přerušením mikrokontroléru v jazyce symbolických adres. Konkrétně bude využito externí přerušení od tlačítka a přerušení od interního čítače/časovače. 3.1 Zadání 1. Seznamte se s hledáním informací v anglickém datasheetu k mikrokontroléru ATmega16. Vyhledejte potřebné informace k nastavení a povolení externího přerušení od tlačítka. 2. V JSA naprogramujte aplikaci 8bitového čítače řízeného externím přerušením. 3. V datasheetu vyhledejte informace pro nastavení interního čítače/časovače V JSA naprogramujte aplikaci 8bitového čítače řízeného přerušením od 8bitového čítače/časovače. Bonus. V JSA naprogramujte aplikaci sdružující již vytvořené programu. Binární čítač z předchozího bodu doplňte dvojici externích přerušení. Jedním tlačítkem resetujte stav čítače, druhým měňte směr čítání. 3.2 Teoretické poznatky Úvodní část programové paměti je u mikrokontrolérů vyhrazeno pro tzv. vektory přerušení. Tyto vektory popisují činnost systému v případě akutních událostí. Pokud dojde u mikroprocesoru k události, která vyvolává přerušení, mikrokontrolér se podívá na konkrétní místo v programové paměti (právě do oblasti vektorů přerušení) a hledá zde program obsluhy vzniklé situace. Z pochopitelných důvodů se do této oblasti nevkládá celý program obsluhy přerušení, ale jen skok na začátek tohoto programu. Počet vektorů přerušení se liší pro jednotlivé procesory (hlavně podle jejich hardwarové vybavenosti). Pro námi používaný mikrokontrolér ATmega16 firmy Atmel lze soupis všech vektorů přerušení nalézt v tabulce 3.1.
19 18 Mikroprocesorová technika Tabulka 3.1: Přehled vektorů přerušení pro mikrokontrolér ATmega16 Č. Adresa Zdroj přerušení Popis přerušení 1 0x0000 RESET Externí reset, připojení napájení 2 0x0002 INT0 Externí požadavek na přerušení 0 3 0x0004 INT1 Externí požadavek na přerušení 1 4 0x0006 TIMER2 COMP Čítač/časovač 2 - shoda komparace 5 0x0008 TIMER2 OVF Čítač/časovač 2 - přetečení 6 0x000A TIMER1 CAPT Čítač/časovač 1 - zachycení 7 0x000C TIMER1 COMPA Čítač/časovač 1 - shoda s komparátorem A 8 0x000E TIMER1 COMPB Čítač/časovač 1 - shoda s komparátorem B 9 0x0010 TIMER1 OVF Čítač/časovač 1 - přetečení 10 0x0012 TIMER0 OVF Čítač/časovač 0 - přetečení 11 0x0014 SPI, STC Dokončení sériového přenosu SPI 12 0x0016 USART, RXC USART - kompletní příjem dat 13 0x0018 USART, UDRE USART - prázdný datový registr 14 0x001A USART, TXC USART - kompletní vyslání dat 15 0x001C ADC ADC - dokončení A/D převodu 16 0x001E EE RDY EEPROM - komunikace připravena 17 0x0020 ANA COMP Změna výstupu analogového komparátoru 18 0x0022 TWI Událost na I2C sběrnici 19 0x0024 INT2 Externí požadavek na přerušení x0026 TIMER0 COMP Čítač/časovač 0 - shoda komparace 21 0x0028 SPM RDY Uložení do programové paměti připraveno Přerušení, které obsahují všechny systémy je tzv. reset. K němu dojde po připojení napájecího napětí nebo po zresetování systému. Jelikož po zapnutí systému začne mikroprocesor vykonávat instrukce od začátku programové paměti, je vektor přerušení pro reset umístěn právě na adrese 0x0000. Skoky na příslušné obslužné programu lze realizovat například instrukcí rjmp, jak naznačuje obrázek 3.1. Veškerá přerušení je nutné předem povolit v odpovídajících řídicích registrech a navíc povolit globální přerušení ve stavovém registru SREG (Status Register), což lze přímo provést instrukcí sei. Při aktivaci přerušení jsou po dobu vykonání obsluhy přerušení ostatní přerušení obecně zakázána. Obsluhu přerušení je nutné ukončit příkazem reti, který sám opět povolí ostatní přerušení (jedná se o obdobu instrukce ret u návratu z podprogramu). Stejně jako u volání podprogramu je i u obsluhy přerušení nutné předem uložit návratovou adresu. Opět se využije část paměti RAM, která představuje zásobník, tj. na začátku aplikace je nutné jej definovat! Řazení jednotlivých vektorů přerušení v programové paměti zároveň udává jejich prioritu: nejnižší adresa (reset) odpovídá nejvyšší prioritě, atd.
20 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 19.include<m16def.inc>.org 0x0000 rjmp reset.org 0x0002 rjmp citac ; adresa přerušení při reset ; relativní skok na návěští reset ; adresa externího přerušení INT0 ; relativní skok na návěští citac.org 0x002a ; ulož následující kód od adresy 0x002a reset:... ; definice zásobníku... ; naplnění I/O registrů sei ; globální povolení přerušení loop: ; nekonečná smyčka rjmp loop citac:... ; program pro obsluhu externího přerušení reti ; ukončení obsluhy přerušení Obrázek 3.1: Ukázka zápisu přerušení v jazyce symbolických adres Externí přerušení Externí přerušení jsou označována jako INT0, INT1 a INT2 a odpovídají trojici konkrétním pinům procesoru. Zajímavostí je, že přerušení funguje, i když jsou samotné piny nastaveny jako výstupní. Každé přerušení má odpovídající maskovací bit, který umožňuje povolení či zakázání daného přerušení. Pro všechny tři externí přerušení se tyto maskovací bity nachází v registru GICR (General Interrupt Control Register). Bit INT1 povoluje přerušení od zdroje INT1, apod. Pro povolení daného přerušení je tedy třeba nastavit odpovídající bit (na hodnotu 1). Dále je nutné nastavit za jakých podmínek se bude externí přerušení generovat. To lze nastavit pomocí bitů ISCn1 a ISCn0 v registru MCUCR (MCU Control Register). Chceme-li např. generovat externí přerušení INT1 s každou nástupnou hranou, je nutné nastavit bity ISC11 a ISC10 v tomto registru. Význam jednotlivých nastavení je znázorněn v tabulce 3.2. Tabulka 3.2: Způsob spouštění externích přerušení INTn (registr MCUCR) ISCn1:ISCn0 Popis 0b00 Nízká úroveň (log. 0) na pinu INTn generuje požadavek 0b01 Jakákoliv změna logické úrovně na pinu INTn generuje požadavek 0b10 Sestupná hrana na pinu INTn generuje požadavek 0b11 Vzestupná hrana na pinu INTn generuje požadavek Přerušení od čítače/časovače Mikrokontrolér ATmega16 nabízí poměrně širokou škálu nastavení a módů dostupných pro čítače/časovače integrované na čipu. V této laboratorní úloze se budeme zabývat
21 20 Mikroprocesorová technika pouze základním čítačem/časovačem 0 (jedná se o 8bitový čítač/časovač) a pouze jeho základním použitím. Čítač/časovač můžeme použít bud ve spojení s externím hodinovým signálem, připojeným na pin označený T0 (PB0), nebo s hodinovým signálem mikrokontroléru. Pro větší variabilitu lze nastavit předděličku pro hodinový signál mikrokontroléru a tím zpomalit čítání. Hodnotu předděličky i přepínání zdroje hodin lze nastavit v registru TCCR0 (Timer/Counter Control Register), jehož složení lze nalézt v [5]. Pro nás jsou zajímavé tři bity pro nastavení předděličky (viz. tabulka 3.3). Tabulka 3.3: Nastavení předděličky čítače/časovače 0 (TCCR0) CS02:CS00 Popis 0b000 Hodinový signál odpojen, tj. čítač/časovač 0 nepracuje 0b001 f CP U 0b010 f CP U /8 0b011 f CP U /64 0b100 f CP U /256 0b101 f CP U / b110 Externí zdroj řídicího signálu, reakce na sestupnou hranu 0b111 Externí zdroj řídicího signálu, reakce na náběžnou hranu S těmito znalostmi můžeme nechat běžet čítač a pomocí přerušení, které se automaticky generuje při přetečení tohoto čítače, odměřovat daný čas. V samotném programu pak funguje toto přerušení jako nejmenší časová jednotka a programově lze na něj navázat další čítač (např. zvolíme předděličku tak, aby celý cyklus čítače trval 10ms a programem pak ošetříme počítání do 100 a dosáhnout tak doby 1s). Stejně jako externí přerušení, má i přerušení od čítače/časovače vlastní registr maskování TIMSK (Timer/Counter Interrupt Mask Register). Pro nás je zajímavý pouze bit TOIE0, který povoluje přerušení od čítače/časovače Pokyny k zadání Bod 1. V datasheetu k mikrokontroléru ATmega16 [5] vyhledejte kapitolu týkající se přerušení (anglicky: Interrupts), případně externího přerušení (External Interrupts). K nastavení externího přerušení je nutné naplnit dva řídicí registry, konkrétně GICR a MCUCR. V datasheetu si vyhledejte význam jednotlivých bitů těchto registrů a připravte si bitová slova, kterými naplníte tyto registry. Vyučující vám zadá událost, která bude přerušení spouštět (náběžná hrana, sestupná,...). Využijte externí přerušení INT0 generované tlačítkem na pinu PD2. Bod 2. Ve vývojovém prostředí AVR Studio vytvořte nový projekt a v JSA naprogramujte aplikaci 8bitového binárního čítače, jehož stav zobrazujte pomocí LED diod. Změnu stavu čítače realizujte pomocí tlačítka PD2, které bude spouštět externí přerušení INT0. Využijte nastavení registrů GICR a MCUCR z předešlého bodu. Jedná se o I/O registry,
22 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 21 proto využijte kombinaci instrukcí ldi a out pro jejich naplnění. Nezapomeňte definovat zásobník a povolit globální přerušení. Stisk mechanického tlačítka ošetřete krátkým zpožděním. Bod 3. Ze znalosti frekvence hodinového signálu f CP U (u STK500 je vybrán interní oscilátor s frekvencí f CP U =1MHz) vypočtěte dobu za kterou dojde k přetečení 8bitového čítače/časovače. Výpočet proved te pro všechny hodnoty předděličky. Podobně jako v bodě 1, vyhledejte v datasheetu k mikrokontroléru ATmega16 [5] kapitolu zabývající se 8bitovým čítačem/časovačem 0 (anglicky: 8-bit Timer/Counter0). K nastavení čítače/časovače 0 je opět nutné naplnit dva řídicí registry, konkrétně TCCR0 a TIMSK. V datasheetu si vyhledejte význam jednotlivých bitů těchto registrů a připravte si bitová slova, kterými naplníte tyto registry. Hodnotu předděličky si zvolte. Bod 4. Ve vývojovém prostředí AVR Studio vytvořte nový projekt a v JSA naprogramujte aplikaci 8bitového binárního čítače, jehož stav zobrazujte pomocí LED diod. Změnu stavu čítače realizujte pomocí přerušení od přetečení čítače/časovače 0. Využijte nastavení registrů TCCR0 a TIMSK z předešlého bodu. Bonus. V JSA vytvořte aplikaci automatického binárního čítače. Využijete zdrojové kódy z bodu 2 a 4. Přerušení od čítače/časovače využijte ke změně stavu binárního čítače. Externím přerušením INT0 resetujte stav čítače a přerušením INT1 (PD3) měňte směr čítání. Je tedy nutné nastavit a povolit generování externího přerušení také od tlačítka z pinu PD Shrnutí Laboratorní úloha umožňuje studentům proniknout do problematiky obsluhy přerušení mikrokontrolérů. Konkrétně byly popsány vektory přerušení a využití externího přerušení od tlačítka. Druhý typ přerušení byl generován interním čítačem při jeho přetečení. Studenti měli možnost vyzkoušet si programování a otestování aplikací v jazyce symbolických adres. 3.5 Kontrolní otázky Otázka 3.1 Kde a jakým způsobem se ukládají návratové adresy při volání obsluhy přerušení? Otázka 3.2 Jak často bude docházek k přetečení 16bitového čítače, je-li frekvence hodinového signálu 16MHz snížena předděličkou o hodnotě 8? Otázka 3.3 Nakreslete vývojový diagram aplikace z bodu 4.
23 22 Mikroprocesorová technika 4 Pulzně šířková modulace PWM Test předchozích znalostí 1. K jakým jednoduchým aplikacím lze využít funkce čítání, časování a komparace interního čítače/časovače? 2. V jakém pamět ovém segmentu a od jaké adresy se nachází všechny řídicí (I/O) registry mikrokontroléru ATmega16? 3. Jaké hodnoty obsahují pravdivostní tabulky logických operátorů AND, OR, EX- OR? Cíle laboratorní úlohy Cílem laboratorní úlohy je procvičit si nastavování řídicích I/O registrů a hledání informací v anglické dokumentaci. Cíle budou využity v aplikaci generování PWM signálu pomocí interního 8bitového čítače/časovače. 4.1 Zadání 1. Procvičte si hledáním informací v anglickém datasheetu k mikrokontroléru ATmega16. Vyhledejte potřebné informace k nastavení čítače/časovače 0 pro generování PWM signálu. 2. V JSA naprogramujte aplikaci generující PWM signál se střídou 1 : V JSA naprogramujte aplikaci generující PWM signál s proměnnou střídou. Vizuálně ověřte správnou funkci aplikace pomocí LED diody. Bonus. Modifikujte aplikaci z předešlého bodu, aby se jas LED diody pozvolna snižoval i zvyšoval. 4.2 Teoretické poznatky Pulzně šířková modulace PWM (Pulse Width Modulation) představuje způsob modulování přenášených dat. Modulovaný signál má konstantní periodu, ale proměnnou střídu obdélníkového signálu. Střída (anglicky: duty cycle) udává poměr mezi dobou trvání vysoké a nízké úrovně. Tento poměr bývá vyjádřen v absolutní (např. 1 : 3), nebo procentuální míře (např. 25%). Ukázka vstupního a modulovaného signálu je zobrazena na obrázku 4.1. Jednoduchý modulátor lze realizovat pomocí komparátoru, kdy na jeden vstup přivedeme datový signál, a na druhý vstup signál nosný. Ten je tvořen pilovým průběhem. Komparátor pak překlápí výstupní úroveň v závislosti na poměru obou vstupních signálů.
24 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 23 Obrázek 4.1: Princip tvorby PWM signálu Ke generování signálu lze velmi snadno využít interní čítač/časovač mikrokontroléru, nastavíme-li ho do funkce komparace. V tomto módu totiž čítač/časovač porovnává hodnotu z datového registru TCNT0 (Timer/Counter Register) s hodnotou uloženou v komparačním registru OCR0 (Output Compare Register). V případě rovnosti obou hodnot je možné měnit úroveň výstupního signálu. Mikrokontrolér ATmega16 umožňuje použití několika módů generování signálu. V této Figure laboratorní 32. Fast úloze PWM se zaměříme Mode, Timing pouze Diagram na mód s označením Fast PWM. Při tomto nastavení čítač načítá hodnoty od 0x00 do 0xff, poté nuluje svůj stav a pokračuje v opakovaném načítání. Neinvertující podoba výstupního signálu je nulována při shodě mezi OCRn Interrupt Flag Set TCNT0 a OCR0 a je nastavena při přetečení čítače TCNT0. Časový diagram popsané funkce je znázorněn na obrázku 4.2. Je zřejmé, že perioda takto generovaného signálu zůstává neměnná, a že závisí pouze na frekvenci hodinového signálu mikrokontroléru a na hodnotě OCRn Update and předděličky. TOVn Interrupt Flag Set TCNTn OCn (COMn1:0 = 2) OCn (COMn1:0 = 3) Period The Obrázek Timer/Counter 4.2: Časový Overflow diagram Flag generování (TOV0) is PWM set each signálu time (obrázek the counter převzat reaches z [5]) MAX. If the interrupt is enabled, the interrupt handler routine can be used for updating the compare value. Aplikaci generování signálu lze obohatit celkem dvěma odlišnými zdroji přerušení. In fast Požadavek PWM mode, na přerušení the compare způsobuje unit jednak allows přetečení generation čítače/časovače of PWM waveforms a také událost on the shody OC0 pin. mezi Setting datovým the COM01:0 a komparačním bits to registrem 2 will produce čítače. a Obě non-inverted tyto přerušení PWM seand povolují an inverted v kon- PWM output can be generated by setting the COM01:0 to 3 (See Table 40 on page 84). The actual OC0 value will only be visible on the port pin if the data direction for the port pin is set as output. The PWM waveform is generated by setting (or clearing) the OC0
25 24 Mikroprocesorová technika trolním registru TIMSK (Timer/Counter Interrupt Mask Register). 4.3 Pokyny k zadání Bod 1. V datasheetu k mikrokontroléru ATmega16 [5] vyhledejte kapitolu zabývající se 8bitovým čítačem/časovačem 0 (anglicky: 8-bit Timer/Counter0), konkrétně části zabývající se generováním PWM signálu pomocí komparace. K nastavení čítače/časovače 0 je nutné naplnit řídicí registr TCCR0 (Timer/Counter Control Register). V datasheetu si vyhledejte význam jednotlivých bitů tohoto registru a připravte si bitové slovo, kterým tento registr naplníte. Pro generování PWM signálu je nutné nastavit Fast mód PWM, neinvertovanou formu výstupního signálu a hodnotu předděličky. Tuto hodnotu si sami zvolte. Bod 2. Ve vývojovém prostředí AVR Studio vytvořte nový projekt a v JSA naprogramujte aplikaci generující PWM signál se střídou 1 : 2. Definujte port B jako výstupní (na pinu PB3 je pomocí čítače/časovače 0 generován PWM signál). Využijte nastavení registru TCCR0 z předešlého bodu. Střída generovaného signálu je adekvátní hodnotě, kterou uložíte do komparačního registru OCR0 (Output Compare Register). Tato úloha nevyžaduje generování přerušení. Vstupně/výstupní registry lze naplnit s využitím posloupnosti instrukcí ldi a out. Zapsání 8bitového slova do registru způsobem ldi r16,0b však může být nepřehledné a často je také zdrojem programátorských chyb. Známkou zkušených programátorů je využití pozic jednotlivých bitů v I/O registru, bitového posuvu <<, příp. logického součtu. Jednotlivé bitové pozice (0,..., 7) jsou označovány konstantami, které lze nalézt v datasheetu u popisu každého registru. Jsou-li např. tři nejnižší bity registru TCCR0 pojmenovány CS02, CS01, CS00 a chceme-li uložit do tohoto registru hodnotu 0b , je možné naprogramovat tuto operaci následujícím způsobem. ldi r16,(1<<cs02) (1<<CS01) out tccr0,r16 Zapsání hodnot do všech I/O registrů stačí provést jen jednou. Nezapomeňte váš program ukončit nekonečnou smyčkou, která tedy nebude obsahovat žádné další instrukce. Pomocí hodnoty vámi zvolené předděličky N a se znalostí frekvence hodinového signálu f CP U vypočtěte periodu generovaného signálu. Výpočet ověřte odečtením hodnoty na osciloskopu (jehož sonda je pochopitelně připojena na pin PB3). Rovněž ověřte požadovanou střídu signálu. Při psaní kódu se vyvarujte bezmyšlenkovitého opisování instrukcí, či částí kódu z předešlých laboratorních cvičení. Snažte se o optimalizaci vašeho programu z hlediska místa v programové paměti. Bod 3. V JSA vytvořte aplikaci, která bude lineárně měnit střídu generovaného PWM signálu. Využijte zdrojového kódu z předešlého bodu. Střídu, tj. komparační hodnotu v registru OCR0 inkrementujte v obsluze přerušení, která se spouští právě při komparaci. Z tabulky 3.1 zjistěte vektor tohoto přerušení. Nezapomeňte definovat zásobník, povolit přerušení pro komparaci a globální přerušení. Zvolíte-li hodnotu předděličky 8 nebo 64 budete schopni pozorovat vliv změny střídy na výstupní LED diodě.
26 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 25 Bonus. Modifikujte zdrojový kód z předešlé úlohy tak, aby se jas LED diody na pinu PB3 pozvolna snižoval a následně zase pozvolna zvyšoval. Z obrázku 4.2 je možné nahlédnout, jakým způsobem toho lze docílit. 4.4 Shrnutí Laboratorní úloha umožňuje studentům hlouběji proniknout do problematiky obsluhy přerušení mikrokontrolérů. Konkrétně bylo generováno přerušení od interního čítače při komparaci. Této funkce lze snadno využít při generování výstupního signálu s proměnnou střídou. 4.5 Kontrolní otázky Otázka 4.1 Jakou hodnotu bude obsahovat komparační registr, má-li být generován obdélníkový signál se střídou 1 : 5? Otázka 4.2 Jaké slovo bude obsahovat řídicí registr TCCR0, má-li být čítač/časovač využit ke komparaci hodnot v normálním módu (non-pwm), při komparaci nulovat výstupní úroveň a inkrementace čítače bude zpomalena 8? Otázka 4.3 Jakou posloupností instrukcí naplníte registr TCCR0 řídicím slovem z předešlé otázky?
27 26 Mikroprocesorová technika 5 Programování v jazyce C, obsluha přerušení Test předchozích znalostí 1. V jakém typu paměti a od jakých adres se nachází vektory přerušení u AVR? 2. Jak probíhá výkon obsluhy libovolného přerušení? 3. Jak lze v jazyce C naprogramovat podmínku a cyklus? Cíle laboratorní úlohy Cílem laboratorní úlohy je osvojení si programování mikrokontrolérů ve vyšším programovacím jazyce C a práce s přerušením. 5.1 Zadání 1. Seznamte se s programováním mikrokontroléru ATmega16 v jazyce C. Vytvořte aplikaci, generující akustický signál pomocí reproduktoru. 2. Seznamte se s programováním obsluhy přerušení v jazyce C. Vytvořte aplikaci binárního čítače řízeného interním čítačem/časovačem. 3. K aplikaci z předešlého bodu přidejte obslužné tlačítko pro nulování stavu čítače. Bonus. Napište program v jazyce C, který pomocí reproduktoru generuje kolísavý tón (sirénu). 5.2 Teoretické poznatky Vyšší programovací jazyky Pro vývoj aplikací se zpravidla používají vyšší programovací jazyky, u mikrokontrolérů je to nejčastěji jazyk C. Oproti zdrojovému kódu v jazyce symbolických adres, je kód v jazyce C přehlednější, snadno přenositelný mezi odlišnými architekturami a vývoj takové aplikace je rychlejší. Na druhou stranu zabírá výsledný kód více místa v paměti a jeho výkon je pomalejší. Tato vlastnost je dána mechanizmem překladu zdrojového kódu z C do JSA a následně do strojového kódu mikrokontroléru. Překladač, tj. program nahrazující úseky programu ve vyšším jazyce posloupnosti instrukcí, zpravidla nepracuje optimálně. Přeložený kód tak obsahuje také instrukce, které nejsou bezprostředně nutné k vykonání příslušné funkce. Přesto výhody vyšších jazyků výrazně převyšují tyto nedostatky. V případě, kdy je vyžadována absolutní kontrola nad funkcí a časováním programu, jsou exponované úseky zdrojového kódu psány v JSA, ostatní části jsou ponechány v jazyce C. Programovací jazyk C byl poprvé standardizován americkou společností ANSI (American National Standards Institute) v 80. letech 20. století. Přestože byl tento standard
28 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 27 následně převzat také mezinárodní společností ISO (International Organization for Standardization), je stále používán název jazyka ANSI C. V současné době je platná verze z března 2000 s označením ISO/IEC 9899:1999 [6]. Krátké přiblížení struktury jazyka C je uvedeno v příloze B. Existuje celá řada překladačů tohoto jazyka do strojového kódu. Navzájem se liší mírou optimalizace výsledného kódu, rychlostí překladu a cenou. Jedním z rozšířených překladačů je GCC (GNU Compiler Collection) [7]. Jak název napovídá, jedná se o soubor překládacích nástrojů projektu GNU, který sdružuje tzv. svobodný software. Doplníme-li překladač GCC knihovnou, popisující strukturu a funkci mikrokontroléru AVR, můžeme tento volný nástroj využít také k vývoji aplikací pro AVR. Pro operační systém Windows je tato kombinace dostupná prostřednictvím open source projektu s názvem WinAVR [8]. Tento nástroj kromě překladače obsahuje také programátor, ladící nástroje a další funkce. Po nainstalování je vše dostupné přímo z vývojového prostředí AVR Studia Obsluha přerušení v jazyce C Význam a použití přerušení v jazyce symbolických adres popisuje laboratorní úloha č. 3. Připomeňme, že obsluhu libovolného přerušení je nutné vložit do pamět ového prostoru, který udává vektor přerušení. Je tedy nutné vědět, na kterou adresu vektor ukazuje. Při využití programovacího jazyka C a překladače GCC je situace mírně jednodušší. Stačí vytvořit obslužnou funkci (resp. makro) s názvem ISR (Interrupt Service Routine), jejiž jediným parametrem je identifikátor zdroje přerušení. Ty jsou pro mikrokontrolér ATmega16 vypsány v tabulce 5.1. Např. pro externí požadavek na přerušení č. 0 je to parametr INT0 vect, apod. Konkrétní adresu vektoru přerušení doplní až překladač. Ten také sám definuje zásobník, či zajišt uje návrat z obsluhy přerušení. Kostra zdrojového kódu, využívající externího přerušení č. 0 je zobrazena na obrázku obrázku 5.1. Tento kód je ekvivalentem zdrojového kódu v jazyce symbolických adres z obrázku 3.1. Specifika knihovny pro programování mikrokontrolérů AVR (avr-libc) je možné nalézt v kapitole B.4 a na internetové stránce [9]. 5.3 Pokyny k zadání Bod 1. Pro naši další práci v laboratorních cvičeních budeme využívat vývojovou desku DEVELOPMENT BOARD ATmega16 vyvinutou na Ústavu radioelektroniky cíleně pro předmět Mikroprocesorová technika. Zapojení desky a její popis je uveden v příloze A. Jádrem desky je mikrokontrolér ATmega16-16AU s externím krystalem o frekvenci 16MHz. K I/O branám procesoru lze propojením příslušných propojek připojovat různé periferní obvody, LED diody, tlačítka, klávesnici, LED displej, LCD znakový displej, reproduktor se zesilovačem, řadiče rozhraní RS-232 a USB, D/A převodník či hodinový obvod s kalendářem, řízený sběrnicí I2C. Práce s periferními zařízeními je podstatou mikroprocesorových aplikací a bude náplní dalších laboratorních úloh. Ve vývojovém prostředí AVR Studio vytvořte nový projekt v jazyce C (v kolonce Project type je nutné vybrat volbu AVR GCC) pro mikrokontrolér ATmega16. Do projektu vložte hlavičkový soubor avr/io.h, který obsahuje popis vybraného mikrokon-
29 28 Mikroprocesorová technika Tabulka 5.1: Přehled vektorů přerušení pro mikrokontrolér ATmega16 Č. Adresa Parametr v C (GCC) Popis přerušení 1 0x0000 Externí reset, připojení napájení 2 0x0002 INT0 vect Externí požadavek na přerušení 0 3 0x0004 INT1 vect Externí požadavek na přerušení 1 4 0x0006 TIMER2 COMP vect Čítač/časovač 2 - shoda komparace 5 0x0008 TIMER2 OVF vect Čítač/časovač 2 - přetečení 6 0x000A TIMER1 CAPT vect Čítač/časovač 1 - zachycení 7 0x000C TIMER1 COMPA vect Čítač/časovač 1 - shoda s komparátorem A 8 0x000E TIMER1 COMPB vect Čítač/časovač 1 - shoda s komparátorem B 9 0x0010 TIMER1 OVF vect Čítač/časovač 1 - přetečení 10 0x0012 TIMER0 OVF vect Čítač/časovač 0 - přetečení 11 0x0014 SPI STC vect Dokončení sériového přenosu SPI 12 0x0016 USART RXC vect USART - kompletní příjem dat 13 0x0018 USART UDRE vect USART - prázdný datový registr 14 0x001A USART TXC vect USART - kompletní vyslání dat 15 0x001C ADC vect ADC - dokončení A/D převodu 16 0x001E EE RDY vect EEPROM - komunikace připravena 17 0x0020 ANA COMP vect Změna výstupu analogového komparátoru 18 0x0022 TWI vect Událost na I2C sběrnici 19 0x0024 INT2 vect Externí požadavek na přerušení x0026 TIMER0 COMP vect Čítač/časovač 0 - shoda komparace 21 0x0028 SPM RDY vect Uložení do programové paměti připraveno #include <avr/io.h> #include <avr/interrupt.h>... // hlavičkový soubor popisující mikrokontrolér // knihovna potřebná pro přerušení int main( void ) {... // tělo hlavní funkce sei() ; // globální povolení přerušení while( 1 ) ; // nekonečná smyčka } ISR( INT0_vect ) {... // program pro obsluhu externího přerušení } Obrázek 5.1: Ukázka zápisu přerušení v programovacím jazyce C
30 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 29 troléru. V tomto souboru jsou názvy všech řídicích registrů definovány velkými písmeny, proto mějte na paměti, že ve zdrojovém kódu musíte používat právě tento zápis. Vašim úkolem bude rozezvučet reproduktor. Reproduktor se zesilovačem je připojen k jednomu z vývodů I/O brány mikrokontroléru (viz. schéma). Reproduktor rozezvučíme generováním periodické změny tohoto pinu nastaveného jako výstupní. Aby byl generovaný tón v akustickém pásmu, je nutno do programu zařadit zpožd ovací smyčku, která zajistí prodloužení doby, kdy je hodnota signálu v úrovni log. 0 nebo log. 1, jak naznačuje obrázek 5.2. Tuto smyčku naprogramujte jako cyklus. Ve zdrojovém kódu si osvojte také syntaxi podmínky a deklarace proměnných. Obrázek 5.2: Princip změny frekvence generovaného akustického signálu Vytvořenou aplikaci naprogramujte do paměti mikrokontroléru pomocí programovacího modulu ISP. Tento modul je na desce DEVELOPMENT BOARD ATmega16 umístěn pod maticovou klávesnicí a jeho správná funkce je indikována zelenou signální SMD diodou. Jedná se o modul AVRISP mkii firmy Atmel [10], proto při navázání komunikace AVR Studia s programátorem je nutné vybrat právě tento produkt, jak naznačuje obrázek 5.3. Obrázek 5.3: Výběr programátoru AVRISP mkii Po ověření správné činnosti programu, smažte obsah paměti Flash mikrokontroléru - na důvod přijdete sami. To lze provést tlačítkem Erase Device, které se nachází v programovacím dialogu. Bod 2. Ve vývojovém prostředí AVR Studio vytvořte nový projekt v jazyce C a naprogramujte 4bitový binární čítač, který bude inkrementovat svou hodnotu každou sekundu a bude řízen přetečením 16bitového čítače/časovače 1. Stav čítače zobrazte pomocí LED diod, které jsou připojeny k horní polovině portu D. Pro správnou funkci stačí nastavit předděličku v řídicím registru TCCR1B (Timer/Counter1 Control Register B) a povolit přerušení při přetečení v registru TIMSK (Timer/Counter Interrupt Mask Register). Struktury registrů naleznete v datasheetu [5]. Vypočtěte doby přetečení čítače/časovače 1 pro všechny hodnoty předděličky v případě, že frekvence hodinového signálu mikrokontroléru
31 30 Mikroprocesorová technika na vývojové desce je f CP U =16MHz. Řídicí registry naplňujte způsobem kombinování bitového posuvu doleva << a logického součtu, ukázaným na přednáškách. Bod 3. K aplikaci z předchozího bodu přidejte obsluhu externího požadavku na přerušení INT0, řízené tlačítkem. Tato obsluha necht resetuje stav binárního čítače. Realizujte jednoduchou metodu ošetření stisku mechanického tlačítka. Jaké tlačítko je zdrojem přerušení INT0 na vývojové desce? Bonus. V jazyce C naprogramujte aplikaci, která generuje sirénu, tj. periodickou změnu dvou tónů. Nakreslete časový průběh generovaného signálu. Pro odměřování potřebných časových intervalů využijte přetečení interních čítačů/časovačů 0 a 1. Jeden z nich nastavte pomocí předděličky pro generování příslušných frekvencí výstupního signálu a druhý pro odměřování doby trvání obou tónů. 5.4 Shrnutí Laboratorní úloha umožňuje studentům proniknout do problematiky programování mikrokontrolérů v jazyce C. Konkrétně byl popsán způsob tvorby obsluhy přerušení od interního čítače/časovače a externí požadavek na přerušení od tlačítka. 5.5 Kontrolní otázky Otázka 5.1 Kolika bitové jsou proměnné typu char a signed int v jazyce C? Otázka 5.2 Nakreslete vývojový diagram aplikace z bonusového příkladu. Otázka 5.3 Jakým způsobem je možné přepsat následující příkazy v jazyce C do jazyka symbolických adres mikrokontroléru AVR? Kolik bytů přeložený program zabírá? DDRD = 0xf0 ; PORTD = 0 ; TCCR1B = (1<<2) (1<<1) ; sei() ;
32 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 31 6 Komunikace s LCD displejem Test předchozích znalostí 1. Jaké řídicí signály v mikroprocesorové technice ovládají operaci čtení/zápis? Uved te dvě základní varianty, které využívají např. firmy Intel a Atmel. 2. Co je to ASCII tabulka a jaké údaje obsahuje? 3. Jakým způsobem lze v jazyce C kombinovat výpis textového řetězce s hodnotou proměnné určitého typu (např. typu char)? Cíle laboratorní úlohy Laboratorní úloha si klade za cíl seznámit studenty s možností připojení LCD displeje k I/O portu mikrokontroléru AVR. Využita bude 4bitová datová komunikace mezi mikrokontrolérem ATmega16 a LCD displejem s rozlišením 16 4 znaků. Programování řídicí aplikace bude probíhat ve vyšším programovacím jazyce C a bude využita knihovna pro LCD displej, jejíž autor je Peter Fleury [11]. 6.1 Zadání 1. Seznamte se s knihovnou pro využití LCD displeje v jazyce C. 2. Realizujte binární čítač, který bude ovládán přetečením 16bitového čítače/časovače a jeho stav zobrazte pomocí LED diod a na LCD displeji. 3. Vytvořte dvojici nových znaků, které bude možné zobrazit na LCD displeji. Bonus. Na LCD displeji realizujte jednoduché menu, ve kterém se budete pohybovat pomocí tlačítek. 6.2 Teoretické poznatky Účinný způsob zobrazení informací v celé řadě řídicích aplikací je pomocí LCD displeje. Tato laboratorní úloha je zaměřena na použití znakových LCD displejů. Většina vyráběných LCD displejů je ovládána pomocí řídicího obvodu HD44780 firmy Hitachi [12], příp. jeho ekvivalentů. Tento řadič je ve své podstatě normou pro komunikaci s LCD displeji. Zpravidla se vyrábějí displeje s rozlišením od 8 1 až po 40 4 znaků s podsvícením (žlutozelené, modré) i bez. Znakový LCD displej obsahuje osm datových pinů pro přenos instrukcí a dat, dále sadu tří řídicích signálů a konečně piny pro napájení, nastavení kontrastu a podsvícení. Přestože datové informace, které LCD displej přijímá/vysílá jsou 8bitové, často se komunikace realizuje pouze čtveřicí datových vodičů (označováno jako 4bitová komunikace). Bytová slova se tak posílají ve dvou krocích: nejprve vyšší nibl, následně nižší. Stejným způsobem je realizována komunikace mikrokontroléru ATmega16
33 32 Mikroprocesorová technika s LCD displejem na vývojové desce, jak naznačuje obrázek 6.1. Je zřejmé, že 4bitovou komunikací byl snížen počet nutných pinů mikrokontroléru z jedenácti na sedm. Konkrétně se jedná o piny PA7 až PA1 na portu A. Obrázek 6.1: Zapojení LCD displeje na vývojové desce ATmega16 Řídicí signál RS slouží k identifikaci, zda jsou mezi mikrokontrolérem a LCD displejem přenášeny instrukce nebo data (RS = 0: instrukce, RS = 1: data). Signál R/W identifikuje, zda dochází k zápisu nebo ke čtení z LCD displeje (R/W = 0: zápis, R/W = 1: čtení). Náběžná hrana signálu E (Enable) označuje okamžik, kdy jsou čtena data z datové a řídicí sběrnice. Proces komunikace mikrokontroléru ve směru k LCD displeji probíhá v několika krocích. Nejprve se nutné nastavit příslušné hodnoty dvou řídicích signálů RS a R/W. Následně se na datové piny D7 : 4 přivede vyšší nibl zapisovaných dat. Příjem těchto dat v LCD displeji je spuštěn kladným pulzem signálu E, který musí trvat několik hodinových cyklů. Následně se na datové piny přivede nižší polovina posílaného bytu a opět se potvrdí krátkým pulsem E. Struktura některých instrukcí pro komunikaci s displejem (resp. s řadičem HD44780) je zobrazena v tabulce 6.1. Formát instrukcí je pevně dán. Jedná se vždy o 1bytové slovo doplněné o řídicí signály RS a R/W. Podrobný soupis všech instrukcí je možné nalézt v literatuře, např. v [13]. Tabulka 6.1: Některé příkazy HD44780 pro komunikaci s LCD displejem RS R/W DB7 : DB0 Popis instrukce Smazání displeje x Návrat kurzoru na pozici (0,0) DCB Zapnutí displeje/kurzoru. D: zapnutí displeje. C: zobrazení kurzoru. B: blikání kurzoru cgram adr Nastavení adresy CGRAM segmentu 1 0 8bitová data Zápis dat do paměti CGRAM nebo DDRAM 1 1 8bitová data Čtení dat z paměti CGRAM nebo DDRAM 6.3 Pokyny k zadání Bod 1. V programu AVR Studio vytvořte nový projekt v jazyce C pro mikrokontrolér ATmega16 a pomocí již hotové knihovny pro komunikaci s LCD displejem naprogramujte
34 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 33 aplikaci, která vypíše textový řetězec na displeji. Knihovnu, jejíž původní autor byl Peter Fleury [11], si stáhněte ze stránek elearningu VUT v Brně. Jedná se o dva soubory s názvy lcd c.c a lcd h.h. Oba zkopírujte do adresáře, kde se nachází zdrojový soubor vaší aplikace. Soubor s koncovkou *.c je taky nutné vložit do vašeho projektu. Postup je snadný. Pravým tlačítkem klikněte na složku obsahující zdrojové soubory (Source Files) v levé části AVR Studia a vložte soubor lcd c.c. Hlavičkový soubor lcd h.h se již vloží do projektu automaticky při překladu. Knihovna pro komunikaci s LCD displejem, kterou jste vložili do projektu, obsahuje veškeré nastavení a funkce pro inicializaci a použití LCD displeje. Soupis pomocných funkcí, které budete potřebovat je uveden v tabulce 6.2. Všechny tyto funkce nevrací žádnou hodnotu. Tabulka 6.2: Soupis některých funkcí knihovny pro LCD Název funkce Popis funkce lcd init() ; Inicializace LCD displeje lcd clrscr() ; Smazání obsahu LCD displeje lcd gotoxy( 0,2 ) ; Přesun kurzoru na pozici (0,2) lcd putc( A ) ; Zobrazení znaku A lcd puts( "BMPT" ) ; Zobrazení řetězce znaků BMPT lcd command( 0b ) ; Zápis 1bytové instrukce do LCD displeje lcd data( 0b ) ; Zápis 1bytových dat do LCD displeje Naprogramujte aplikaci, která využije prvních pět funkcí z tabulky 6.2. Nezapomeňte vložit hlavičkový soubor knihovny LCD displeje. Knihovny, dostupné ve stejném adresáři jako celá aplikace se vkládají příkazem #include "nazev knihovny h". V hlavní funkci aplikace inicializujte LCD displej a následně na různé pozice vypište libovolné znaky a řetězce. Funkci ukončete prázdnou nekonečnou smyčkou. Bod 2. Již vytvořený projekt z předešlého bodu rozšiřte o obsluhu přerušení při přetečení 16bitového čítače/časovače. Toto přerušení bude inkrementovat stav 4bitového binárního čítače (viz. laboratorní úloha č. 5). Kromě zobrazení stavu čítače pomocí LED diod, zobrazte jeho stav také na LCD displeji. Hodnotu proměnné je možné zobrazit pomocí kombinace příkazů sprintf() z knihovny stdio.h a funkce lcd puts(). Konkrétní použití a syntaxi uvedených příkazů vám ukáže vyučující. Bod 3. Dostupná znaková sada LCD displeje je zobrazena v příloze C. Kromě těchto znaků je možné nadefinovat až osm nových znaků. Uživatelsky definované znaky jsou v LCD displeji uloženy od adresy 0x00 do 0x07. Tento úsek paměti se jmenuje CGRAM (Character Generator RAM). Znaky se definují v matici 5 8 bodů. Zobrazený pixel bude v této matici obsahovat hodnotu 1, body které mají být skryty, obsahují 0. Jeden znak je tedy reprezentován osmicí slov (jedno slovo na řádek). Příklad nově definovaného znaku je znázorněn na obrázku 6.2. Do podobné matice si postupně znázorněte dva znaky, které chcete nadefinovat.
35 34 Mikroprocesorová technika data b b b b b b b b00000 Obrázek 6.2: Nově definovaný znak pro LCD displej Nový znak má smysl uložit do paměti CGRAM na samém začátku aplikace. K nastavení této adresy využijte příkaz lcd command(), jehož argument naleznete v tabulce 6.1. Bezprostředně po této instrukci, LCD displej očekává uložení osmi datových slov popisujících samotný znak, tj. osmkrát využijte funkci lcd data(). Pro správnou komunikaci je nutné po uložení nového znaku, zavolat funkci smazání obsahu displeje lcd clrscr(). Zobrazit znak, uložený na adrese 0x00 lze pomocí funkce lcd putc(0x00). Na LCD displeji současně zobrazte vaše dva nové znaky. Bonus. V programu AVR Studio vytvořte nový projekt v jazyce C pro mikrokontrolér ATmega16 a naprogramujte aplikaci pro LCD displej realizující listování v menu. K posunu v menu využijte dvojice tlačítek. Třetím tlačítkem potvrzujte výběr. Menu může např. ovládat stav LED diod na vývojové desce. 6.4 Shrnutí Laboratorní úloha představuje možnost propojení LCD displeje s mikrokontrolérem. Pro vzájemnou komunikaci byla použita 4bitová verze datové komunikace a knihovna funkcí pro LCD displej, dostupná na Internetu [11]. Studenti si osvojili volání těchto pomocných funkcí, společně s možností vytvoření nového znaku, který není obsažen ve znakové sadě LCD displeje. 6.5 Kontrolní otázky Otázka 6.1 Načrtněte časové průběhy všech datových i řídicích signálů při čtení 8bitového slova (např. 0x4c) z LCD displeje do mikrokontroléru. Datová komunikace je nastavena jako 4bitová. Otázka 6.2 V binární podobě zapište matici, reprezentující znak A ve znakové sadě LCD displeje. Otázka 6.3 Jakým způsobem je možné vkládat instrukce mikrokontroléru AVR do zdrojového kódu v jazyce C?
36 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 35 7 Zpracování analogových signálů Test předchozích znalostí 1. Jaká je funkce A/D převodníku a na čem závisí kvantizační chyba? 2. Jak dlouho trvá mikrokontroléru ATmega16 jeden A/D převod? 3. Jak se vypočte napětí na odporovém děliči? 4. Liší se nějak následující způsoby vkládaní knihovny v jazyce C: #include <nazev knihovny.h> a #include "nazev knihovny.h"? Cíle laboratorní úlohy Cílem laboratorní úlohy je použití dvou běžných interních periférií mikrokontrolérů ke zpracování analogového signálu. Jedná se o A/D převodník a analogový komparátor. Studenti si osvojí ovládání těchto periférií pomocí příslušných kontrolních registrů. Dalším cílem úlohy je použití přerušení a zobrazení dat na LCD displeji. 7.1 Zadání 1. S pomocí datasheetu ATmega16 si připravte potřebný obsah řídicích registrů A/D převodníku. 2. Vytvořte aplikaci s jejíž pomocí budete schopni změřit hodnotu napětí na odporu. 3. S pomocí datasheetu si připravte potřebný obsah řídicího registru analogového komparátoru. 4. Naprogramujte aplikaci, která bude porovnávat napětí na tlačítku S4 s vnitřním referenčním napětím V BG. Stav signalizujte pomocí LED diody a pomocí LCD displeje. 7.2 Teoretické poznatky Všechna digitální zařízení jsou schopna zpracovávat data pouze v číslicové podobě. Vzhledem k situaci, že okolní svět je vždy analogový, je potřeba zpracovávaná data pro mikrokontrolér nejprve převést. K běžné výbavě mikrokontrolérů patří interní A/D převodník, či analogový komparátor. Přítomnost těchto periférií minimalizuje počet externích součástek v zapojení řídicí aplikace. Právě těmto perifériím je věnováno následující laboratorní cvičení. Vstupní analogový signál může reprezentovat celou řadu veličin: signál od teplotního, nebo tlakového čidla, úroveň akustického signálu, velikost napětí, apod. A/D převod (podobně jako D/A) je ve své podstatě otázkou proporcí, tj. jak velkou hodnotu má vstupní signál vzhledem k maximálnímu rozsahu převodníku. Například, pokud má vstupní analogový signál hodnotu 2V a maximální rozsah převodníku je 5V, reprezentuje výstupní
37 36 Mikroprocesorová technika digitální hodnota 40% plného rozsahu. Použijeme-li jiné maximální (referenční) napětí, bude výstupní hodnota také odlišná i přes konstantní napětí na analogovém vstupu! Výstupní signál A/D převodníku je reprezentován posloupností bitů. Počet těchto bitů specifikuje počet rozlišitelných úrovní převáděného signálu. U 8bitového A/D převodníku je to 256, u 10bitového úrovní, apod. Obecně je tedy úlohou A/D převodníku převádět napětí vstupního analogového signálu na nbitovou digitální reprezentaci v závislosti na referenčním napětí. Z předchozí úvahy plyne rovnice pro vyjádření závislosti mezi hodnotou vstupního napětí a její digitální reprezentací ADCH : L = V IN V REF (2 n 1), (7.1) kde ADCH : L je digitální hodnota převedeného napětí V IN, V REF představuje maximální hodnotu vstupního napětí a n je počet bitů určených k A/D převodu. Doba A/D převodu u ATmega16 je odlišná pro první převáděnou hodnotu a pro všechny následující vzorky. U prvního převodu je nutné nastavit použité analogové obvody převodníku, takže převedená hodnota je k dispozici za 25 cyklů hodinového signálu pro A/D převodník a za 13 cyklů pro všechny následující vzorky. Za předpokladu, že frekvence hodinového signálu A/D převodníku musí být v rozmezí od 50kHz do 200kHz, je možné dosáhnout rychlosti převodu až 15,3kSPS (Samples Per Second). A/D převodník obsažený v ATmega16 je 10bitový. Druhou možností jak získat digitalizovanou podobu analogového signálu je použití analogového komparátoru. Analogový komparátor je periférie, která porovnává úrovně dvou analogových signálů. U mikrokontroléru ATmega16 je první z nich přiveden na neinvertující vstup komparátoru AIN0, druhý na invertující AIN1. Fyzicky se jedná o piny PB2 a PB3. Je-li splněna podmínka AIN0 > AIN1, pak výstup komparátoru vykazuje log. 1. Mikrokontrolér ATmega16 navíc umožňuje nahradit neinvertující vstup komparátoru AIN0 vnitřním referenčním napětím V BG, jehož typická hodnota je 1,23V. Výstupní hodnotu komparátoru, resp. její změnu, není nutné neustále kontrolovat. Zda došlo k překlopení výstupního stavu komparátoru je výhodnější indikovat pomocí přerušení. To lze generovat při změně komparátoru z log. 1 na log. 0 nebo obráceně, příp. při každé změně stavu komparátoru. Podrobný popis použití A/D převodníku a analogového komparátoru je možné nalézt v datasheetu [5]. 7.3 Pokyny k zadání Bod 1. Požadovanou funkci A/D převodníku (anglicky: Analog to Digital Converter) je nutné nastavit v řídicích registrech ADMUX (ADC Multiplexer Selection Register) a ADCSRA (ADC Control and Status Register A). S pomocí datasheetu [5] si připravte hodnoty obou řídicích registrů. V registru ADMUX nastavte napájecí napětí AVCC jako referenční a jako vstupní kanál převodníku vyberte ADC0. V kontrolním a stavovém registru ADCSRA povolte použití A/D převodníku, zahájení A/D převodu, generaci přerušení po jeho dokončení a rychlost s jakou bude A/D převod probíhat. Nastavte takovou předděličku, aby frekvence odvozeného hodinového signálu byla v rozmezí 50kHz až 200kHz. Vypočtěte frekvenci hodinového signálu pro A/D převodník pro všechny hodnoty předděličky za předpokladu, že frekvence MCU je 16MHz.
38 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 37 Bod 2. Naprogramujte aplikaci pro mikrokontrolér ATmega16 v jazyce C, která změří hodnotu napětí na výstupu odporového děliče. Zapojení děliče je uvedeno na obrázku 7.1. Ke změření úrovně analogového napětí použijte vnitřní 10bitový A/D převodník mikrokontroléru. Převedenou hodnotu zobrazte na LCD displeji. Potřebné knihovny pro komunikaci s LCD displejem si stáhněte ze stránek elearningu VUT v Brně, nebo použijte z laboratorního cvičení č. 6. Po vytvoření nového projektu v programu AVR Studio do něj nezapomeňte vložit zdrojový soubor knihovny lcd c.c (postup je naznačen v uvedeném laboratorním cvičení). Obrázek 7.1: Zapojení odporového děliče v poli konektorů vývojové desky Vzhledem k situaci, že interní A/D převodník je 8kanálový a využívá I/O piny PA7(ADC7) až PA0(ADC0) umístěné na portu A (ke kterému je ovšem připojen také LCD displej, který budeme rovněž používat, viz. schéma zapojení na obrázku A.1), je nutné využít jediný volný kanál A/D převodníku umístěný na pinu PA0(ADC0). Propojení odporového děliče a tohoto vstupu A/D převodníku je realizováno v poli konektorů KA až KD na vývojové desce. Zkontrolujte správné zapojení děliče, ale neměňte jej! A/D převodník budeme využívat v tzv. jednoduchém převodu (režimu), kdy vstupní napětí jednoho kanálu je vztaženo k zemi. A/D převodník umožňuje také převod diferenční hodnoty napětí dvou vstupních signálů včetně řízení zesílení. Tento režim ovšem nebudeme využívat. Napište obsluhu přerušení, která se spustí, bude-li k dispozici 10bitová digitální hodnota převedeného napětí. Zobrazte tuto hodnotu na LCD displeji. Proved te ruční výpočet vstupního napětí ve voltech a vypočtěte hodnotu neznámého odporu R2. Hodnotu rezistoru R1 vám sdělí vyučující. Převedená hodnota je uložena ve dvou datových registrech ADCH:L (ADC Data Register). V jazyce C jsou oba registry sjednocené do jediné 16bitové proměnné ADCW, kterou můžete v aplikaci využít. Bod 3. V datasheetu [5] vyhledejte kapitolu týkající se analogového komparátoru (anglicky: Analog Comparator) a připravte si obsah kontrolního a stavového registru ACSR (Analog Comparator Control and Status Register). Pomocí tohoto registru vyberte referenční napětí (Bandgap reference) místo neinvertujícího vstupu AIN0 a povolte generování přerušení při každé změně výstupu komparátoru. Bod 4. V jazyce C naprogramujte aplikaci pro mikrokontrolér ATmega16, která porovnává napětí na tlačítku S4 s interní referenční hodnotou V BG = 1, 23V. Využijte k tomu analogový komparátor mikrokontroléru ATmega16. K invertujícímu vstupu komparátoru AIN1 je pomocí drátové propojky v poli konektorů připojen výstup tlačítka S4. Výstupní stav komparátoru indikujte pomocí LED diody a pomocí LCD displeje. In-
39 38 Mikroprocesorová technika dikování naprogramujte v rámci obsluhy přerušení, která bude generována při každé změně výstupní hodnoty komparátoru. Hodnota na výstupu komparátoru je rovněž uložena v registru ACSR. K testování příslušného bitu využijte některé z funkcí uvedených v tabulce B Shrnutí Laboratorní úloha umožnila studentům osvojení si práce s perifériemi mikrokontroléru ATmega16 pro zpracování analogového signálu. Jednalo se o 10bitový interní A/D převodník a analogový komparátor. Obě periférie jsou ovládány pomocí kontrolních registrů uložených v datové paměti SRAM v oblasti I/O registrů. Po absolvování laboratorního cvičení by studenti měli být schopni nastavit základní použití obou interních periférií a řídit tak A/D převod nebo komparaci dvou signálů, včetně generování příslušných přerušení a práce s LCD displejem. 7.5 Kontrolní otázky Otázka 7.1 Jaké minimální napět ové kroky je schopen rozlišit A/D převodník mikrokontroléru ATmega16 při použití vnitřního zdroje referenčního napětí nebo externího zdroje 5V? Otázka 7.2 Nakreslete typické převodní charakteristiky komparátoru pro zapojení se zpětnou vazbou a bez ni. Otázka 7.3 Jakou hodnotu obsahuje programový čítač při zahájení obsluhy přerušení od A/D převodníku a analogového komparátoru? Které z těchto přerušení se vykoná jako první za předpokladu, že oba požadavky přišly současně?
40 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 39 8 Sériový přenos dat Test předchozích znalostí 1. Jaký je rozdíl mezi synchronní a asynchronní komunikací? Kam patří UART? 2. Jaká je struktura asynchronního rámce? Co je to paritní bit a jakým způsobem se vypočte? 3. Co to je symbolová rychlost a jak se liší od bitové rychlosti? 4. Jakým způsobem je možné v jazyce C naprogramovat cyklus typu: opakuj dokud i 0? Cíle laboratorní úlohy Cílem této laboratorní úlohy je seznámit studenty s řízením sériové asynchronní komunikace UART. V laboratořích používaný mikrokontrolér ATmega16 sice obsahuje jednotku, která umožňuje také synchronní komunikaci USART, ale zadání je kvůli jednoduchosti a snadnějšímu pochopení problematiky koncipováno pouze na využití UART. 8.1 Zadání 1. Připravte si nastavení řídicích registrů asynchronní jednotky USART mikrokontroléru ATmega16 a složení asynchronního rámce. 2. V jazyce C sestavte program pro mikrokontrolér ATmega16, který bude opakovaně vysílat jeden datový rámec pomocí jednotky USART. 3. V jazyce C sestavte program, který bude přeposílat přijatá data zpět do počítače. Pro ošetření přijetí dat využijte přerušení. Bonus. Doplňte řešení předchozího bodu o kód, který umožní pomocí předem definovaných znaků ovládat LED diody na vývojové desce a zobrazovat přijatá dat na LCD displeji. 8.2 Teoretické poznatky Pod označením UART (Universal Asynchronous Receiver and Transmitter) se skrývá integrovaný hardware realizující sériovou komunikaci s okolím. Pro zachování obecnosti pomineme, že mikrokontrolér ATmega16 je vybaven rozhraním USART (Universal Synchronous Asynchronous serial Receiver and Transmitter) podporující navíc i synchronní komunikaci. U asynchronní komunikace mohou být data po sériové lince vyslána v libovolném okamžiku. Na rozdíl od komunikace synchronní, není u asynchronního způsobu komunikace přenášena informace o synchronizaci. Přijímač takového signálu tedy musí být
41 40 Mikroprocesorová technika schopen data správně interpretovat jiným způsobem. Využívá se předem zvolená struktura datového rámce, pomoci něhož se data posílají. Datový asynchronní rámec obsahuje jeden stop bit (vždy log. 0), dále určitý počet datových bitů v pořadí od LSB k MSB (5 až 9 bitů), volitelný paritní bit pro jednoduché zabezpečení dat (lichá nebo sudá parita) a jeden nebo dva stop bit (log. 1). Znázornění takového rámce je uvedeno na obrázku 8.1. Obrázek 8.1: Struktura asynchronního rámce Aby byl zajištěn korektní příjem dat na přijímací straně je nutné, aby jak vysílač, tak i přijímač používali shodné nastavení rámce. Navíc je nutné, aby symbolová rychlost vysílače byla shodná se symbolovou rychlostí přijímače. Symbolové rychlosti se nastavují v pevně daných hodnotách, přičemž běžné jsou tyto hodnoty: 600, 1 200, 2 400, 4 800, 9 600, , , , ,..., Bd. Konkrétní hodnotu symbolové rychlosti je potřeba přepočítat s ohledem na řídicí frekvenci f CP U a uložit do registru UBRRH:L (USART Baud Rate Registers). Jedná se o registrový pár, jehož hodnota je dána následujícím vztahem UBRRH : L = f CP U 1, (8.1) 16 SR kde SR je požadovaná hodnota symbolové rychlosti v Bd. V případě, že zvolená symbolová rychlost je větší než a frekvence f CP U =16MHz, pak stačí naplnit pouze nižší registr UBRRL. Jednotka UART mikrokontroléru ATmega16 umožňuje pracovat v tzv. normálním režimu (Normal mode) a v režimu s dvojnásobnou přenosovou rychlostí (Double Speed mode). V této laboratorní úloze budeme používat pouze první z režimů. Kromě řídicího registru pro nastavení symbolové rychlosti, obsahuje asynchronní jednotka ještě tři odlišné řídicí registry a jeden datový. Datový registr UDR (USART I/O Data Register) slouží jak pro přijímač, tak i pro vysílač sériových dat. Data, která chceme vyslat, tak stačí pouze zapsat do tohoto registru a UART jednotka již vykoná vše potřebné. Na druhé straně, po dokončení příjmu je datové slovo uloženo právě v registru UDR. Informace o chybě během přenosu, příp. o tom že přenos byl dokončen je možné vyčíst z řídicího registru UCSRA (USART Control and Status Register A). Zajímavý je bit UDRE (USART Data Register Empty), který informuje, zda je datový registr vysílače již prázdný a je tak možné vyslat další data. Zapnutí vysílače a přijímače jednotky USART, povolení generování přerušení při ukončení vysílání a příjmu asynchronního rámce se nastavuje v registru UCSRB (USART Control and Status Register B). Poslední řídicí registr UCSRC (USART Control and Status Register C) obsahuje specifikaci struktury asynchronního rámce, tj. počet datových bitů,
42 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 41 volbu parity i počtet stop bitů. Asynchronní přijímač RxD a vysílač TxD je u mikrokontroléru ATmega16 vyveden na pinech PD0 a PD1. Tyto vodiče jsou přes převodník úrovní a přes konektor na vývojové desce připojeny se sériovým rozhraním osobního počítače. 8.3 Pokyny k zadání Bod 1. Vypočtěte hodnoty UBRRH:L, které specifikují 3 vámi zvolené symbolové rychlosti jednotky USART. Pro jednoduchost uvažujte symbolové rychlosti větší než 2 400Bd. V datasheetu mikrokontroléru ATmega16 [5] vyhledejte popis řídicích registrů jednotky USART a připravte si potřebné hodnoty pro správnou funkci vysílače. V registru UCSRB proto zapněte vysílač USART a v registru UCSRC nastavte vámi zvolenou strukturu asynchronního rámce. Parametry vybírejte podle možností programu Terminal [14] (viz. obrázek 8.2), pomoci něhož budete komunikovat se sériovým portem počítače, resp. s mikrokontrolérem ATmega16. Podle počtu datových bitů v rámci si zvolte datové slovo, které budete chtít vyslat. Nakreslete časový průběh celého asynchronního rámce s těmito daty podle obrázku 8.1. Obrázek 8.2: Aplikace Terminal pro ovládání sériového portu počítače Bod 2. Vytvořte nový projekt v programu AVR Studio a pro mikrokontrolér ATmega16 naprogramujte v jazyce C aplikaci, která bude schopna opakovaně vysílat jeden asynchronní rámec pomocí jednotky USART. Využijte k tomu nastavení řídicích registrů z předchozího bodu. Nastavte požadovanou rychlost komunikace (vyberte si pouze jednu) a vysílač zapněte. V nekonečné smyčce pak vysílejte vámi zvolenou datovou posloupnost. K vyslání stačí zapsat posloupnost do datového registru UDR. Před samotným zápisem, ale čekejte na vyprázdnění vysílacího registru (viz. bit UDRE v registru UCSRA). Tím bude zajištěno, že nedojde ke ztrátě jediného rámce. K testování tohoto bitu využijte některé z funkcí v tabulce B.5.
43 42 Mikroprocesorová technika Na osciloskopu, který je připojen na vysílací pin jednotky USART, tj. na PD1 ověřte tvar celého asynchronního rámce a změřte skutečnou bitovou rychlost. Bod 3. Vytvořte nový projekt v prostředí AVR Studio a pro mikrokontrolér ATmega16 naprogramujte v jazyce C aplikaci, která bude přijímat sériová data z počítače pomocí jednotky USART a následně je bude přeposílat zpět. Příjem znaku realizujte jako obsluhu přerušení přijímače USART. Parametr funkce ISR, který identifikuje zdroj přerušení, naleznete v tabulce 5.1. Nezapomeňte přidat do zdrojového kódu veškeré náležitosti, které s přerušením souvisí. K nastavení řídicích registrů jednotky USART z předchozího bodu jen přidejte povolení přerušení při příjmu a zapnutí přijímače v registru UCSRB. Obsluha přerušení necht načte obsah přijatých dat z datového registru UDR, opětovným zapsáním dat do tohoto registru iniciujete následné vyslání. Při vysílání opět nejprve čekejte na uvolnění datového registru vysílače jako v předešlém bodě. Správnou funkci aplikace ověříte vysíláním dat z programu Terminal. Zde by se měly v přijímací části bezprostředně zobrazovat stejná data, která byla vyslána. Nezapomeňte v programu Terminal nastavit shodný formát asynchronního rámce, symbolovou rychlost a zahájit komunikaci tlačítkem Connect. Při sériové komunikaci neuvažujte žádné řízení toku, tj. Handshaking v programu Terminal nezapínejte. Bonus. Doplňte obsluhu přerušení z předešlého bodu o podmínky, pomocí nichž budete testovat hodnotu přijatého slova. Pomocí číslic 1 až 4 negujte stav LED diod D1 až D4. Do projektu také přidejte knihovnu pro práci s LCD displejem. Zobrazujte na něm přijatá data a v případě příjmu ASCII kódu klávesy Esc, vymažte jeho obsah. 8.4 Shrnutí Laboratorní úloha umožnila studentům otestovat obousměrnou asynchronní komunikaci mezi mikrokontrolérem ATmega16 a PC pomocí jednotky UART. Studenti si osvojili dovednosti potřebné k řízení jednotky UART pomocí kontrolních registrů, k odesílání i příjmu znaků přes UART a pomocí osciloskopu si ověřili strukturu asynchronního rámce. 8.5 Kontrolní otázky Otázka 8.1 Jakým způsobem vyhodnotí asynchronní přijímač vyslaná data 0b1 0100, byl-li zvolen přenos bez zabezpečení, 1 stop bit, ale symbolová rychlost přijímače byla nastavena oproti vysílači jako dvojnásobná? Otázka 8.2 Vypočtěte jakou nejvyšší přenosovou rychlost lze získat s mikrokontrolérem taktovaným na 1MHz. Otázka 8.3 Jaké napět ové úrovně využívá UART a RS-232?
44 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 43 Literatura [1] Váňa, V. Mikrokontroléry Atmel AVR, popis procesorů a instrukční soubor. Ben, technická literatura, Praha, stran. ISBN [2] Atmel Corporation. Oficiální stránka firmy Atmel. [online] [cit. 9. října 2008]. Dostupné na WWW: [3] Atmel Corporation. 8-bit AVR Instruction Set. [online] [cit. 9. října 2008]. Dostupné na WWW: doc0856.pdf [4] Atmel Corporation. STK500. [online] [cit. 9. října 2008]. Dostupné na WWW: [5] Atmel Corporation. 8-bit Microcontroller ATmega16. [online] [cit. 9. října 2008]. Dostupné na WWW: doc2466.pdf [6] Open Standards. International standard ISO/IEC 9899:1999. [online] [cit. 9. října 2008]. Dostupné na WWW: www/docs/n1124.pdf [7] GNU Project. GCC, the GNU Compiler Collection. [online] [cit. 9. října 2008]. Dostupné na WWW: [8] WinAVR. WinAVR home page. [online] [cit. 9. října 2008]. Dostupné na WWW: [9] C library for use with GCC on AVR. AVR Libc Home Page. [online] [cit. 9. října 2008]. Dostupné na WWW: [10] Atmel Corporation. AVRISP mkii In-System Programmer. [online] [cit. 9. října 2008]. Dostupné na WWW: card.asp?tool_id=3808 [11] Fleury, P. LCD Library for HD44870 based LCD s. [online] [cit. 9. října 2008]. Dostupné na WWW: html [12] Hitachi, Ltd. Oficiální stránky firmy Hitachi. [online] [cit. 9. října 2008]. Dostupné na WWW: [13] Doveda Boys. Znakové LCD displeje - procesory PIC. [online] [cit. 9. října 2008]. Dostupné na WWW: [14] HW server. Program Terminal pro komunikaci přes RS232. [online] [cit. 9. října 2008]. Dostupné na WWW:
45 44 Mikroprocesorová technika [15] Gadre, V. Programming and Customizing the AVR Microcontroller. McGraw-Hill, New York (USA), stran. ISBN X.
46 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 45 A Vývojová deska ATmega16 Obrázek A.1: Zapojení vývojové desky Development Board ATmega16
47 46 Mikroprocesorová technika B Základní popis jazyka C Jazyk C obsahuje několik tzv. rezervovaných slov, které nelze použít k jinému účelu, než k jakému byly určeny. Nelze je tedy použít jako názvy proměnných či funkcí. Nejpoužívanější rezervovaná slova jsou následující: for, return, switch, case, if, else, while, char, int, float, unsigned, void. Zdrojový kód v jazyce C se skládá výhradně z tzv. funkcí. Funkce je specifikována svým názvem, který se skládá ze znaků anglické abecedy, číslic a podtržítka. Funkce může obsahovat libovolné parametry (vstupní proměnné), a může také vracet hodnotu libovolného typu. Nemá-li funkce vstupní parametry, příp. výslednou hodnotu užívá se k tomu označení void. Tělo celé funkce je ohraničeno párem složených závorek. Každá aplikace musí obsahovat hlavní funkci s názvem main. Tato funkce vrací hodnotu typu int a zpravidla nemá žádný vstupní parametr. Jestliže příkaz, pomoci něhož funkce vrací hodnotu má název return, vypadá tělo funkce main následujícím způsobem. int main( void ) { ; // tělo hlavní funkce return 0 ; // funkce vrací hodnotu 0 } B.1 Proměnné a operandy Číselné hodnoty lze v jazyce C uchovávat pomocí proměnných. Proměnné se dělí na globální, které se definují vně jakékoliv funkce (zpravidla na začátku zdrojového kódu) a lze je použít v kterémkoliv místě programu a na lokální. Lokální proměnné se definují uvnitř funkce, pro kterou jsou určeny. Pro proměnnou je vyčleněn pamět ový prostor při volání funkce a po návratu z ní je opět uvolněn. Z toho plyne, že lokální proměnnou lze použít pouze uvnitř dané funkce. Každá proměnná je charakterizována svým názvem a vyjadřuje hodnotu podle zvoleného typu. Nejpoužívanější typy proměnných jsou znázorněny v tabulce B.1, společně s počtem bitů a odpovídajícím číselným rozsahem. Při deklaraci proměnné ji lze bezprostředně naplnit zvolenou hodnotou. Následující příklad ukazuje deklaraci proměnné i, která je typu neznaménkového 16bitového celého čísla unsigned int a je rovna hodnotě 10. unsigned int i = 10 ; Výčet aritmetických operací a jejich symbolický zápis v jazyce C obsahuje tabulka B.2. V jazyce C se často používá zkrácený zápis aritmetických operací. Lze ho využít v případě, kdy do proměnné, která figuruje v operaci jako první argument, je posléze uložen také výsledek celé operace. Zápis a += 3 tak např. zkracuje rovnici a = a + 3, nebo d /= a popisuje operaci d = d / a, apod. Za zkrácenou formu zápisu lze také považovat operace inkrementace a dekrementace, kdy např. b++ odpovídá zápisu b += 1, nebo b = b + 1. Tabulka B.3 obsahuje soupis bitových a logických operací v jazyce C. Také u bitových a logických operací lze využít zkráceného zápisu operace. Např. a = 3 představuje výraz a = a 3, tj. logickou součet hodnoty 3 s proměnnou a, nebo zápis ve tvaru d = 2 zkracuje formu zápisu bitového posuvu doleva d = d 2.
48 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 47 Tabulka B.1: Některé typy a rozsahy hodnot proměnných Typ Velikost [b] Rozsah char až 127 unsigned char 8 0 až 255 signed char až 127 int až unsigned int 16 0 až float 32 ±1, až ±3, Tabulka B.2: Aritmetické operace Operace Operand Násobení * Dělení / Dělení modulo % Sčítání + Odečítání - Inkrementace ++ Dekrementace -- Tabulka B.3: Bitové a logické operace Operace Operand Jednotkový doplněk Bitový posuv doleva Bitový posuv doprava Logický součin AND & Logický součet OR Exkluzivní součet EX-OR B.2 Syntaxe podmínky Podmínka slouží k větvení programu, tj. k situaci, kdy je část kódu vykonána pouze v případě pravdivé podmínky. Podmínky lze tvořit pomocí relačních operandů, které jsou uvedeny v tabulce B.4. Syntaxe jednoduché podmínky využívající příkazu if je znázorněna v následující ukázce. V tomto případě se část kódu uzavřená složenými závorkami vykoná pouze v případě, že hodnota proměnné a je rovna konstantě N. if( a == N ) { ; } Druhý častý způsob zápisu podmínky je pomocí kombinace rezervovaných slov switch a case. Využívá se v případě, že proměnná může nabývat několika málo hodnot.
49 48 Mikroprocesorová technika Tabulka B.4: Relační operandy Operace Operand Je roven == Je různý od!= Menší než < Menší nebo roven <= Větší než > Větší nebo roven >= V následujícím případě je testována hodnota proměnné b, která může být rovna 0, 1 nebo libovolnému jinému číslu. switch( b ) { case 0: ; case 1: ; default: ; } B.3 Syntaxe cyklu Jistým druhem podmínky je také každý cyklus. Cyklus se nejčastěji programuje příkazem for, který vykoná daný kód s určitým opakováním. Následující příklad ilustruje cyklus, který proběhne právě N. for( i=0; i<n; i++ ) { ; } Druhým častým způsobem opakovaného výkonu programu je smyčka řízena příkazem while, která opakuje kód, dokud je splněna podmínka. V našem případě je to podmínka dokud hodnota proměnné a je různá od nuly. while( a!=0 ) { ; } Každý kód pro číslicové systémy obsahuje nekonečnou smyčku, která neustále vykonává stejnou posloupnost operací. Zpravidla se jedná o periodické načítání data ze vstupních zařízení, jejich následné zpracování a případné vyslání na výstupní zařízení. Existují dva jednoduché postupy, jak naprogramovat nekonečnou smyčku v jazyce C. Oba jsou uvedeny v následujícím zdrojovém kódu.
50 Fakulta elektrotechniky a komunikačních technologií VUT v Brně 49 while( 1 ) { ; } for( ;; ) { ; } V případě, že aplikace využívá přerušení je běžné, že nekonečná smyčka neobsahuje žádné další příkazy. Veškeré zpracování je pak prováděno jen v rámci obslužných funkcí jednotlivých přerušení. Předešlý zdrojový kód se pak ještě zjednoduší. while( 1 ) ; for( ;; ) ; B.4 Specifika překladače GCC a knihovny avr-libc Překladač jazyka C, který je použit v laboratoři Mikroprocesorové techniky, tj. GCC využívá také speciální knihovnu s názvem avr-libc, která obsahuje některé funkce neobsažené ve standardu ANSI C. Nejčastěji používané funkce jsou uvedeny v tabulce B.5 a lze je využít pro zjednodušení programování mikrokontrolérů AVR. Podrobnější informace lze nalézt v popisu knihovny [9]. Tabulka B.5: Speciální funkce pro mikrokontroléry AVR Operace GCC, avr-libc Obsluha externího přerušení ISR( INT0 vect ) Testování bitu I/O registru if( bit is set( registr,bit )) if( bit is clear( registr,bit )) Cyklus s testováním bitu loop until bit is set( registr,bit ) loop until bit is clear( registr,bit ) Vložení instrukce do jazyka C asm( "sei" ) ;
51 50 Mikroprocesorová technika C Znaková sada LCD displeje Obrázek C.1: Znaková sada LCD displeje (obrázek převzat z [13])
Mikroprocesorová technika a embedded systémy
Mikroprocesorová technika a embedded systémy Počítačová cvičení doc. Ing. Tomáš Frýza, Ph.D. doc. Ing. Jiří Šebesta, Ph.D. Ing. Zbyněk Fedra, Ph.D. Ing. Petr Zelinka ÚSTAV RADIOELEKTRONIKY Fakulta elektrotechniky
Návrh konstrukce odchovny 2. dil
1 Portál pre odborné publikovanie ISSN 1338-0087 Návrh konstrukce odchovny 2. dil Pikner Michal Elektrotechnika 19.01.2011 V minulem dile jsme si popsali návrh konstrukce odchovny. senzamili jsme se s
Mikrokontroléry. Doplňující text pro POS K. D. 2001
Mikrokontroléry Doplňující text pro POS K. D. 2001 Úvod Mikrokontroléry, jinak též označované jako jednočipové mikropočítače, obsahují v jediném pouzdře všechny podstatné části mikropočítače: Řadič a aritmetickou
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE
Vzorový příklad pro práci v prostředí MPLAB Zadání: Vytvořte program, který v intervalu 200ms točí doleva obsah registru reg, a který při stisku tlačítka RB0 nastaví bit 0 v registru reg na hodnotu 1.
Přerušovací systém s prioritním řetězem
Přerušovací systém s prioritním řetězem Doplňující text pro přednášky z POT Úvod Přerušovací systém mikropočítače může být koncipován několika způsoby. Jednou z možností je přerušovací systém s prioritním
8. Laboratoř: Aritmetika a řídicí struktury programu
8. Laboratoř: Aritmetika a řídicí struktury programu Programy v JSA aritmetika, posuvy, využití příznaků Navrhněte a simulujte v AVR studiu prográmky pro 24 bitovou (32 bitovou) aritmetiku: sčítání, odčítání,
Struktura a architektura počítačů (BI-SAP) 7
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 7 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii
ČEMU ROZUMÍ MIKROPROCESOR?
ČEMU ROZUMÍ MIKROPROCESOR? Čemu rozumí mikroprocesor? Číslo DUM v digitálním archivu školy VY_32_INOVACE_10_01_01 Materiál poskytuje pohled na mikroprocesor, jako na číslicový obvod. Seznamuje se základními
Laboratorní cvičení z předmětu Elektrická měření 2. ročník KMT
MĚŘENÍ S LOGICKÝM ANALYZÁTOREM Jména: Jiří Paar, Zdeněk Nepraš Datum: 2. 1. 2008 Pracovní skupina: 4 Úkol: 1. Seznamte se s ovládáním logického analyzátoru M611 2. Dle postupu měření zapojte pracoviště
Princip funkce počítače
Princip funkce počítače Princip funkce počítače prvotní úlohou počítačů bylo zrychlit provádění matematických výpočtů první počítače kopírovaly obvyklý postup manuálního provádění výpočtů pokyny pro zpracování
Pohled do nitra mikroprocesoru Josef Horálek
Pohled do nitra mikroprocesoru Josef Horálek Z čeho vycházíme = Vycházíme z Von Neumannovy architektury = Celý počítač se tak skládá z pěti koncepčních bloků: = Operační paměť = Programový řadič = Aritmeticko-logická
APLIKACE MIKROKONTROLÉRŮ PIC32MX
David Matoušek APLIKACE MIKROKONTROLÉRÙ PIC32MX Praha 2014 David Matoušek Aplikace mikrokontrolérù PIC32MX Recenzent Bohumil Brtník Bez pøedchozího písemného svolení nakladatelství nesmí být kterákoli
Ústav radioelektroniky
Ústav radioelektroniky Vysoké učení technické v Brně Programování mikrokontrolérů Mikroprocesorová technika, přednáška č. 5 Ing. Frýza Tomáš, Ph.D. 23. října 2007 Obsah přednášky Typy adresování Registrové,
Použití programu uscope k simulaci výukového přípravku pro předmět PMP
Použití programu uscope k simulaci výukového přípravku pro předmět PMP Ing. Tomáš Martinec Ph.D. TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií Tento materiál vznikl
První kroky s METEL IEC IDE
První kroky s poskytuje programování v IEC 61131-3 jazycích, podporuje jak grafickou tak textovou podobu. Umožňuje vytvářet, upravovat a ladit IEC 61131-3 (ST, LD, IL, FBD) programy pro řídicí jednotky
Jako pomůcka jsou v pravém dolním rohu vypsány binární kódy čísel od 0 do 15 a binární kódy příkazů, které máme dispozici (obr.21). Obr.
Model procesoru Jedná se o blokové schéma složené z registrů, paměti RAM, programového čítače, instrukčního registru, sčítačky a řídicí jednotky, které jsou propojeny sběrnicemi. Tento model má dva stavy:
Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus
Činnost CPU Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus Hodinový cyklus CPU je synchronní obvod nutné hodiny (f CLK ) Instrukční cyklus IF = doba potřebná
MSP 430F1611. Jiří Kašpar. Charakteristika
MSP 430F1611 Charakteristika Mikroprocesor MSP430F1611 je 16 bitový, RISC struktura s von-neumannovou architekturou. Na mikroprocesor má neuvěřitelně velkou RAM paměť 10KB, 48KB + 256B FLASH paměť. Takže
MIDAM Simulátor Verze 1.5
MIDAM Simulátor Verze 1.5 Simuluje základní komunikační funkce modulů Midam 100, Midam 200, Midam 300, Midam 400, Midam 401, Midam 410, Midam 411, Midam 500, Midam 600. Umožňuje změny konfigurace, načítání
ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2013 1.3 2/14
ZÁKLADY PROGRAMOVÁNÍ Mgr. Vladislav BEDNÁŘ 2013 1.3 2/14 Co je vhodné vědět, než si vybereme programovací jazyk a začneme programovat roboty. 1 / 14 0:40 1.3. Vliv hardware počítače na programování Vliv
Mikropočítačová vstupně/výstupní jednotka pro řízení tepelných modelů. Zdeněk Oborný
Mikropočítačová vstupně/výstupní jednotka pro řízení tepelných modelů Zdeněk Oborný Freescale 2013 1. Obecné vlastnosti Cílem bylo vytvořit zařízení, které by sloužilo jako modernizovaná náhrada stávající
Rozšiřující desce s dalšími paralelními porty Rozšiřující desce s motorkem Elektrickém zapojení Principu činnosti Způsobu programování
8. Rozšiřující deska Evb_IO a Evb_Motor Čas ke studiu: 2-3 hodiny Cíl Po prostudování tohoto odstavce budete něco vědět o Výklad Rozšiřující desce s dalšími paralelními porty Rozšiřující desce s motorkem
PVKpro vývojový kit s programátorem pro mikrokontrolér PIC16F84 Připojení k PC: paralelní port Uživatelská příručka
PVKpro vývojový kit s programátorem pro mikrokontrolér PIC16F84 Připojení k PC: paralelní port Uživatelská příručka ASIX s.r.o., Staropramenná 4, 150 00 Praha 5 - Smíchov, Tel.: 257 312 378, fax: 257 329
1. MIKROPROCESOR ATMEGA A/D PŘEVODNÍK MÓDY PŘEVODNÍKU Single Conversion Mode Auto Triggering Start...
1. MIKROPROCESOR ATMEGA 8535... 2 1.1 A/D PŘEVODNÍK... 2 1.2 MÓDY PŘEVODNÍKU... 3 1.2.1 Single Conversion Mode... 3 1.2.2 Auto Triggering Start... 4 1.2.3 Free Running Mode... 4 1.3 VÝBĚR MĚŘENÉHO KANÁLU...
Ústav radioelektroniky
Ústav radioelektroniky Vysoké učení technické v Brně Programování mikrokontrolérů Mikroprocesorová technika, přednáška č. 4 Ing. Frýza Tomáš, Ph.D. 14. října 2008 Obsah přednášky Typy adresování Registrové,
Principy komunikace s adaptéry periferních zařízení (PZ)
Principy komunikace s adaptéry periferních zařízení (PZ) Několik možností kategorizace principů komunikace s externími adaptéry, např.: 1. Podle způsobu adresace registrů, které jsou součástí adaptérů.
PŘÍLOHY. PRESTO USB programátor
PŘÍLOHY PRESTO USB programátor 1. Příručka PRESTO USB programátor Popis indikátorů a ovládacích prvků Zelená LED (ON-LINE) - PRESTO úspěšně komunikuje s PC Žlutá LED (ACTIVE) - právě se komunikuje s uživatelskou
MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Speciální obvody a jejich programování v C 2. díl
MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY Speciální obvody a jejich programování v C 2. díl České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek, 2017 Compare Unit jiné řešení Následující
Přednáška - Čítače. 2013, kat. měření, ČVUT - FEL, Praha J. Fischer. A3B38MMP, 2013, J.Fischer, ČVUT - FEL, kat. měření 1
Přednáška - Čítače 2013, kat. měření, ČVUT - FEL, Praha J. Fischer A3B38MMP, 2013, J.Fischer, ČVUT - FEL, kat. měření 1 Náplň přednášky Čítače v MCU forma, principy činnosti A3B38MMP, 2013, J.Fischer,
MIDAM Verze 1.1. Hlavní okno :
MIDAM Verze 1.1 Podporuje moduly Midam 100, Midam 200, Midam 300, Midam 400, Midam 401, Midam 410, Midam 411, Midam 500, Midam 600, Ghc 2x. Umožňuje nastavení parametrů, sledování výstupních nebo vstupních
Profilová část maturitní zkoušky 2015/2016
Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2015/2016 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 26-41-M/01 Elektrotechnika Zaměření: technika
Ústav radioelektroniky. Mikroprocesorová technika a embedded systémy. doc. Ing. Tomáš Frýza, Ph.D.
Ústav radioelektroniky Vysoké učení technické v Brně Programování mikrokontrolérů Mikroprocesorová technika a embedded systémy Přednáška 3 doc. Ing. Tomáš Frýza, Ph.D. říjen 2012 Obsah přednášky Typy adresování
IMTEE Přednáška č. 8. interrupt vector table CPU při vzniku přerušení skáče na pevně dané místo v paměti (obvykle začátek CODE seg.
Přerušení Důvod obsluha asynchronních událostí (CPU mnohem rychlejší než pomalé periferie má klávesnice nějaké znaky? ) Zdroje přerušení interrupt source o HW periferie (UART, Disk, časovače apod.) o SW
Zadání semestrálního projektu PAM
P ř evaděč RS485 Navrhněte s procesorem AT89C2051 převaděč komunikační sběrnice RS485 s automatickým obracením směru převodníku po přenosu bytu. Převaděč vybavte manuálním nastavením přenosové rychlosti
Funkce jednotlivých tlačítek se mohou měnit podle toho, na jaké úrovni menu se právě nacházíte; vysvětlení viz následující tabulka.
5. Přehled použití Snímač a vysílač průtoku FlowX3 F9.02 je jako všechny ostatní přístroje řady X3 vybaven digitálním displejem a klávesnicí s pěti tlačítky, které slouží k nastavení, kalibraci a ovládání
Úvod do mobilní robotiky AIL028
md at robotika.cz http://robotika.cz/guide/umor07/cs 11. října 2007 1 Definice Historie Charakteristiky 2 MCU (microcontroller unit) ATmega8 Programování Blikání LEDkou 3 Kdo s kým Seriový port (UART)
Ing. Michal Martin. Spojení PLC CLICK s NA-9289
Propojení PLC CLICK s NA-9289 Autor: Ing. Michal Martin Copyright TECON spol. s r. o., Vrchlabí, Česká republika Tato publikace prošla jen částečnou jazykovou korekturou. Tato publikace vznikla na základě
Jízda po čáře pro reklamní robot
Jízda po čáře pro reklamní robot Předmět: BROB Vypracoval: Michal Bílek ID:125369 Datum: 25.4.2012 Zadání: Implementujte modul do podvozku robotu, který umožňuje jízdu robotu po předem definované trase.
Nejčastěji pokládané dotazy
Nejčastěji pokládané dotazy www.snailinstruments.com www.hobbyrobot.cz Co je kontrolér PICAXE? Kontrolér PICAXE je mikroprocesor z rodiny PIC, vyráběné firmou Microchip, který byl při výrobě naprogramován
Manuál přípravku FPGA University Board (FUB)
Manuál přípravku FPGA University Board (FUB) Rozmístění prvků na přípravku Obr. 1: Rozmístění prvků na přípravku Na obrázku (Obr. 1) je osazený přípravek s FPGA obvodem Altera Cyclone III EP3C5E144C8 a
Vysoké učení technické v Brně Fakulta informačních technologií ITP Technika personálních počítačů Služby ROM BIOS a BootROM
Vysoké učení technické v Brně Fakulta informačních technologií ITP Technika personálních počítačů Služby ROM BIOS a BootROM Úloha č.: 5. Zadání: 1. Seznamte se s konstrukcí cvičné zásuvné adaptérové desky
Profilová část maturitní zkoušky 2014/2015
Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2014/2015 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 26-41-M/01 Elektrotechnika Zaměření: technika
Klimatizace. Třída: 4.C. Střední Průmyslová Škola Elektrotechnická Havířov Protokol do MIT. Skupina: 3. Zpráva číslo: 3
Střední Průmyslová Škola Elektrotechnická Havířov Protokol do MIT Třída: 4.C Skupina: 3 Klimatizace Zpráva číslo: 3 Dne: 08.01.2007 Soupis použitých přístrojů: přípravek s μc 8051 přípravek s LCD přípravek
SEKVENČNÍ LOGICKÉ OBVODY
Sekvenční logický obvod je elektronický obvod složený z logických členů. Sekvenční obvod se skládá ze dvou částí kombinační a paměťové. Abychom mohli určit hodnotu výstupní proměnné, je potřeba u sekvenčních
Komunikace modulu s procesorem SPI protokol
Komunikace modulu s procesorem SPI protokol Propojení dvouřádkového LCD zobrazovače se sběrnicí SPI k procesotru (dále již jen MCU microcontroller unit) a rozložení pinů na HSES LCD modulu. Komunikace
Řízení IO přenosů DMA řadičem
Řízení IO přenosů DMA řadičem Doplňující text pro POT K. D. 2001 DMA řadič Při přímém řízení IO operací procesorem i při použití přerušovacího systému je rychlost přenosu dat mezi IO řadičem a pamětí limitována
Použití programovatelného čítače 8253
Použití programovatelného čítače 8253 Zadání 1) Připojte obvod programovatelný čítač- časovač 8253 k mikropočítači 89C52. Pro čtení bude obvod mapován do prostoru vnější programové (CODE) i datové (XDATA)
EduKit84. Výuková deska s programátorem pro mikrokontroléry PIC16F84A firmy Microchip. Uživatelská příručka
EduKit84 Výuková deska s programátorem pro mikrokontroléry PIC16F84A firmy Microchip Uživatelská příručka OBSAH 1. EduKit84 3 2. Popis zařízení 3 3. Provozní režimy 3 4. Mikrokontrolér PIC16F84A 4 5. Tabulka
Praktické úlohy- 2.oblast zaměření
Praktické úlohy- 2.oblast zaměření Realizace praktických úloh zaměřených na dovednosti v oblastech: Měření specializovanými přístroji, jejich obsluha a parametrizace; Diagnostika a specifikace závad, měření
5. A/Č převodník s postupnou aproximací
5. A/Č převodník s postupnou aproximací Otázky k úloze domácí příprava a) Máte sebou USB flash-disc? b) Z jakých obvodů se v principu skládá převodník s postupnou aproximací? c) Proč je v zapojení použit
Cvičení 2. Obsah a cíle cvičení. Obsah. A5MPL Programování mikropočítačů Digitální vstupy a výstupy - LED a tlačítka.
Cvičení 2 Digitální vstupy a výstupy - LED a tlačítka Obsah a cíle cvičení Toto cvičení: 1. Vysvětlí, co jsou digitální vstupy a výstupy mikropočítače. 2. Vysvětlí, jak k mikropočítači připojit LED a tlačítka
Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC
Informační systémy 2 Obsah: Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC ROM RAM Paměti typu CACHE IS2-4 1 Dnešní info: Informační systémy 2 03 Informační systémy
1 Digitální zdroje. 1.1 Převod digitálních úrovní na analogový signál. Cílem cvičení je osvojení práce s digitálními zdroji signálu.
1 Digitální zdroje Cílem cvičení je osvojení práce s digitálními zdroji signálu. Cíle cvičení Převod digitálních úrovní na analogový signál Digitální zdroj signálu a BCD dekodér Čítač impulsů Dělička frekvence
PCKIT LPT MODUL SBĚRNICE IOBUS PRO PC LPT. Příručka uživatele. Střešovická 49, Praha 6, s o f c o s o f c o n.
PCKIT LPT MODUL SBĚRNICE IOBUS PRO PC LPT Příručka uživatele Střešovická 49, 162 00 Praha 6, e-mail: s o f c o n @ s o f c o n. c z tel./fax : (02) 20 61 03 48 / (02) 20 18 04 54, http :// w w w. s o f
Činnost počítače po zapnutí
Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/03.0009 Činnost počítače po zapnutí Paměť RWM(Read Write Memory - paměť pro čtení a zápis, označovaná také jako RAM)
ALGORITMIZACE A PROGRAMOVÁNÍ
Metodický list č. 1 Algoritmus a jeho implementace počítačovým programem Základním cílem tohoto tematického celku je vysvětlení pojmů algoritmus a programová implementace algoritmu. Dále je cílem seznámení
PK Design. MB-ATmega16/32 v2.0. Uživatelský manuál. Základová deska modulárního vývojového systému MVS. Verze dokumentu 1.0 (21.12.
MB-ATmega16/32 v2.0 Základová deska modulárního vývojového systému MVS Uživatelský manuál Verze dokumentu 1.0 (21.12.2004) Obsah 1 Upozornění... 3 2 Úvod... 4 2.1 Vlastnosti základové desky...4 2.2 Vlastnosti
Připojení přístroje A4101 k aplikaci DDS2000
" Uživatelský manuál Připojení přístroje A4101 k aplikaci DDS2000 Aplikace :! Přenos a archivace dat naměřených přístrojem A4101! Přenos pochůzky vytvořené v aplikaci DDS2000 do přístroje A4101 Vlastnosti
FREESCALE TECHNOLOGY APPLICATION
FREESCALE TECHNOLOGY APPLICATION 2013-2014 3D LED Cube Jméno: Libor Odstrčil Ročník: 4. Obor: IT Univerzita Tomáše Bati ve Zlíně, Fakulta aplikované informatiky 2 1 Konstrukce Obr. 1.: Výsledná LED kostka.
Metody připojování periferií BI-MPP Přednáška 2
Metody připojování periferií BI-MPP Přednáška 2 Ing. Miroslav Skrbek, Ph.D. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze Miroslav Skrbek 2010,2011
Tlačítka. Konektor programování
Programovatelné logické pole Programovatelné logické pole jsou široce využívanou a efektivní cestou pro realizaci rozsáhlých kombinačních a sekvenčních logických obvodů. Jejich hlavní výhodou je vysoký
Strojový kód. Instrukce počítače
Strojový kód Strojový kód (Machine code) je program vyjádřený v počítači jako posloupnost instrukcí procesoru (posloupnost bajtů, resp. bitů). Z hlediska uživatele je strojový kód nesrozumitelný, z hlediska
Programovatelné relé Easy (Moeller), Logo (Siemens)
Programovatelné Easy (Moeller), Logo (Siemens) Základní způsob programování LOGO Programovaní pomocí P - propojení P s automatem sériovou komunikační linkou - program vytvářen v tzv ovém schématu /ladder
Software pro vzdálenou laboratoř
Software pro vzdálenou laboratoř Autor: Vladimír Hamada, Petr Sadovský Typ: Software Rok: 2012 Samostatnou část vzdálených laboratoří tvoří programové vybavené, které je oživuje HW část vzdáleného experimentu
Zadání semestrálního projektu
Č tyř místný č ítač Navrhněte s procesorem AT89C2051 a kaskádou čítačů mající na vstupu hradlovací obvod AND čtyřmístný čítač do 20MHz. Veškerou řídící a generující činnost, včetně automatického přepínání
setup() { I = 0; } loop() { I = I + 1; }
PŘERUŠENÍ Procesor pracuje tak, že načítá z paměti jednotlivé instrukce a ty následně zpracovává. Instrukce se zpracovávají v pořadí v jakém jsou uloženy v paměti. Vezměme jednoduchý program, který v nekonečném
NÁVOD K OBSLUZE konfigurační SW CS-484
NÁVOD K OBSLUZE konfigurační SW CS-484 OBSAH 1. Popis 2. Propojení modulu s PC 3. Instalace a spuštění programu CS-484 4. POPIS JEDNOTLIVÝCH ZÁLOŽEK 4.1. Připojení 4.1.1 Připojení modulu 4.2. Nastavení
Architekura mikroprocesoru AVR ATMega ( Pokročilé architektury počítačů )
Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Architekura mikroprocesoru AVR ATMega ( Pokročilé architektury počítačů ) Führer Ondřej, FUH002 1. AVR procesory obecně
VISUAL BASIC. Přehled témat
VISUAL BASIC Přehled témat 1 ÚVOD DO PROGRAMOVÁNÍ Co je to program? Kuchařský předpis, scénář k filmu,... Program posloupnost instrukcí Běh programu: postupné plnění instrukcí zpracovávání vstupních dat
FVZ K13138-TACR-V004-G-TRIGGER_BOX
TriggerBox Souhrn hlavních funkcí Synchronizace přes Ethernetový protokol IEEE 1588 v2 PTP Automatické určení možnosti, zda SyncCore zastává roli PTP master nebo PTP slave dle mechanizmů standardu PTP
Programování PICAXE18M2 v Assembleru
Nastavení programming editoru PICAXE PROGRAMMING EDITOR 6 Programování PICAXE18M2 v Assembleru Nastavit PICAXE Type PICAXE 18M2(WJEC-ASSEMBLER, stejně tak nastavit Simulation Pokud tam není, otevřeme přes
Stručný postup k použití programu PL7 Junior (programování TSX Micro)
Stručný postup k použití programu PL7 Junior (programování TSX Micro) 1. Připojení PLC TSX Micro k počítači Kabel, trvale zapojený ke konektoru TER PLC, je nutné zapojit na sériový port PC. 2. Spuštění
Programovatelný kanálový procesor ref. 5179
Programovatelný kanálový procesor Programovatelný kanálový procesor je určen ke zpracování digitálního (COFDM, QAM) nebo analogového TV signálu. Procesor může být naprogramován jako kanálový konvertor
Arduino Martin Friedl
Arduino Martin Friedl 1 Obsah Materiály Vlastnosti Programování Aplikace 2 Co je to Arduino? Arduino je otevřená elektronická platforma, založená na uživatelsky jednoduchém hardware a software. Arduino
Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC
Informatika 2 Technické prostředky počítačové techniky - 2 Přednáší: doc. Ing. Jan Skrbek, Dr. - KIN Přednášky: středa 14 20 15 55 Spojení: e-mail: jan.skrbek@tul.cz 16 10 17 45 tel.: 48 535 2442 Obsah:
Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT
Škola Číslo projektu Číslo a název šablony klíčové aktivity Tematická oblast Název sady Téma Anotace Autor Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram CZ.1.07/1.5.00/34.0556
uz80 Embedded Board ver. 1.0 uz80 Vestavná Řídící Deska ver. 1.0
uz80 Embedded Board ver. 1.0 uz80 Vestavná Řídící Deska ver. 1.0 Jednodeskový mikroprocesorový řídící systém s CPU Zilog Z84C15 nebo Toshiba TMPZ84C015: Deska obsahuje: 1. CPU Z84C15 (Zilog) nebo TMPZ84C015
Programátor AVRProg USB v3 MK II Eco Manuál
Programátor AVRProg USB v3 MK II Eco Manuál Pozor! Programátor je kompatibilní s prostředími BASCOM a AVR DUDE. Pokud chcete použít tento programátor s AVR Studio, musíte přepnout jumper číslo 2. 1. Programování
Návrh konstrukce odchovny 3. dil
1 Portál pre odborné publikovanie ISSN 1338-0087 Návrh konstrukce odchovny 3. dil Pikner Michal Elektrotechnika 16.02.2011 V minulém díle jsme se seznámily s elektronickým zapojením. Popsali jsme si principy
Struktura a architektura počítačů (BI-SAP) 9
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 9 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii
Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT
Škola Číslo projektu Číslo a název šablony klíčové aktivity Tematická oblast Název sady Téma Anotace Autor Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram CZ.1.07/1.5.00/34.0556
ČÁST 1. Základy 32bitového programování ve Windows
Obsah Úvod 13 ČÁST 1 Základy 32bitového programování ve Windows Kapitola 1 Nástroje pro programování ve Windows 19 První program v Assembleru a jeho kompilace 19 Objektové soubory 23 Direktiva INVOKE 25
Programování mikropočítačů platforma Arduino
Programování mikropočítačů platforma Arduino Obsah Arduino... 1 Digitální výstupy a vstupy... 2 Připojení LED k Arduinu... 2 Co je to LED?... 3 Výpočet hodnoty předřadného rezistoru pro LED... 3 Barevné
Microchip. PICmicro Microcontrollers
Microchip PICmicro Microcontrollers 8-bit 16-bit dspic Digital Signal Controllers Analog & Interface Products Serial EEPROMS Battery Management Radio Frequency Device KEELOQ Authentication Products Návrh
Základní uspořádání pamětí MCU
Základní uspořádání pamětí MCU Harwardská architektura. Oddělený adresní prostor kódové a datové. Používané u malých MCU a signálových procesorů. Von Neumannova architektura (Princetonská). Kódová i jsou
Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT
Škola Číslo projektu Číslo a název šablony klíčové aktivity Tematická oblast Název sady Téma Anotace Autor Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram CZ.1.07/1.5.00/34.0556
ATAVRDRAGON-návod k použití
ATAVRDRAGON-návod k použití Firma ATMEL představila skutečně levný, a tím pádem všem dostupný, ladící a vývojový prostředek pro práci s mikrokontroléry řady ATtiny a ATmega s názvem AVR Dragon. Dle sdělení
Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y Rovnicí y = x 1. Přiřazení signálů:
Vzorový příklad. Zadání: Na přípravku realizujte kombinační obvod představující funkci logického součinu dvou vstupů. Mající následující pravdivostní tabulku. x 1 x 0 y 0 0 0 0 1 0 1 0 0 1 1 1 Rovnicí
Konfigurátor Duo. Manuál pro konfiguraci systémů DUO Standard / Basic. Obsah + vybraná nastavení: - 1 -
Konfigurátor Duo SW konfigurátor DuoSB Manuál pro konfiguraci systémů DUO Standard / Basic Obr. 1: Konfigurátor DUO Obsah + vybraná nastavení: Připojení k systému a spuštění programu DuoSB Konfigurace
18A - PRINCIPY ČÍSLICOVÝCH MĚŘICÍCH PŘÍSTROJŮ Voltmetry, A/D převodníky - principy, vlastnosti, Kmitoměry, čítače, fázoměry, Q- metry
18A - PRINCIPY ČÍSLICOVÝCH MĚŘICÍCH PŘÍSTROJŮ Voltmetry, A/D převodníky - principy, vlastnosti, Kmitoměry, čítače, fázoměry, Q- metry Digitální voltmetry Základním obvodem digitálních voltmetrů je A/D
Uživatelský manuál. Aplikace A4300-Loader
Uživatelský manuál Aplikace A4300-Loader Aplikace: Nahrání firmware do přístroje A4300 Diagnostické funkce Vlastnosti: Komunikace přes rozhraní RS232 Ref: 09032007 KM Obsah Připojení přístroje A4300 k
Aplikace. Hlásič SMS
Aplikace Hlásič SMS Strana 2 z 12 Obsah OBSAH...3 SMS HLÁSIČ...4 POPIS KOMUNIKAČNÍHO MODULU CGU 03...4 Obecný popis...4 Indikace stavu modulu...5 Hardwarová konfigurace...6 Nastavení konfigurace SMS hlásiče...7
Systém řízení sběrnice
Systém řízení sběrnice Sběrnice je komunikační cesta, která spojuje dvě či více zařízení. V určitý okamžik je možné aby pouze jedno z připojených zařízení vložilo na sběrnici data. Vložená data pak mohou
Vzorový příklad. Postup v prostředí ISE. Zadání: x 1 x 0 y. Rovnicí y = x 1. x 0. Přiřazení signálů: ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE
Vzorový příklad. Zadání: Na přípravku realizujte kombinační obvod představující funkci logického součinu dvou vstupů. Mající následující pravdivostní tabulku. x 1 x 0 y 0 0 0 0 1 0 1 0 0 1 1 1 Rovnicí
Architektury počítačů a procesorů
Kapitola 3 Architektury počítačů a procesorů 3.1 Von Neumannova (a harvardská) architektura Von Neumann 1. počítač se skládá z funkčních jednotek - paměť, řadič, aritmetická jednotka, vstupní a výstupní
Vánoční hvězda 2. Publikované: , Kategória: Blikače a optika.
Vánoční hvězda 2 Publikované: 10.12.2015, Kategória: Blikače a optika www.svetelektro.com Blíží se vánoce a tak by se hodila nějaká vánoční ozdoba do okna. Chtěl jsem vymyslet něco, s čím se zabavím na
Modul LCD displeje se čtyřmi tlačítky. Milan Horkel
LCDL4P0A Modul LCD displeje se čtyřmi tlačítky Milan Horkel Modul LCDL4P obsahuje dvouřádkový LCD displej s obvyklým Hitachi řadičem a čtveřici tlačítek. Používá se jako univerzální uživatelský interfejs
Akademický rok: 2004/05 Datum: Příjmení: Křestní jméno: Osobní číslo: Obor:
Západočeská univerzita v Plzni Písemná zkouška z předmětu: Zkoušející: Katedra informatiky a výpočetní techniky Počítačová technika KIV/POT Dr. Ing. Karel Dudáček Akademický rok: 2004/05 Datum: Příjmení:
LabView jako programovací jazyk II
LabView jako programovací jazyk II - Popis jednotlivých funkcí palety Function I.část - Expresní funkce, struktury, Ing. Martin Bušek, Ph.D. Paleta Functions Základní prvky pro tvorbu programu blokového
UniLog-D. v1.01 návod k obsluze software. Strana 1
UniLog-D v1.01 návod k obsluze software Strana 1 UniLog-D je PC program, který slouží k přípravě karty pro záznam událostí aplikací přístroje M-BOX, dále pak k prohlížení, vyhodnocení a exportům zaznamenaných