ROBOTIKA - ZÁKLADY. Sestaveno dne: verze 0.2. Rudolf Hlaváček
|
|
- Kamila Kašparová
- před 8 lety
- Počet zobrazení:
Transkript
1 ROBOTIKA - ZÁKLADY Sestaveno dne: verze 0.2 Rudolf Hlaváček
2 Obsah 1 Úvod Orientace v textu Stručný obsah kapitol Datasheet Nezbytné součástky Mikroprocesor, mikrokontrolér Rezistor Kondenzátor Dioda LED Tranzistor Cívka Driver Stabilizátor Krystal Postup při programování čipu Úvod Postup programování robota Potřebné programy Nastavení a práce v AVR Studiu WinAVR Nastavení programu Up Práce s programátorem Základy syntaxe v jazyce C Základní pojmy Výrazy a operátory Aritmetické operátory Operátory inkrementace a dekrementace Logické výrazy a operátory Příkazy Přiřazovací příkaz Blok příkazů Podmiňovací příkaz (if) Příkaz několikanásobného větvení (switch) Cyklus for (cyklus řízený proměnou ) Cyklus while (cyklus s podmínkou na začátku ) Funkce a procedury Knihovny Vlastní knihovny Použité knihovny Bity a bajty
3 5.1 Desítková soustava a dvojková soustava Desítková soustava Dvojková soustava Převod z desítkové soustavy do dvojkové Bity a bajty Převod z dvojkové soustavy do desítkové Bitové výrazy a práce s nimi Bitové operátory Bitový součet Bitový součin Bitová negace Bitový exklusivní součet Bitový posun doleva Bitový posun doprava Periferie Co jsou to periferie Jaké periferie Atmega16 má? Obecné použití periferií Práce s ATMega16 v C Piny Přehled pinů Připojení na programátor Práce s registry Registry pro řízení pinů Základní vstup a výstup Nastavování bitu zapsání jedničky Sesazení bitu zapsání nuly Příklad pro vstup a výstup Registry časovačů/čítačů PWM řízení motorů Řízení serva Přerušení Základy elektroniky Proud Napětí Odpor Výkon Výpočet tepelného výkonu (ztrátového) Dioda Výpočet rezistoru pro LED-diodu Tranzistory Stabilizátor Soutěže
4 9.1 Pravidla kategorie Stopár v soutěži Istrobot Robotchallenge Eurobot starter Eurobot Literatura
5 1 Úvod Tento text chce čtenáři naprostému začátečníkovi přiblížit programování čipů. Většina informací je pro řadu čipů společná, pro konkrétní ukázky je použitý čip ATMega16 [1]. 1.1 Orientace v textu Čísla ve hranatých závorkách odkazují na seznam literatury na straně 36. Pro práci s čipy je potřebná řada pojmů. Měli jsme snahu uvádět nové informace postupně, ale vždycky to nebylo možné. Pokud narazíte na neznámý pojem, použijte rejstřík (strana??). Pokud něco v rejsříku nenajdete, přijďte to reklamovat :-). Pokud už budete některé pasáže znát, můžete je přeskočit. Toto je první verze textu, proto mohou být některé pasáže nesrozumitelné. Pokud Vám nebude něco jasné, přijďte se zeptat. 1.2 Stručný obsah kapitol Ke správné funkci každého čipu jsou potřeba další součástky. Proto je první kapitola věnována představení těch součástek, které budete často potkávat. DOPLNIT DALŠÍ KAPITOLY - AŽ SE TEXT USADÍ 1.3 Datasheet Datasheet je dokument, ve kterém jsou detailně popsány vlastnosti a možnosti dané elektronické součástky. Každá součástka má svůj datasheet. Datasheet je možné najít na internetu, například na stránce nebo na stránkách výrobce nebo prodejce součástky. Bohužel jsou všechny datasheety anglicky. 2 Nezbytné součástky 2.1 Mikroprocesor, mikrokontrolér Mikroprocesor, mikrokontrolér znamenají totéž integrovaný obvod, který se snažíme naprogramovat. Pin je vývod (nožička) čipu (podrobněji viz 7.1). Jednoduché čipy (např. ATtiny) mají osm pinů, složitější čipy mají 32, 40, nebo také 100 pinů. 4
6 2.2 Rezistor Rezistor nebo také odpor 1 je součástka, která klade elektrickému proudu určitý odpor neboli ho omezuje. A to podle vzorce: U = R I, kde U je napětí, R je odpor a I elektrický proud (viz str. 29). Tento vztah je znám pod názvem Ohmův zákon a můžeme z něj vyjádřit proud I: I = U/R. Ze vzorce je vidět, že pokud použijeme rezistor s větším odporem při stejném napětí, tak se protékající proud zmenší (použití viz 8.7). Odpor rezistoru měříme v ohmech, značka Ω. 2.3 Kondenzátor Kondenzátor je součástka, která uchovává elektrický náboj. Jeho hlavní vlastností je kapacita. Jednotkou kapacity je Farad, značka F. V praxi se používají násobky jako mikrofarad (µf), nanofarad (nf) a pikofarad 2 (pf). Kondenzátory se nabíjí a vybíjí různě rychle a mají různou kapacitu. Keramické kondenzátory mají nejmenší kapacitu(pf, nf) a jsou nejrychlejší, tantalové mívají kapacitu okolo pár µf a jsou pomalejší a nejpomalejší jsou elektrolytické s kapacitou stovek až tisíců µf. U tantalových a elektrolytických kondenzátorů musíme dát pozor na polaritu, tj. kam připojujeme + a kam -. Další důležitý údaj je maximální hodnota napětí, kterou kondenzátor snese. 2.4 Dioda Dioda je součástka, která usměrňuje elektrický proud. To znamená, že pokud ji zapojíme do elektrického obvodu, tak zajistí, že proud bude téct pouze jedním směrem. Proto budeme diodu používat jako ochranu proti tzv. přepólování chybnému zapojení baterie nebo součástky do obvodu, které obvykle vede ke zničení součástky (podrobněji viz 8.6). 2.5 LED LED 3 je součástka, která není primárně určená k usměrnění proudu, ale k signalizaci, zda obvodem protéká proud. K LED se vždy musí připojit rezistor (viz 8.7). 1 Správně se součástce říká rezistor, odpor je její vlastnost. Ale mnoho lidí používá pro označení součástky slovo odpor. 2 Mikrofarad je miliontina faradu, nanofarad je tisíckrát menší a pikofarad milionkrát menší než mikrofarad. 3 Light emitting diode světlo vysílající dioda 5
7 2.6 Tranzistor Tranzistor je součástka, která umožňuje pomocí malých proudů z čipu řídit větší proudy, například do reproduktoru nebo motorku (viz 8.8). 2.7 Cívka Cívka neboli tlumivka je součástka, jejíž hlavní vlastností je indukčnost, jednotka henry, značka H. V praxi se používají milihenry (mh) a mikrohenry (µh). 2.8 Driver Čip nemůže řídit například motor přímo, protože jedním pinem může protékat obvykle maximálně 40 ma většina motorů potřebuje mnohem větší proud. Proto se používají součástky zvané drivery, které podle pokynů z čipu řídí proud z baterií do motorů a servomotorů. 2.9 Stabilizátor Většinu čipů je potřeba napájet přesně 5 V. Jak toho docílit z baterií, na kterých je například 9 V nebo 12 V, zkrátka více než 5 V. Navíc napětí na bateriích kolísá podle toho, jak moc proudu zrovna odebírají motory. Pro napájení čipů je proto nutné použít stabilizátor. Stabilizátor je součástka, která z kolísavého vyššího napětí vyrobí přesné napětí nižší. Nejčastěji se používají stabilizátory řady 78XX, kde XX značí, na kolik voltů součástka stabilizuje, například 7805 stabilizuje na 5 V. Stabilizátor má tři piny (vstup, zem, výstup). Zapojí se takto: Kladný pól baterie (+) se napojí na vstup, záporný pól na zem (-). Mikrokontrolér se zapojí pinem VCC na výstup stabilizátoru a GND (pin 11 - digitální zem) se zapojí na zem stabilizátoru. Tímto máme připojený mikrokontrolér na napájení Krystal Pokud budeme potřebovat vyšší frekvenci procesoru, použijeme krystal. Původní frekvence mikrokontroléru ATMega16 je nastavena na 1 MHz. S pomocí krystalu ji můžeme zvýšit až na 16 MHz. Krystal zapojíme takto: Jeden pin krystalu (je jedno, který) připojíme na pin XTAL1 a druhý na XTAL2. Dále na pin XTAL1 připojíme jednu nožičku kondenzátoru a druhou na digitální zem (11- GND). To samé u pinu XTAL2. Hodnotu kondenzátoru můžeme volit od 12pF do 22pF. 3 Postup při programování čipu 3.1 Úvod Roboty programujeme v jazyce C++, a to z několika důvodů. Zaprvé je to mnohem jednodušší než programovat v Assembleru. Zadruhé je to jazyk běžně pou- 6
8 žívaný pro programování čipů Postup programování robota 1. Napsání a přeložení programu v AVR Studiu 2. Nahrání přeloženého souboru *.hex do mikrokontroléru Potřebné programy 1. AVR Studio 4 v něm budeme psát zdrojový kód 2. WinAVR použijeme pro překlad 3. Up tímto programem nahrajeme *.hex soubor do mikrokontroléru 3.2 Nastavení a práce v AVR Studiu 1. Spustíme AVR Studio 2. Klikneme na New project 3. V kolonce Project type zvolíme AVR GCC 4. Do kolonky Project name napíšeme jméno projektu bez diakritiky 5. Zaškrtneme Create initial file a Create folder 6. Do kolonky Location napíšeme adresu, kam se má projekt uložit 7. Vlevo vybereme AVR Simulator a vpravo námi použitý mikrokontrolér (např. ATmega16) 8. Klikneme na Finish 9. Klikneme na záložku Project a dáme položku Configuration Options 10. Zvolíme Custom Options a nyní přepíšeme text -std=gnu99 v levém okně na -x c++ a dáme Add a potom OK 11. Nyní můžeme psát program, poté ho přeložíme klávesou F7 nebo tlačítkem Build Active Configuration 12. Zkontrolujeme, zda se v programu vyskytují chyby či nikoli 13. Pokud tu chyby jsou, musíme najít první v pořadí, dvakrát na ní klikneme a objeví se nám modrá šipka ukazující na místo, kde se chyba vyskytuje 7
9 3.3 WinAVR Abychom mohli zdrojový kód přeložit, zavolá AVR Studio překladač, který kód přeloží do souboru typu *.hex, který potom můžeme nahrát do mikrokontroléru. Na to ale musíme mít nainstalovaný překladač WinAVR [8]. Po vytvoření souboru *.hex ze zdrojového kódu můžeme tento soubor nahrát do mikrokontroléru. 3.4 Nastavení programu Up Do mikrokontroléru nahrajeme *.hex soubor programem Up pomocí programátoru 4 PRESTO. Nejprve upravíme nastavení programu Up (stačí jednou). 1. klikneme na záložku Nastavení, dále vybereme Klávesové zkratky..., potom vyberu pro tlačítko GO Programování paměti programu klikneme na záložku Nastavení a zvolíme Nastavení programu 3. zaškrtneme Načíst hex soubor vždy znovu před programováním 4. dále necháme zaškrtlé pouze Zobrazovat varovné hlášky k pojistkám, Pro čtení: Automaticky zavřít stavové okno, Delší čas pro zapojení napětí při ICSP 5. nastavíme čas na µs, a odklikneme OK 3.5 Práce s programátorem 1. Spustíme programu Up 2. Klikneme na Otevřít a najdeme si cestu k projektu, který jsme si vytvořili v AVR Studiu 3. Až to najdeme, tak klikneme na adresář default a najdeme hex soubor a dáme otevřít 4. Teď zbývá nahrát ho do mikrokontroléru 5. Nastavíme a nebo zkontrolujeme Konfiguraci 6. Propojku BODLEVEL nastavíme na co nejvyšší hodnotu menší, než hodnotu napájení mikroprocesoru a propojku BODEN na Enable 7. Propojku SUT, CKSEL nastavíme na námi požadovanou frekvenci danou vnějším oscilátorem. V našem případě máme krystal 16MHz, a proto nastavíme SUT, CKSEL na XT MHz, 16Kck+65ms tím říkáme, že krystal je od 3 do 8 MHz, 16Kck+65ms říká, že než začne procesor pracovat, uplyne 16 tisíc tiků kryslalu naprázdno plus ještě 65 ms počká, je to kvůli stabilitě hodin v čipu, zkrátka, aby procesor pracoval správně. 4 Zařízení pro naprogramování součástek. 5 Tím zajistíme, že se při zmáčknutí tlačítka GO na programátoru přeprogramuje pouze paměť pro program a ne například paměť EEPROM. Dále tím dosáhnu toho, že se nepřenastaví propojky pro mikrokontrolér. 8
10 8. Propojku CKOPT nastavíme na XT up to 16MHz, rail to rail tím řekneme, že krystal připojený k čipu je 16 MHz a ne 8 MHz, které jsme si zvolili v propojkách SUT, CKSEL 9. Při prvním programovaní musíme upravit frekvenci programátoru, protože mikrokontrolér je z výroby nastaven na 1 MHz. V kolonce Frekvence krystalu zvolíme menší než 1 MHz například 100 khz 10. Důležité jsou i kolonky Napájení v klidu a Napájení během programování. Pokud máme na procesoru napětí 5 V, (poznáme podle ukazatele JAKÉHO???), tak dáme Žádné/externí a Externí 2,7 V až 5,5 V. Pokud chceme procesor napájet z programátoru, tak nastavíme políčko Napájení během programování na interní 5 V. Políčkem Napájení v klidu pak zapínáme a vypínáme procesor. 11. Klikneme na Konfigurační tabulku pravým tlačítkem a dáme Zapamatovat pojistky, pak znovu pravé tlačítko a dáme Naprogramovat konfigurační paměť. 12. Nyní můžeme stisknout tlačítko GO na programátoru. 4 Základy syntaxe v jazyce C 4.1 Základní pojmy příkaz povel pro procesor, říká procesoru, co má dělat. Příkazy probíhají postupně, nejprve se udělá jeden a pak další, který je na řadě Za příkazy dáváme středník (;). syntaxe pravopis programovacího jazyka, říká, jak psát příkazy programovacího jazyka tak, aby nám počítač rozuměl preprocesor před samotným překladem programu do *.hex souboru proběhnou tzv. direktivy preprocesoru (něco jako příkazy, podrobně viz [2], str. 18). Příklady: #include <> pro vkládání hlavičkových souborů #include "" pro vkládání vlastních hlavičkových souborů #define KONSTANTA HODNOTA_KONSTANTY pro definici konstanty, všude kde se v kódu vyskytne text KONSTANTA bude tento text nahrazen HODNOTA_KONSTANTY proměnná je místo v paměti, kde jsou uložena nějaké data datový typ říká nám, v jaké podobě jsou data v proměnné uložena. V proměnné jsou pouze jedničky a nuly, Pomocí datového typu mikrokontrolér pozná, jestli ta data jsou čísla, nebo znak, v jakém rozsahu jsou čísla, atd... používané datové typy: uint8_t celá čísla od 0 do 255 int8_t celá čísla od -127 do 127 9
11 uint16_t celá čísla od 0 do int16_t celá čísla od do uint32_t celá čísla od 0 do int32_t celá čísla od do operandy jsou čísla nebo výrazy, které vstupují do operace operátory nám říká, jaké operace provedeme s operandy (co s nimi uděláme) Příklad: 5 + 2, přitom 5 a 2 jsou operandy a znaménko plus je operátor, který nám říká, že čísla chceme sečíst (provést operaci sečítání) poznámka cokoliv se objeví v kódu mezi znaky /* a */, tak je poznámka a bude před překladem odstraněno z kódu. Pokud chceme zapoznámkovat pouze jeden řádek, použijeme // Příklady: /* Vše co napsáno zde je poznámka a nebude překládáno */ // Toto je poznámka, která může popsat funkci nějakého úseku kódu 4.2 Výrazy a operátory Výraz je něco co nabývá nějaké hodnoty, např.: je výraz, který nabývá hodnoty 8. 5 > 3 je výraz nabývající hodnoty true neboli pravda, x <= 10 je výraz který je pravdivý, pokud proměnná x(kterou musíme mít deklarovanou) menší nebo rovna číslu Aritmetické operátory + sčítání - odčítaní * násobení / dělení Operátory inkrementace a dekrementace pokud chceme zvýšit hodnotu proměnné o jedničku, napíšeme ++název_proměnné; pokud chceme snížit hodnotu proměnné o jedničku, napíšeme --název_proměnné; Příklad: 10
12 uint8_t i = 5; // Vytvoření proměnné i a dosazení hodnoty 5 do ní. uint8_t j = 42; // Vytvoření proměnné j a dosazení hodnoty 42 do ní. ++i; // Hodnota i se zvýší o jedničku na číslo 6. --j; // Hodnota j se sníží o jedničku na číslo Logické výrazy a operátory Přehled logických operátorů: == porovnání - rovnost!= porovnání - nerovnost && logický součin logický součet! negace < menší než <= menší nebo rovno > větší než >= větší nebo rovno Logický výraz může nabývat pouze dvou hodnot pravda (true) a nepravda (false). Obvykle je nepravda reprezentovaná nulou a pravda každým nenulovým číslem. Logické výrazy se používají v podmínkách (viz např ). Logické operace se používají při vyhodnocování logických výrazů. Příklady: a == b výraz je pravdivý, pokud se a rovná b a!= b výraz je pravdivý, pokud se a nerovná b lze to napsat i konkrétněji, např.: a!= 5, výraz je pravda pokud se a nerovná 5, pokud se rovná výsledkem výrazu je nepravda(false) b > c výraz je pravdivý, pokud je b větší než c b >= d výraz je pravdivý, pokud je b větší nebo rovný d!(a > b) výraz v závorce je pravdivý, pokud je a větší než b, ale pak je negováno(z pravdy se stává nepravda a naopak ), tj. celý výraz je nepravdivý, pokud je a větší než b, pokud je a menší nebo rovno, tak je výraz pravdivý.!(a == b) výraz (a == b) je negován znaménkem!, to znamená, že výraz je pravdivý, pokud se výraz a nerovná výrazu b, v podstatě se to dá napsat i takto: a!= b Pozor: negace výrazu (a > b), tj.!(a > b) není to samé jako výraz (a < b), ale správně je to (a <= b) 6 Logický součin && se používá, pokud budeme potřebovat spojit dva nebo více výrazů dohromady, např.: (a > b)&&(c == d), výsledkem tohoto výrazu bude logický součin výrazů v závorkách, pro logický součin platí, že je pravda pokud oba výrazy jsou pravdivé, jinak je výsledek nepravda, tj. zde bude pravda pouze 6 Platí zde určité zákonitosti viz De Morganovy zákony 11
13 pokud bude a větší než b a zároveň bude platit, že c se rovná d. Logický součin použijeme, pokud musí všechny výryzy být pravda. Logický součet je pravdivý, pokud alespoň jeden výraz je pravdivý. Např.: (e <= f) (g!= 3) výraz bude pravda, pokud bude platit, že e je menší nebo roven f, nebo bude platit, že g se nerovná 3, anebo klidně budou platit oba výrazy. 4.3 Příkazy Přiřazovací příkaz Použijeme, pokud chceme, aby se do proměnné uložila nějaká data. Syntaxe: datový_typ název_proměnné; syntaxe vkládání: název_proměnné = hodnota_která_se_má_uložit; Data do proměnné můžeme vložit rovnou při vytváření proměnných: datový_typ název_proměnné = hodnota; Příklad: uint8_t b = 5; Vytvoří se proměnná pojmenovaná b (která je v rozsahu od 0 do 255) a uloží se do ní číslo 5. int16_t B; Vytvoří se proměnná B. B není to samé jako b, protože jazyk C rozlišuje VELKÁ a malá písmena. B = 1024; Do proměnné B se uloží hodnota 1024; Blok příkazů Pokud chceme někam dát více příkazů, ale můžeme tam dát pouze jeden příkaz, tak je dáme do složených závorek Příklad: PŘÍKAZ1; PŘÍKAZ2; PŘÍKAZ3; Podmiňovací příkaz (if) Použijeme, pokud chceme, aby se program mohl rozhodnout na základě nějaké podmínky. syntaxe: if(podmínka) PŘÍKAZ1; else PŘÍKAZ2; 12
14 Pokud platí PODMÍNKA v kulaté závorce, vykoná se PŘÍKAZ1, pokud neplatí, vykoná se PŘÍKAZ2. Za if nebo else může být pouze jeden příkaz, pokud jich tam chceme dát více, použijeme blok. Větev else je nepovinná. Příklad: if(a > 5) // Pokud platí, že //proměnná a je větší něž 5, tak se b = a; // do proměnné b uloží hodnota, která je v proměnné a c = 2; // do proměnné c se uloží číslo 2. // Pokud podmínka neplatí, tak se nevykoná nic. podmínka může být výraz např.: a > 5 // podmínka bude platit, // pokud proměnná a je větší než 5 podmíněné příkazy lze vnořovat - v bloku příkazů může být další if Příklad: if(podmínka1) PŘÍKAZ1; if(podmínka2) PŘÍKAZ2; PŘÍKAZ3; else PŘÍKAZ4; Pokud platí PODMÍNKA1 tak se vykoná PŘÍKAZ1, pak se zkontroluje PODMÍNKA2, pokud platí, tak se vykoná PŘÍKAZ2, pokud ne, program pokračuje dál a vykoná PŘÍKAZ3. V případě, že neplatí ani PODMÍNKA1, tak se blok příkazů přeskočí a vykoná se blok příkazů za else, tj. PŘÍKAZ4. Je tu možnost také do větve else napsat daší if else, vypadá to takto: if(podmínka1) PRÍKAZ1; else if(podmínka2) PRÍKAZ2; 13
15 else PRÍKAZ3; Pokud platí PODMÍNKA1, tak se vykoná PŘÍKAZ1, pokud ne, tak se zkontroluje PODMÍNKA2, pokud platí tak se vykoná PŘÍKAZ2, pokud neplatí, tak se vykoná PŘÍKAZ3. Výše zapsaný kód sice bude fungovat, ale není přehledný, a proto z důvodu lepší orientace v kódu zvolíme tento zápis: if(podmínka1) PRÍKAZ1; else if(podmínka2) PRÍKAZ2; else PRÍKAZ3; Příkaz několikanásobného větvení (switch) Pokud by takto zapsaných podmínek bylo moc a vztahovali by se k jedné řídící proměnné lze použít příkaz několikanásobného větvění neboli switch. Tak například místo zápisu: if(a == 1) PŘÍKAZ1; else if(a == 2) PŘÍKAZ2; else if(a == 3) PŘÍKAZ3; else if(a == 4) PŘÍKAZ4; else 14
16 PŘÍKAZ5; Lze napsat: switch(a) case 1: PŘÍKAZ1; break; case 2: PŘÍKAZ2; break; case 3: PŘÍKAZ3; break; case 4: PŘÍKAZ4; break; default: PŘÍKAZ5; break; Čím se to celé zjednodušuje Cyklus for (cyklus řízený proměnou ) Tento cyklu použijeme, pokud předem známe kolikrát se má opakovat určitá operace Syntaxe: for(řidící_proměnná; podmínka; zvýšení_nebo_snížení_hodnoty_proměnné ) PŘÍKAZ1; PŘÍKAZ2; Příklad: for(uint8_t i=0; i<4; i++) rozsvit_ledku(); pockej_sekundu(); zhasni ledku(); Co tento kód udělá? Dejme tomu, že máme už předem vytvořené funkce rozsvit_ledku(), atd... Potom cyklus udělá následující: vytvoří proměnnou i datového typu uint8_t (celá čísla od 0 do 255), uloží do ní číslo 0. Potom zkontroluje podmínku, zda 15
17 je proměnná i menší než 4, pak se provedou příkazy či funkce v těle cyklu, tj. rozsvítí se LED-dioda, bude svítit jednu sekundu, a pak zhasne. Pak se provede příkaz i++, ten zvýší hodnotu proměnné o jednu, tj. na číslo 1. Potom se kontroluje znovu podmínka, zdali je proměnná i (která má teď hodnotu 1) menší než 4, atd... Celkem se tělo cyklu vykoná čtyřikrát. Cyklus for lze použít i bez proměnné, podmínky a zvýšení hodnoty, potom bude probíhat donekonečna. Příklad: for(;;) rozsvit_ledku(); pockej_sekundu(); zhasni ledku(); Tento cyklus bude dělat to samé, co předchozí, s tím rozdílem, že to bude dělat donekonečna a nebude se ptát na podmínku. Použití v programu pro robota: Nekonečný cyklus, ve kterém se kontrolují podmínky, zda je na čáře, zda je před ním soupeř, zda má udělat to či ono Cyklus while (cyklus s podmínkou na začátku ) Použijeme, pokud nebudeme vědět kolikrát mají proběhnout příkazy a funkce v těle cyklu. Syntaxe: while(podmínka) PŘÍKAZ1;... Příklad: while(!je_tlacitko_stiskle()) ujed_1_cm(); Tento cyklus bude stát, dokud nezmáčkneme tlačítko. Vyžaduje mít předem naprogramovanou funkci ujed_1_cm() a je_tlacitko_stiskle(). 4.4 Funkce a procedury Pokud se nám v zdrojovém kódu opakují dokola stejné příkazy, můžeme vytvořit funkce nebo procedury, které potom voláme a které nám usnadní kód. syntaxe: datový_typ_který_funkce_vrací název_funkce(datový_typ_parametru1 parametr1, datový_typ_parametru2 parametr2) // Parametry jsou nepovinné 16
18 PŘÍKAZ1; // Nepovinné příkazy PŘÍKAZ2; return HODNOTA_KTEROU_FUNKCE_VRACI; // Za return se napíše výraz, který funkce vrací. Příklad: // Funkce na sčítání dvou čísel, každé od 0 do 255. uint16_t umocni(uint8_t zakl, uint8_t exp) uint16_t vys = 1; if(exp > 0) for(uint8_t i = 0; i < exp; i++) vys = vys * zakl; return vys; pokud někde v programu použiji funkci secti(10, 2), tak výsledkem bude, jako bych napsal 10*10, tj Příklad: c = umocni(a, b); // Do proměnné c se uloží b-tá mocnina čísla a. procedura je vlastně funkce, jen s tím rozdílem, že procedura má datový typ void a nemá return (tj. nevrací žádnou hodnotu). Příklad: void rozsvitledku() DDRB = (1<<PB0); /* Co dělá tento příkaz nemusíte zatím řešit, pak se k tomu dostaneme. */ Pokud někde v programu napíšu rozsvitledku(), tak se rozsvítí LEDka na robotovi. tělo funkce main všechny příkazy, které jsou mezi složenými závorkami, se po zahajení programu postupně vykonají 4.5 Knihovny Vlastní knihovny Z funkcí a procedur se mohou vytvářet soubory pro usnadnění práce. těmto souborům se říká knihovny. Soubory mají koncovku.h Příklad: avr/io.h moje_knihovna.h Vlastní knihovnu poté mohu vložit direktivou #include Příklad: #include "moje_knihovna.h" 17
19 4.5.2 Použité knihovny Pro práci s mikrokontroléry budeme potřebovat některé už vytvořené knihovny Příklad: avr/io.h pro základní vstup a výstup avr/interrupt.h pro práci s přerušením stdint.h zde je definovány datové typy (viz 4.1) 5 Bity a bajty 5.1 Desítková soustava a dvojková soustava V počítači jsou všechna data uložena pouze v podobě jedniček a nul. A proto se nám bude hodit, když se budeme aspoň trochu orientovat v převodech mezi dvojkovou a desítkovou soustavou Desítková soustava V desítkové soustavě je základem číslo deset. Příklad: číslo 156 si můžeme rozložit jako 1*10^2 + 5*10^1 + 6*10^0, přitom 10^0=1, 10^1=10, 10^2=10*10=100, 10^3=10*10*10=1000 atd..., takže naše číslo potom vypadá takto: 1* *10 + 6*1 = Dvojková soustava Ve dvojkové soustavě je základem číslo dva. Příklad: číslo rozložíme na 1*2^7 + 1*2^6 + 0*2^5 + 0*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0, přitom 2^0=1, 2^1=2, 2^2=2*2=4, 2^3=2*2*2=8, 2^4=2*2*2*2=16, 2^5=32, atd..., proto naše číslo má hodnotu: 1* *64 + 0*32 + 0*16 + 1*8 + 0*4 + 1*2 + 0*1 = Převod z desítkové soustavy do dvojkové Jak na to, když chceme převádět číslo z desítkové soustavy do dvojkové? Například převedeme číslo 97. Nejprve je potřeba, abychom znali násobky čísla dva: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, atd... Napíšeme jedničku. 1 Najdeme nejbližší nižší násobek dvou k našemu číslu, v našem případě je nejblíže 64. Odečteme si od 97 číslo 64, 97-64=33. Odečítali jsme číslo 64, další v pořadí je číslo 32, je 32 obsaženo v 33? Ano, proto napíšeme další jedničku. 11 Dále 33-32=1, další číslo je 16, je 16 obsaženo v 1? Ne, proto napíšeme nulu. 110 Další číslo je 8, také není obsaženo v 1, takže napíšeme nulu Čísla 4 a 2 také nejsou obsažena v čísle 1, proto napíšeme nuly. 18
20 A nakonec, je číslo jedna obsaženo v čísle jedna? Ano, napíšeme jedničku. Náš binární zápis čísla 97 vypadá takto: Čísla v binární soustavě by měla mít počet cifer rovno 8, 16, 32, podle toho s kolika bitovými čísly počítáme. V našem případě musíme doplnit jednu nulu. Pokud bychom počítali s 16 bitovými čísly doplníme o 8 nul více. Nuly doplňujeme zleva. Zapamatujeme si to snadno v desítkové soustavě se číslo 128 také nezmění pokud před něj dáme nuly, Nuly navíc nebudeme psát v desítkové soustavě, ale v dvojkové nám to pomůže se lépe orientovat. Takže to bude vypadat: No a to ještě není všechno. Aby mělo číslo správný tvar musí mít před číslem uvedeno 0b(nula a malé B), tím říkáme v jazyce C, že číslo je v (binární) dvojkové soustavě. Pozor: Čísla 101 a 0b101 nejsou to samé!je to jednoduché, pokud 0b neuvedeme bude překladač číslo brát jakože je v desítkové soustavě. Tj. 101 => číslo sto jedna, 0b101 => číslo pět. Další příklad: Převedeme číslo 237. Nejbližší nižší číslo je =109 je číslo 64 obsaženo v čísle 109? ANO, další jednička =45 je číslo 32 obsaženo v 45? ANO, jednička =13 je 16 obsaženo v čísle 13? NE, nula je číslo 8 obsaženo v 13? ANO, jednička =5 je 4 obsaženo v 5? ANO, jednička =1 je obsažena v 1? NE, nula je 1 obsažena v 1? ANO, jednička Binární zápis čísla 237 vypadá takto: Bity a bajty Každá číslice ve dvojkové soustavě reprezentuje jeden bit (nabývá hodnot 0 nebo 1). Osm bitů dohromady tvoří bajt. Nejnižší bit v bajtu leží vpravo (tzv nultý bit), další je nalevo od něj (první bit), až do sedmého bitu, který je nejvíce vlevo Převod z dvojkové soustavy do desítkové Vezmeme si například binární číslo Očíslujeme si pozice zprava doleva od nuly, tj.:
21 Pohybujeme se v dvojkové soustavě, tj. základ bude 2. Vezmeme nultou číslici a vynásobíme s ní číslo 2^0. Dostáváme 1*2^0 = 1. Dále první číslici vynásobíme číslem 2^1, tj. 1*2^1 = 2. Dále druhou číslici vynásobíme číslem 2^2, tj. 0*2^2 = 0. A to samé provedeme s číslicí na třetí pozici: 1*2^3 = 8. A nyní čísla sečteme = 11, takže binární číslo 1011 převedené do desítkové soustavy je 11. Příklad 2: Převeďte binární číslo do desítkové soustavy. 1*2^0 + 0*2^1 + 0*2^2 + 1*2^3 + 0*2^4 + 1*2^5 + 1*2^6 + 1*2^7 To je: = 233 Binární číslo převedeno do desítkové soustavy je 233. Příklad 3: Převeďte binární číslo *2^0 + 0*2^1 + 1*2^2 + 0*2^3 + 1*2^4 + 0*2^5 + 0*2^6 + 0*2^7, samozřejmě členy 2^x, které násobíme nulou budou nulové a tudíž je můžeme beztrestně vynechat, tj. 1*2^0 + 1*2^2 + 1*2^4 = = 21 Binární číslo má v desítkové soustavě hodnotu Bitové výrazy a práce s nimi Bitové operace se od logických operací (viz 4.2.3) liší tím, že se neaplikují na číslo jako celek, ale bit po bitu, viz níže. My budeme potřebovat následující bitové operace: bitový součet, bitový součin, bitovou negaci, bitový posun doleva Bitové operátory bitový součet & bitový součin ~ bitová negace ^ bitový exluzivní součet << bitový posuv doleva >> bitový posuv doprava Bitový součet Platí, že 0 0=0, 0 1=1, 1 0=1, 1 1=1, sčítají se vždy pouze bity, které leží pod sebou. Zkrátka pokud je aspoň jeden bit jedna, výsledek je také jedna. Příklad: máme dvě binární čísla a a chceme je bitově sečíst. Když sečteme nulté bity zadaných čísel, dostamene 0 1=1. Pak provedeme bitový součet i pro první, druhé a další bity. Zapíšeme: (0b b ); Nebo pokud budeme mít čísla v proměnných: uint8_t a = 0b ; uint8_t b = 0b ; uint8_t c; c = (a b); 20
22 Do proměnné c se zapíše výsledná hodnota první číslo druhé číslo výsledek po bitovém logickém součtu Výsledek: Bitový součin Platí, že 0&0=0, 0&1=0, 1&0=0, 1&1=1, tady platí, že výsledek je jedna, pokud oba bity jsou jedna. Příklad: bitový součin čísel a Zapíšeme: (0b & 0b ); Nebo pokud budeme mít čísla v proměnných: uint8_t c = 0b ; uint8_t d = 0b ; uint8_t e; e = (c&d); Výsledná hodnota se zapíše do proměnné e první číslo druhé číslo výsledek bitového logického součinu Bitová negace Tam, kde byla jednička, bude nula, a kde byla nula, bude jednička. Příklad: znegujte číslo Zapíšeme: ~(0b ); Nebo pokud budeme mít číslo v proměnné: uint8_t a = 0b ; uint8_t b; b = ~a; Do proměnné b se zapíše výsledná hodnota číslo, které bude logicky znegováno výsledek Bitový exklusivní součet Výsledkem exklusivního součinu je pravda, pokud se hodnoty liší, tj. nejsou stejné. Takže platí 0^0=0, 0^1=1, 1^0=1, 1^1=0 Zapíšeme: (0b ^ 0b ); Nebo pokud budeme mít čísla v proměnných: 21
23 uint8_t c = 0b ; uint8_t d = 0b ; uint8_t e; e = (c^d); Výsledná hodnota se zapíše do proměnné e první číslo druhé číslo výsledek bitového exklusivního součtu Bitový posun doleva Vezmeme celé osmibitové číslo a posuneme ho o určitý počet míst doleva. Přitom čísla vlevo zmizí a na na uprázdněné místo vpravo přijdou vždy nuly. Zapíšeme: (0b << 3); Nebo pokud budeme mít číslo v proměnné: uint8_t c = 0b ; uint8_t d; d = (c << 3); Do proměnné d se přiřadí výsledek operace. Pokud například už nebudeme potřebovat původní hodnotu proměnné c, lze to napsat i takto: uint8_t c = 0b ; c = (c << 3); Hodnota v proměnné c se nejprve posune o tři pozice a pak se výsledná pozice zapíše na stejnou pozici v paměti mikrokontroléru. Příklad: proveďte bitový posun doleva o tři s číslem posun o jedno doleva znovu o jedno doleva (celkem o dvě místa) celkový posun o tři bity doleva Bitový posun doprava Bitový posun doprava je podobný jako operace bitový posun doleva, liší se jen ve směru posunu, tj. posouvá se na opačnou stranu. Příklad 1: Proveďte bitový posun doprava o tři pozice s binárním číslem Zapíšeme: (0b >> 3); Výsledkem bude toto: posun o jednu pozici doprava posun o druhou pozici posun o třetí pozici 22
24 Příklad 2: Proveďte bitový posun o dvě pozice doprava a potom o tři doleva s binárním číslem Zapíšeme: ((0b >> 2) << 3); Výsledkem bude toto: posun o dvě pozice doprava posun o tři pozice doleva, toto je výsledek. Příklad 3: Ale co když zadám číslo do proměnné v desítkové soustavě, například 189 a provedu bitový posun o dvě pozice doprava? Co dostanu? Dostanu snad 1? Ne, i když jsme číslo zadali v desítkové soustavě, v mikrokontroléru je stejně uloženo jako jedničky a nuly, takže číslo musíme nejprve převést do dvojkové soustavy. 189 = 0b A teď posun o dvě pozice doprava: a to je číslo 47. Takže 47 je výsledek bitového posunu čísla 189 o dvě pozice doprava. Zapíšeme takto: uint8_t a = 189; uint8_t b; b = (a >> 2); No a výsledek(tj. číslo 47 ) se uloží do proměnné b. 6 Periferie 6.1 Co jsou to periferie Periferie je nějaké rozšíření funkce jednotlivých pinů procesoru. Periferie rozšiřují použití mikrokontrolérů téměř na jakékoliv použití od blikání LED, přes různé časovače, digitální hodiny, teploměry až k menší autonomním robotům. 6.2 Jaké periferie Atmega16 má? Atmega16 má dva 8-bitové časovače/čítače, jeden 16-bitový časovač/čítač, osm kanálů 10-bitového A/D (analogově/digitálního) převodníku, analogový komparátor, tři druhy komunikací (TWI, SPI, USART), které lze použít ke komunikaci mikrokontroléru s okolím. 6.3 Obecné použití periferií Vstupně/výstupní pin lze použít k rozsvěcení LED (v sérii s LED musí být rezistor, viz ). Lze zjišťovat, zda je nebo není tlačítko zmáčknuté. Časovače/čítače mohou být zdrojem času pro určité aplikace, ale nejužitečnější je použití č/č jako generátor obdélníkového signálu, která bude sloužit jako pwm k řízení motoru. Kdykoliv potřebujeme získat nějaký rozumný údaj z analogových senzorů, to jest ne pouze 5 V nebo 0 V, ale cokoliv co se nachází mezi např.: 2,14 V. Použití například údaj z potenciometru nebo senzoru(fototranzistor, elektronický kompas 23
25 či akcelerometr). Komunikaci mikrokontroléru s jiným mikrokontrolérem budeme řešit přes USART, TWI nebo SPI. 7 Práce s ATMega16 v C 7.1 Piny Pin je nožička procesoru. Může být nastavený jako vstupní nebo jako výstupní. Pokud je pin nastavený jako vstupní, umí určit, zda na něm je napětí odpovídající logické jedničce (5 V) nebo logické nule (0 V). Pokud je pin nastavený jako výstupní, umí se nastavit na logickou jedničku nebo logickou nulu. Další funkce pinů jsou popsány níže. 7.2 Přehled pinů Na druhé straně nahoře v [7] najdete podobu mikrokontroléru a popis jeho pinů. Pro nás jsou nejdůležitější tyto piny (čísla v závorce jsou čísla pinů podle obrázku): VCC(10) napájení digitální části mikrokontroléru 5 V GND(11) zem digitální části AVCC(30) napájení analogové části(a/d převodník na portu A) GND(31) zem pro analogovou část AREF(32) referenční napětí pro A/D převodník RESET(9) přivedením logické nuly (0 V) po krátkou dobu se procesor resetuje a program začne běžet od začátku XTAL1(13) a XTAL2(12) piny pro připojení krystalu Pak jsou tu piny jako PB0 až PB7, je to označení základní vstupně výstupního pinu druhé písmeno nám říká z jakého je portu a číslo pořadí pinu (pozor:začíná od nuly). Každý takto označený pin lze nastavit na logickou jedničku (5V) nebo logickou nulu (0V), nebo lze například číst, zda je na pinu logická jednička či nula (testování stisklého tlačítka). V závorkách je uvedena alternativní funkce pinu. Nás zajímají tyto: ADC0(40) až ADC7(33) A/D(Analogově/digitální) převodník, pro získání hodnot z nějakého analogového senzoru (např.: teplotní čidlo, IR senzor, čtení napětí na bateriích přes odporový dělič). OC0(4), OC1A(19), OC1B(18), OC2(21) výstupy č/č(časovače/čítače), které lze použít ke generování PWM signálu pro řízení motorů, ale ne přímo z mikrokontroléru, ale pouze pomocí driveru. MOSI(6), MISO(7), SCK(8), RESET(9), GND(11) piny používané pro programování mikrokontroléru. INT0(16), INT1(17), INT2(3) vnější přerušení, například pro detekci stisknutí tlačítka. 24
26 7.2.1 Připojení na programátor Programátor má některé piny pojmenovány odlišně: VPP(13V), VDD, GND, DATA/MOSI, CLOCK, MISO VPP programátoru připojíme na RESET mikrokontroléru, VDD připojíme na VCC, GND na GND, DATA/MOSI na MOSI, CLOCK na SCK, MISO na MISO. 7.3 Práce s registry Při práci s mikrokontrolérem budeme pracovat s menšími úseky paměti, tzv. osmibitovými registry. Registr se chová jako proměnná můžeme z něj číst údaj nebo ho tam vkládat. Tím řídíme chod mikrokontroléru. Registry jsou pojmenovány velkými písmeny, například: DDRD, PORTD, PIND, OCR1, atd Registry pro řízení pinů Piny jsou označeny PA0 až PA7, PB0 až PB7, atd... Písmeno za P říká, z jakého portu je pin, číslo udává pořadí pinu (čísluje se od nuly). Např.: PD5 pátý pin portu D, PA4 čtvrtý pin portu A, PC0 - nultý pin portu C. 7.5 Základní vstup a výstup Díky registrům DDRA, DDRB, DDRC a DDRD mikrokontroléru řekneme, který pin má být vstupní či výstupní. Na začátku jsou všechny bity těchto registrů nastaveny na nulu, tj. všechny nožičky mikrokontroléru jsou vstupní. Piny jsou rozděleny do portů A, B, C a D, každý port má maximálně osm pinů. Každému pinu je přiřazen jeden bit v registru. Každý pin je značen PXn, kde X je port, kterému pin náleží(a,b,c,d), a n je číslo pinu(od 0 do 7). Například PB5 je pátý pin portu B, kterému odpovídá pátý bit v registru DDRB, tj. bit označený jako X v čísle 00X Totéž trochu jinak: Vstupně/výstupní piny ( [7] str.48) Pro práci s vstupně/výstupními piny jsou k dispozici tři registry DDRX, PORTX, PINX, kde X je označení portu (A,B,C,D). DDRX tímto registrem říkáme, zda je pin v portu X vstupní (0) či výstupní(1). PORTX pokud je pin vstupní, tak logickou nulou vypínáme pull-up (zdvihávací) rezistor a logickou jedničkou zapínáme pull-up 7. PORTX pokud je pin výstupní, tak logickou nulou nastavíme na pinu logickou nulu a logickou jedničkou jedničku. PINX tento registr slouží pouze a jen pro čtení, a udává aktuální hodnotu na portu X 7.6 Nastavování bitu zapsání jedničky Například: 7 Pull-up rezistor je rezistor, který zajistí, že na pinu bude logická jednička(5 V ), je to rezistor, kde jedna nožička je na VCC a druhá na pinu. 25
27 DDRB = DDRB (1<<PB5); // Tento příkaz nastaví pátý bit v~registru DDRB. Co jednotlivé znaky v příkaze znamenají? Výraz v závorce (1<<PB5) udělá bitový posuv čísla 1 o PB5 míst doleva. PB5 je symbolická konstanta, která má hodnotu 5, místo PB5 lze použít jen číslo 5. Takže (1<<5) je vlastně posunutí čísla o pět míst doleva, výsledek Znak svislé čáry je operátor pro bitový součet. DDRB je registr pro určení vstupu a výstupu pro port B. Takže příkaz DDRB = DDRB (1<<5); udělá to, že do registru DDRB uloží hodnotu vzniklou bitovým součtem z původní hodnoty registru DDRB a čísla Takto postupujeme, protože neznáme hodnoty v registru DDRB a chceme nastavit jen pátý bit a ostatní chceme nechat nezměněny. Pokud bychom chtěli nastavit jen pátý bit nehledě na ostatní, použijeme příkaz: DDRB = 0b ; // 0b - říká překladači, že se jedná o binární číslo Co by se stalo, kdyby v registru už nějaké hodnoty byly nastaveny a my bychom napsali pouze DDRB = 0b ;? // předchozí hodnota, kterou neznáme, ale chceme ji tam mít // výsledná hodnota, která se tam dosadí // výsledek - krom jednoho bitu se všechny další sesadily Při použití příkazu DDRB = DDRB (1<<5); to bude vypadat takto: // předchozí hodnota // hodnota, která se má nastavit // bitový součet // nastavili jsme pátý bit a ostatní jsme ponechali Příkaz DDRB = DDRB (1<<5); lze zkrátit na DDRB = (1<<5);. 7.7 Sesazení bitu zapsání nuly Ze stejného důvodu jako při nastavování bitu použijeme sice složitější zápis, ale bezchybný. Příklad: chceme sesadit pátý bit a ostatní chceme nechat takové, jaké jsou. DDRB = DDRB & ~(1<<5); Vlnka (~) před výrazem v závorce je bitová negace, ampérsand (&) je znak bitového součinu. Nejprve se vyhodnotí výraz v závorce: 26
28 // výraz v~závorce // negace výrazu v závorce // s~výsledkem negace se provede logický součin //s~původní hodnotou v~registru // příklad původní hodnoty // výsledek negace // logický součin // výsledek se oproti původní hodnotě liší jen tím, // že je sesazen pátý bit Příkaz na sesazení bitu lze také zkrátit na DDRB &= ~(1<<5);. 7.8 Příklad pro vstup a výstup Příklad: Napište program, kde nastavíte piny PB0, PB1, PB3, sesadíte piny PC5, PC6, vytvoříte proměnou d a uložíte do ní stav portu D. Řešení: #include <avr/io.h> int main() DDRB = (1<<PB0) (1<<PB1) (1<<PB3); DDRC &= ~((1<<PC5) (1<<PC6)); uint8_t d = PIND; 7.9 Registry časovačů/čítačů Pro řízení motorů nám postačí osmibitový časovač/čítače (č/č0, č/č2). Signál pro servo získáme z kanálů šestnáctibitového č/č1. V registrech jsou bity pojmenovány např.: pátý bit v registru COM01. Můžeme napsat (1<<5), ale raději kvůli přehlednosti budeme psát (1<<COM01). č/č0(datasheet str.68): TCCR0 pro nastavení časovače na PWM TCNT0 aktuální hodnota č/č OCR0 hodnota v porovnávacím registru TIMSK zde můžeme nastavit přerušení po dosažení shody registru OCR0 s registrem TCNT0 nastavením bitu OCIE0, nebo nastavit přerušení při přetečení č/č nastavením bitu TOIE0. TIFR pokud nastala shoda registru OCR0 s registrem TCNT0 nastaví se bit OCF0, pokud přeteče č/č nastaví se bit TOV0, bity se nulují samy po vstupu do obslužné rutiny přerušení, nebo pokud nastavíme na jedničku bit TOV PWM řízení motorů Pro nastavení PWM se podíváme do tabulky na straně 80: Zvolíme mód FastPWM pro tento mód musíme nastavit bity WGM01 a WGM00 v registru TCCR0, nyní se 27
29 podíváme na tabulku 40 na straně 81 a budeme chtít použít mód, kdy se při shodě registrů ORC0 a TCNT0 nastaví na pinu OC0 logická nula a při přetečení se nastaví logická jednička musíme nastavit bit COM01 v registru TCCR0. Teď se podíváme na tabulku 42. V tabulce vidíme různé předděličky CO TO JE, které můžeme použít pro generování PWM. Po dosazení do vzorce na straně 75, kde N je předdělička. Nastavení předděličky bychom měli volit tak, aby frekvence podle vzorce vyšla taková, kterou lidské ucho neslyší (nad 16kHz), ale zase nesmí být větší, něž dokáže zvládnout náš driver CO TO JE(najdeme v datasheetu). Já volil předěličku 64 - výsledná frekvence je kolem 1kHz NEODPOVÍDÁ PŘEDCHOZÍ PODMÍNCE: TCCR0 = (1<<WGM01) (1<<WGM00) (COM01) (1<<CS01) (1<<CS00); č/č2(datasheet str.115): K ovládání č/č2 slouží registry TCCR2, TCNT2, OCR2, TIMSK, TIFR a navíc registr ASSR, ten by nás zajímal, pokud bychom č/č2 asynchronní(tj. nepoužíval by frekvenci krystalu na pinech XTAL1 a XTAL2, ale krystal na pinech TOSC1 a TOSC2). Pro stejné nastavení č/č2 se podíváme na odpovídající tabulky:50(str 126), 52(str 127), 54(str 128) Příkaz bude vypadat takto: TCCR2 = (1<<WGM21) (1<<WGM20) (1<<COM21) (1<<CS22); 7.11 Řízení serva č/č1(datasheet str.86): S č/č1 to bude trochu složitější. Č/č1 má více možných použití, také se dá použít na pwm pro motory, ale my ho použijeme pro řízení servomotoru (serva). Jak se řídí pohyb serva? Servo se řídí logickým signálem (jedničkou) po dobu od 1 ms do 2 ms (často i od 0,5 ms do 2,5 ms), a celková perioda je 20 ms. Podle toho, jak dlouho signál trvá, tak se servo natočí. Tj. pokud budeme chtít servo maximálně natočit na jednu stranu, nastavíme pin, který slouží jako řídící signál pro servo, na logickou jedničku po dobu 1 ms a pak 19 ms logickou nulu a pak zase logickou jedničku, logickou nulu, atd... Pokud budeme chtít servo posunout do druhé krajní polohy, necháme logickou jedničku po dobu 2 ms a logickou nulu po dobu 18 ms. Pokud budeme chtít střední polohu, tak jedničku nastavíme na 1,5 ms a nulu na 18,5 ms. Jestliže budeme potřebovat jiný úhel natočení, nastavíme logickou jedničku na odpovídající dobu. Nastavení č/č1 pro řízení až dvou serv: Registrů, které ovládájí č/č1 je více než u předchozích č/č: TCCR1A, TCCR1B, TCNT1H, TCNT1L, OCR1AH, OCR1AL, OCR1BH, OCR1BL, ICR1H, ICR1L, TIMSK, TIFR Registry označené posledním písmenem H jsou vyšší bajty registru a L nižší bajty registru. Jsou to vlastně šestnáctibitové registry, ke kterým můžeme přistupovat buď jako k dvěma osmibitovým registrům (ICR1L =..., ICR1H =...) nebo jednomu šestnáctibitovému (ICR1 =...). PŘEFORMULOVAT ************* Z tabulky 47 na straně 110 si vybereme mód, který nám vyhovuje: mód 14 - rychlé PWM, z tabulky 45 na straně 109 si vybereme to samé, co u předešlých nastaveních č/č. Z tabulky 48 nastavíme předěličku na 8, protože při dosazení do 28
30 vzorce:,kde TOP je hodnota v registru ICR, tu nastavíme na 40000, při tomto nastavení nám vyjde, že jeden tik č/č trvá 0,5 ms a toho využijeme při ovládání serv. Nastavíme počáteční hodnotu do registrů OCR1A a OCR1B, jde o to, jak budou serva natočena při zahájení programu, je také důležité nastavit piny pro PWM na výstup: TCCR1A = (1<<WGM11) (1<<COM1A1) (1<<COM1B1); TCCR1B = (1<<WGM13) (1<<WGM12) (1<<CS11); ICR1 = 40000; OCR1A = 3000; OCR1B = 3000; DDRD = (1<<PD5) (1<<PD4); 7.12 Přerušení Co je přerušení? Procesor může zvládnout pouze jednu operaci na jeden tik krystalu, postupuje od jednoho příkazu k druhému a nemůže jen tak všeho nechat a věnovat se něčemu jinému, občas je to ale potřeba. Při přerušení procesor všeho nechá a bude se věnovat přerušení, potom co skončí se bude věnovat dál programu tam, kde přestal. Nastavíme přerušení při přetečení časovače: TIMSK = (1<<TOIE1); Obslužná rutina přerušení se píše mimo tělo hlavní funkce a vypadá takto ISR(ZDROJ_PŘERUŠENÍ) PŘÍKAZY; Zdroj přerušení najdeme v datsheetu na straně 43, v našem případě to bude: ISR(TIMER1_OVF_vect) 8 Základy elektroniky Abychom se mohli úspěšně věnovat robotice, musíme znát základní poznatky z elektroniky. Musíme se seznámit se základními pojmy, součástkami a vzorci, které se v elektronice používají. A nemusíme se obávat, těch základních je jenom pár. 8.1 Proud Pokud použijeme vodní model, tak (elektrický) proud je množství vody, které proteče za jednu sekundu 8. Značka: I Jednotka: 1A = 1 ampér 8 Ve skutečnosti je to protečení množství elektronů nebo jiných nosičů el. nábojů s celkovým nábojem 1 Coulomb za sekundu. 29
31 8.2 Napětí Elektrické napětí měříme vždy mezi dvěma body. Můžeme si ho představit jako rozdíl výšek dvou vodních hladin. Z výše položeného jezera (kladné napětí, +) teče voda (el. proud) do níže položeného (zem, nulový potenciál, -). Značka: U Jednotka: 1V = 1 volt 8.3 Odpor DODĚLAT 8.4 Výkon Výkon je definován jako součin napětí a proudu:. Značka: P Jednotka: 1W = 1 watt P = U I 8.5 Výpočet tepelného výkonu (ztrátového) Na součástkách, na kterých je úbytek napětí a kterými protéká proud, vznikají tepelné ztráty. Příklad 1: Na rezistoru je úbytek napětí 3, 6V a protéká jím 240mA. Jaký je tepelný ztrátový výkon? P = U I = 3, 6V 0, 24A = 0, 864W = 864mW Ztráty na rezistoru činí 864W, a proto musíme volit rezistor, který zvládne větší výkon, tj. minimálně na 1W. Příklad 2: Diodou 1N4148 bude procházet 100mA, při tomto proudu bude úbytek napětí na diodě 1V. Nezničíme diodu 1N4148? P = U I = 1V 0, 1A = 0, 1W = 100mW Diodu nezničíme, protože je vyráběná na celkový výkon 500mW. Příklad 3: Na stabilizátor L7805 přivádím 12V, stabilizátor mi vytváří 5V stabilizovaného napětí a odebírám z něho 250mA. Jaký tepelný výkon bude potřeba uchladit? P = U I = (12V 5V ) 0, 25A = 1, 75W Tepelné ztráty na stabilizátoru budou 1, 75W 9. 9 Ve vzorci bylo použito 12V-5V, je to protože na stabilizátoru ubyde 7V, abychom se dostali na požadovaných 5V. 30
32 8.6 Dioda Dioda je velmi užitečná součástka, která usměrňuje elektrický proud. To znamená, že pokud ji zapojíme do elektrického obvodu, tak zajistí, že proud bude téct pouze jedním směrem. Proto budeme diodu používat jako ochranu před přepólování tak, že ji připojíme na kladné napětí (znaménko +) nožičkou bez proužku a nožičku, ke které je blíže proužek tu napojíme na část obvodu, kterou budeme chtít napájet. Zem nebo také 0 V (znaménko -) připojíme normálně k obvodu, který budeme chtít napájet. Na diodě vzniká úbytek napětí, se kterým musíme počítat při návrhu obvodu. Tak například pokud připojím na diodu s úbytkem napětí 0,6 V připojím 12 V, tak za diodou bude napětí 11,4 V. Při výběru diody se musíme podívat do datasheetu 10 a zjistit parametry diody: 1. Maximální napětí, na které diodu mohu připojit Maximální proud Maximální výkon Úbytek napětí 14 Ze začátku nám bude stačit, pokud budeme používat diody: 1N4148 s parametry: Maximální napětí V Maximální proud ma Maximální výkon mw Úbytek napětí - 1,8 V 1N4007 s parametry: Maximální napětí V Maximální proud - 1 A Maximální výkon - 3 W Úbytek napětí - 1,1 V 10 Datasheet je dokumentace k dané součástce. Můžeme je sehnat například na stránce 11 Ang.:Peak Repetitive Reverse Voltage 12 Ang.:Continuous Forward Current 13 Ang.:Total Power Dissipation 14 Ang.:Forward Voltage 31
ROBOTIKA ZÁKLADY. verze 0.4 ze dne 5.9.2012. Rudolf Hlaváček a kolektiv
ROBOTIKA ZÁKLADY verze 0.4 ze dne 5.9.2012 Rudolf Hlaváček a kolektiv Obsah 1 Úvod.................................. 4 1.1 Týmy pro stavbu robotů....................... 4 1.2 Co budeme stavět přehled kapitol.................
LED_007.c Strana: 1/5 C:\Michal\AVR\Výukové programy\archiv\ Poslední změna: 4.10.2011 8:01:48
LED_007.c Strana: 1/5 Nyní již umíme používat příkazy k větvení programu (podmínky) "if" a "switch". Umíme také rozložit program na jednoduché funkce a používat cyklus "for". Co se týče cyklů, zbývá nám
1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b
Výrazy a operátory i = 2 i = 2; to je výraz to je příkaz 4. Operátory Unární - unární a unární + Např.: +5-5 -8.345 -a +b - unární ++ - inkrement - zvýší hodnotu proměnné o 1 - unární -- - dekrement -
for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }
5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu
1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:
1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.
Algoritmizace a programování
Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech
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
Základní zapojení MCU do el. obvodu. Zdroje taktovacího kmitočtu. IMTEE Přednáška č. 7. reset, oscilátor, blokování napájení
Základní zapojení MCU do el. obvodu reset, oscilátor, blokování napájení Zdroje taktovacího kmitočtu externí krystal externí nízkofrekvenční krystal (32,768 khz) externí RC oscilátor interní kalibrovaný
Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false
Logické operace Datový typ bool může nabýt hodnot: o true o false Relační operátory pravda, 1, nepravda, 0, hodnoty všech primitivních datových typů (int, double ) jsou uspořádané lze je porovnávat binární
Ú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)
Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15
Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové
5 Přehled operátorů, příkazy, přetypování
5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování
6 Příkazy řízení toku
6 Příkazy řízení toku Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům pro řízení toku programu. Pro všechny tyto základní
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
1.5.2 Číselné soustavy II
.. Číselné soustavy II Předpoklady: Př. : Převeď do desítkové soustavy čísla. a) ( ) b) ( ) 4 c) ( ) 6 = + + + = 7 + 9 + = a) = 4 + 4 + 4 = 6 + 4 + = 9 b) 4 = 6 + 6 + 6 = 6 + 6 + = 6 + + = 69. c) 6 Pedagogická
Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty
Data v počítači Informační data (elementární datové typy) Logické hodnoty Znaky Čísla v pevné řádové čárce (celá čísla) v pohyblivé (plovoucí) řád. čárce (reálná čísla) Povelová data (instrukce programu)
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
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.
MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY
MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY Stručný úvod do programování v jazyce C 1.díl České vysoké učení technické Fakulta elektrotechnická A1B14MIS Mikroprocesory pro výkonové systémy 06 Ver.1.10 J. Zděnek,
7 = 3 = = Učivo Vysvětlení Př. + pozn. Zlomek = vyjádření části celku 3 část snědla jsem 3 kousky
0 Učivo Vysvětlení Př. + pozn. Zlomek vyjádření části celku část snědla jsem kousky celek a pizza byla rozdělena na kousky Pojem zlomek Vyjádření zlomku Základní tvar: čitatel a jmenovatel jsou nesoudělná
Rozšiřování = vynásobení čitatele i jmenovatele stejným číslem různým od nuly
Rozšiřování a krácení zlomků Rozšiřování vynásobení čitatele i jmenovatele stejným číslem různým od nuly rozšířený zlomek vznikl tak, že jsme čitatel i jmenovatel původního zlomku vynásobili číslem rozšířený
ŘEŠENÍ KVADRATICKÝCH A ZLOMKOVÝCH NEROVNIC V ŠESTI BODECH
(Tento text je součástí výkladu k definičním oborům, tam najdete další příklady a pokud chcete část tohoto textu někde použít, můžete čerpat ze stažené kompletní verze definičních oborů ve formátu.doc.)
ETC Embedded Technology Club setkání 3, 3B zahájení třetího ročníku
ETC Embedded Technology Club setkání 3, 3B 9.10. 2018 zahájení třetího ročníku Katedra měření, Katedra telekomunikací,, ČVUT- FEL, Praha doc. Ing. Jan Fischer, CSc. ETC club, 3, 3B 23.10.2018, ČVUT- FEL,
Č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.
Způsoby realizace této funkce:
KOMBINAČNÍ LOGICKÉ OBVODY U těchto obvodů je výstup určen jen výhradně kombinací vstupních veličin. Hodnoty výstupních veličin nezávisejí na předcházejícím stavu logického obvodu, což znamená, že kombinační
VY_32_INOVACE_CTE_2.MA_04_Aritmetické operace v binární soustavě Střední odborná škola a Střední odborné učiliště, Dubno Ing.
Číslo projektu Číslo materiálu Název školy Autor Tematická oblast Ročník CZ.1.07/1.5.00/34.0581 VY_32_INOVACE_CTE_2.MA_04_Aritmetické operace v binární soustavě Střední odborná škola a Střední odborné
Aritmetické operace a obvody pro jejich realizaci
Kapitola 4 Aritmetické operace a obvody pro jejich realizaci 4.1 Polyadické číselné soustavy a jejich vlastnosti Polyadické soustavy jsou určeny přirozeným číslem z, kterému se říká základ nebo báze dané
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é
Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:
Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury
ČÍSELNÉ SOUSTAVY. Číselnou soustavu, která pro reprezentaci čísel využívá pouze dvou číslic, nazýváme soustavou dvojkovou nebo binární.
Číselné soustavy V běžném životě používáme soustavu desítkovou. Desítková se nazývá proto, že má deset číslic 0 až 9 a v jednom řádu tak dokáže rozlišit deset různých stavů. Mikrokontroléry (a obecně všechny
ZLOMKY A RACIONÁLNÍ ČÍSLA. Pojem zlomku. Zlomek zápis části celku. a b. a je část, b je celek, zlomková čára
9... ZLOMKY A RACIONÁLNÍ ČÍSLA Pojem zlomku Zlomek zápis části celku a b a je část, b je celek, zlomková čára Každé číslo zapsané zlomkem lze vyjádřit jako číslo desetinné 7 Zlomková čára je dělící čára
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
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.
ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ. MEII - 3.2.3 Měření na pasivních součástkách
Projekt: ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ Téma: MEII - 3.2.3 Měření na pasivních součástkách Obor: Mechanik elektronik Ročník: 2. Zpracoval(a): Bc. Josef Mahdal Střední průmyslová škola Uherský Brod, 2010
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek
8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 1/41 Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41 Základní příkazy
Instrukce: Jednotlivé části nejdou přesně po sobě, jak jsme se učili, je to shrnutí.
Instrukce: Vytiskněte si tenhle přehled, vybarvěte důležité části (zvýrazňovačkou, pastelkami) tak, aby jste se rychle orientovali. Při počítání příkladů jej mějte před sebou! a dívejte se do něj. Možná
2.4 Cykly 2. ZÁKLADY JAZYKA C
Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv. copyright. To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího
MQL4 COURSE. By Coders guru www.forex-tsd.com. -4 Operace & Výrazy
MQL4 COURSE By Coders guru www.forex-tsd.com -4 Operace & Výrazy Vítejte ve čtvrté lekci mého kurzu MQL4. Předchozí lekce Datové Typy prezentovaly mnoho nových konceptů ; Doufám, že jste všemu porozuměli,
Číselné soustavy a převody mezi nimi
Číselné soustavy a převody mezi nimi Základní požadavek na počítač je schopnost zobrazovat a pamatovat si čísla a provádět operace s těmito čísly. Čísla mohou být zobrazena v různých číselných soustavách.
Vstupy a výstupy základní sady modulů
Vstupy a výstupy základní ------------------------------------------------------------------------------------------------------------------------ Vstupy a výstupy základní moduly a jejich vstupy a výstupy.
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
10. Měření. Chceme-li s měřícím přístrojem cokoliv dělat, je důležité znát jeho základní napěťový rozsah, základní proudový rozsah a vnitřní odpor!
10. Měření V elektrotechnice je měření základní a zásadní činností každého, kdo se jí chce věnovat. Elektrika není vidět a vše, co má elektrotechnik k tomu, aby zjistil, co se v obvodech děje, je měření.
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...
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ě
Popis vývodů desek, jejich zapojování a spárování robota
Popis vývodů desek, jejich zapojování a spárování robota ----------------------------------------------------------------------------------------------------------------- Popis desky procesoru, LED, tlačítek
Laboratorní zdroj - 6. část
Laboratorní zdroj - 6. část Publikované: 20.05.2016, Kategória: Silové časti www.svetelektro.com V tomto článku popíšu způsob, jak dojít k rovnicím (regresní funkce), které budou přepočítávat milivolty
Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo
Operátory, výrazy Tomáš Pitner, upravil Marek Šabo Operátor "Znaménko operace", pokyn pro vykonání operace při vyhodnocení výrazu. V Javě mají operátory napevno daný význam, nelze je přetěžovat jako v
1.6 Operační zesilovače II.
1.6 Operační zesilovače II. 1.6.1 Úkol: 1. Ověřte funkci operačního zesilovače ve funkci integrátoru 2. Ověřte funkci operačního zesilovače ve funkci derivátoru 3. Ověřte funkci operačního zesilovače ve
Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7
Pascal Katedra aplikované kybernetiky Ing. Miroslav Vavroušek Verze 7 Proměnné Proměnná uchovává nějakou informaci potřebnou pro práci programu. Má ve svém oboru platnosti unikátní jméno. (Připadne, musí
Úvod do mobilní robotiky NAIL028
md at robotika.cz http://robotika.cz/guide/umor08/cs 6. října 2008 1 2 Kdo s kým Seriový port (UART) I2C CAN BUS Podpora jednočipu Jednočip... prostě jenom dráty, čti byte/bit, piš byte/bit moduly : podpora
EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI
EVROPSKÝ SOCIÁLNÍ FOND Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI Úvod do PHP PHP Personal Home Page Hypertext Preprocessor jazyk na tvorbu dokumentů přípona: *.php skript je součást HTML stránky!
Na trh byl uveden v roce 1971 firmou Signetics. Uvádí se, že označení 555 je odvozeno od tří rezistorů s hodnotou 5 kω.
Časovač 555 NE555 je integrovaný obvod používaný nejčastěji jako časovač nebo generátor různých pravoúhlých signálů. Na trh byl uveden v roce 1971 firmou Signetics. Uvádí se, že označení 555 je odvozeno
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
9. Robot pro Robotický den 2012
Předmět Jméno Ročník BROB Základy robotiky Pavel Svoboda, Luboš Tlustoš Datum 2. 6.5.2012 Kontroloval Hodnocení Dne Úloha 9. Robot pro Robotický den 2012 Zadání: Sestavte tým, jehož úkolem bude zúčastnit
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
Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí
02 Jazyk C - je imperativní říkáme, co se má udělat, voláme příkazy - další imperativní jazyky: Pascal, Java, C/C++ apod. - na rozdíl od jazyků deklarativních např. Prolog, Haskell, Scheme, Lisp (funkcionální
Rezonanční řízení s regulací proudu
1 Rezonanční řízení s regulací proudu Ing. Ladislav Kopecký, 15.12. 2013 Provozování střídavého motoru v režimu sériové rezonance vyžaduje nižší napětí než napájení stejného motoru ze sítě 230V/50Hz. To
Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr)
Operátory Základy programování 1 Martin Kauer (Tomáš Kühr) Organizační poznámky Formátujte kód přehledně! Pomůžete sobě i mně. Spusťte si vaše programy a zkuste různé vstupy! Pokud program nedává správné
PRESTO. USB programátor. Uživatelská příručka
PRESTO USB programátor Uživatelská příručka OBSAH 1. PRESTO 3 1.1. Použití 3 2. Obsah dodávky 3 3. Instalace 3 3.1. Instalace ovladačů 3 3.2. Instalace programu UP 4 4. Popis programovacího konektoru 5
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
FILIP SCHWANK. Katedra měření, listopad 2017
FILIP SCHWANK Katedra měření, listopad 2017 CO JE TO MBED Knihovna pro programování mikrokontrolérů Jazyk C++ Jednoduché funkce dělají složité věci Od řidiče auta až po jeho mechanika JAK NA TO Registrovat
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
Architektura počítačů Logické obvody
Architektura počítačů Logické obvody http://d3s.mff.cuni.cz/teaching/computer_architecture/ Lubomír Bulej bulej@d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics 2/36 Digitální
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
Č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á
Programovací jazyk Pascal
Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce
Architektura počítačů Logické obvody
Architektura počítačů Logické obvody http://d3s.mff.cuni.cz/teaching/computer_architecture/ Lubomír Bulej bulej@d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Digitální
Megarobot.cz Senzory Jan Stránský. Senzory. Co je to senzor Jednotlivé senzory Hit senzor senzor nárazu Modul fotorezistoru...
Senzory Obsah Co je to senzor... 2 Jednotlivé senzory... 2 Hit senzor senzor nárazu... 2 Modul fotorezistoru... 2 Tlačítko... 3 Teplotní senzor... 3 Senzor magnetismu... 3 Infračervený senzor... 4 Infračervený
LC oscilátory s transformátorovou vazbou
1 LC oscilátory s transformátorovou vazbou Ing. Ladislav Kopecký, květen 2017 Základní zapojení oscilátoru pro rezonanční řízení motorů obsahuje dva spínače, které spínají střídavě v závislosti na okamžité
Fz =a z + a z +...+a z +a z =
Polyadické číselné soustavy - převody M-místná skupina prvků se z-stavovou abecedou umožňuje zobrazit z m čísel. Zjistíme, že stačí vhodně zvolit číslo m, abychom mohli zobrazit libovolné číslo menší než
Title: IX 6 11:27 (1 of 6)
PŘEVODNÍKY ANALOGOVÝCH A ČÍSLICOVÝCH SIGNÁLŮ Převodníky umožňující transformaci číslicově vyjádřené informace na analogové napětí a naopak zaujímají v řídícím systému klíčové postavení. Značná část měřených
6. Příkazy a řídící struktury v Javě
6. Příkazy a řídící struktury v Javě Příkazy v Javě Příkazy v Javě Řídicí příkazy (větvení, cykly) Přiřazovací příkaz = Řízení toku programu (větvení, cykly) Volání metody Návrat z metody - příkaz return
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í
STABILIZACE PROUDU A NAPĚTÍ
STABILIZACE PROUDU A NAPĚTÍ Václav Piskač, Brno 2012 K elektrickým experimentům je vhodné mít dostatečně kvalitní napájecí zdroje. Na spoustu věcí postačí plochá baterie, v případě potřeby jsou v obchodech
Program "Světla" pro mikropočítač PMI-80
Program "Světla" pro mikropočítač PMI-80 Dokument věnovaný mikropočítači PMI-80, jeho programování a praktickým ukázkám. Verze dokumentu:. Autor: Blackhead Datum: rok 1997, 4.3.004 1 Úvod Tento program
Výroková logika II. Negace. Již víme, že negace je změna pravdivostní hodnoty výroku (0 1; 1 0).
Výroková logika II Negace Již víme, že negace je změna pravdivostní hodnoty výroku (0 1; 1 0). Na konkrétních příkladech si ukážeme, jak se dají výroky negovat. Obecně se výrok dá negovat tak, že před
Podívejme se na ně z pohledu řešení elektrických obvodů a vysvětleme si je na jednoduchých praktických příkladech.
9. Kirchhoffovy zákony (německý fyzik Gustav Kirchhoff (1847)) řeší základní vztahy v elektrických obvodech. První Kirchhoffův zákon říká, že součet proudů do uzlu tekoucích je roven nule. Druhý Kirchhoffův
Neřízené usměrňovače reálné vlastnosti
Počítačové cvičení BNEZ 1 Neřízené usměrňovače reálné vlastnosti Úkol 1: Úkol 2: Úkol 3: Úkol 4: Úkol 5: Pomocí programu OrCAD Capture zobrazte voltampérovou charakteristiku diody 1N4007 pro rozsah napětí
ASYNCHRONNÍ ČÍTAČE Použité zdroje:
ASYNCHRONNÍ ČÍTAČE Použité zdroje: Antošová, A., Davídek, V.: Číslicová technika, KOPP, České Budějovice 2007 http://www.edunet.souepl.cz www.sse-lipniknb.cz http://www.dmaster.wz.cz www.spszl.cz http://mikroelektro.utb.cz
Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory
Jazyk C Program v jazyku C má následující strukturu: Direktivy procesoru Globální definice (platné a známé v celém programu) Funkce Hlavička funkce Tělo funkce je uzavřeno mezi složené závorky { Lokální
Projekt BROB B13. Jízda po čáře pro reklamní robot. Vedoucí projektu: Ing. Tomáš Florián
FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCHTECHNOLOGIÍ ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY Projekt BROB 2013 B13. Jízda po čáře pro reklamní robot Vedoucí projektu: Ing. Tomáš Florián Autoři práce: Martin
Číselné soustavy. Binární číselná soustava
12. Číselné soustavy, binární číselná soustava. Kódování informací, binární váhový kód, kódování záporných čísel. Standardní jednoduché datové typy s pevnou a s pohyblivou řádovou tečkou. Základní strukturované
PK Design. MB-ATmega128 v2.0. Uživatelský manuál. Základová deska modulárního vývojového systému MVS. Verze dokumentu 1.0 (23.09.
MB-ATmega128 v2.0 Základová deska modulárního vývojového systému MVS Uživatelský manuál Verze dokumentu 1.0 (23.09.2004) Obsah 1 Upozornění... 3 2 Úvod... 4 2.1 Vlastnosti základové desky...4 2.2 Vlastnosti
Programátor PICPGR3 pod Windows XP. Martin Kákona, Petr Borsodi, Milan Horkel
Programátor PICPGR3 pod Windows XP Martin Kákona, Petr Borsodi, Milan Horkel Programátor PICPGR3 je možné úspěšně použít i s ovládacím programem WinPic pod operačním systémem Windows XP. Zde je návod,
KOMBINAČNÍ LOGICKÉ OBVODY
Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/03.0009 KOMBINAČNÍ LOGICKÉ OBVODY U těchto obvodů je vstup určen jen výhradně kombinací vstupních veličin. Hodnoty
PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.
PHP - úvod Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky. Klíčové pojmy: PHP, webový prohlížeč, HTTP, FTP Základní pojmy služba WWW = 1990 první prototyp serveru, od roku 1994
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á
Základy algoritmizace a programování
Základy algoritmizace a programování Přednáška 1 Olga Majlingová Katedra matematiky, ČVUT v Praze 21. září 2009 Obsah Úvodní informace 1 Úvodní informace 2 3 4 Organizace předmětu Přednášky 1. 5. Základní
V následujícím obvodě určete metodou postupného zjednodušování hodnoty zadaných proudů, napětí a výkonů. Zadáno: U Z = 30 V R 6 = 30 Ω R 3 = 40 Ω R 3
. STEJNOSMĚNÉ OBVODY Příklad.: V následujícím obvodě určete metodou postupného zjednodušování hodnoty zadaných proudů, napětí a výkonů. Z 5 5 4 4 6 Schéma. Z = 0 V = 0 Ω = 40 Ω = 40 Ω 4 = 60 Ω 5 = 90 Ω
[Otázky Autoelektrikář + Mechanik elektronických zařízení 1.část] Na rezistoru je napětí 25 V a teče jím proud 50 ma. Rezistor má hodnotu.
[Otázky Autoelektrikář + Mechanik elektronických zařízení 1.část] 04.01.01 Na rezistoru je napětí 5 V a teče jím proud 25 ma. Rezistor má hodnotu. A) 100 ohmů B) 150 ohmů C) 200 ohmů 04.01.02 Na rezistoru
LEKCE 6. Operátory. V této lekci najdete:
LEKCE 6 Operátory V této lekci najdete: Aritmetické operátory...94 Porovnávací operátory...96 Operátor řetězení...97 Bitové logické operátory...97 Další operátory...101 92 ČÁST I: Programování v jazyce
Inovace bakalářského studijního oboru Aplikovaná chemie http://aplchem.upol.cz
Inovace bakalářského studijního oboru Aplikovaná chemie http://aplchem.upol.cz CZ.1.07/2.2.00/15.0247 Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. Tvorba
ČÍSELNÉ SOUSTAVY PŘEVODY
ČÍSELNÉ SOUSTAVY V každodenním životě je soustava desítková (decimální, dekadická) o základu Z=10. Tato soustava používá číslice 0, 1, 2, 3, 4, 5, 6, 7, 8 a 9, není však vhodná pro počítače nebo číslicové
Konferenční zařízení. Cíl projektu. Vybavení. Jak jsem postupoval. Projekt Nekoř 2009 Jan Sixta, jan.16@seznam.cz
Konferenční zařízení Projekt Nekoř 2009 Jan Sixta, jan.16@seznam.cz Cíl projektu Cílem projektu bylo vytvořit zařízení zvané Konferenční časomíra. Zařízení by mělo umožňovat (nejen) přednášejícím na konferencích
Operační zesilovač (dále OZ)
http://www.coptkm.cz/ Operační zesilovač (dále OZ) OZ má složité vnitřní zapojení a byl původně vyvinut pro analogové počítače, kde měl zpracovávat základní matematické operace. V současné době je jeho
Číselné vyjádření hodnoty. Kolik váží hrouda zlata?
Čísla a logika Číselné vyjádření hodnoty Au Kolik váží hrouda zlata? Dekadické vážení Když přidám osmé závaží g, váha se převáží => závaží zase odeberu a začnu přidávat závaží x menší 7 závaží g 2 závaží
Řešení úloh z TSP MU SADY S 1
Řešení úloh z TSP MU SADY S 1 projekt RESENI-TSP.CZ úlohy jsou vybírány z dříve použitých TSP MU autoři řešení jsou zkušení lektoři vzdělávací agentury Kurzy-Fido.cz Masarykova univerzita nabízí uchazečům
Nerovnice a nerovnice v součinovém nebo v podílovém tvaru
Variace 1 Nerovnice a nerovnice v součinovém nebo v podílovém tvaru Autor: Mgr. Jaromír JUŘEK Kopírování a jakékoliv další využití výukového materiálu je povoleno pouze s uvedením odkazu na www.jarjurek.cz
Assembler - 5.část. poslední změna této stránky: Zpět
1 z 5 19.2.2007 7:52 Assembler - 5.část poslední změna této stránky: 9.2.2007 1. Pseudoinstrukce a direktivy Zpět Kromě instrukcí můžete v Assembleru psát také další konstrukce, které se obšem nepřekládají