MIKROKONTROLÉRY PIC PRO POKROČILÉ

Podobné dokumenty
APLIKACE MIKROKONTROLÉRŮ PIC32MX

MIKROPROCESOROVÁ TECHNIKA 9 Událostní systém 9.1 Události Síť ERN Časování událostí Filtrace

PROGRAMOVÁNÍ V JAZYCE C V PŘÍKLADECH 11 Dynamické datové struktury 11.1 Spojové struktury Příklad PROG_

MIKROKONTROLÉRY PIC BEZ PŘEDCHOZÍCH ZNALOSTÍ

ALGORITMY ČÍSLICOVÉHO ZPRACOVÁNÍ SIGNÁLŮ

OBJEKTOVÉ PROGRAMOVÁNÍ V C++ V PŘÍKLADECH 8 Proudová knihovna 8.1 Hierarchie proudů Standardně zavedené proudy

APLIKACE ALGORITMŮ ČÍSLICOVÉHO ZPRACOVÁNÍ SIGNÁLŮ 1. DÍL


ELEKTRONICKÉ PRVKY 7 Výkonové a spínací aplikace tranzistorů 7.1 Ztrátový výkon a chlazení součástky První a druhý průraz bipolárního


4 DIELEKTRICKÉ OBVODY ZÁKLADNÍ POJMY DIELEKTRICKÝCH OBVODŮ Základní veličiny a zákony Sériový a paralelní


Komerèní využití stavebních návodù je povoleno jen s písemným souhlasem autora a nakladatelství. Soubory na CD ROM mající pøímo vztah ke knize, které


Jan Humlhans NÁBOJOVÉ PUMPY funkce, pøehled a použití Bez pøedchozího písemného svolení nakladatelství nesmí být kterákoli èást kopírována nebo rozmno

Podrobný obsah CHARAKTERISTIKA A POROVNÁNÍ ØADY PIC16F87X A PIC16F87XA TYPY POUZDER A PØIØAZENÍ VÝVODÙ PIC16F87X TYPY POUZDER A PØIØAZENÍ


Autor by chtìl podìkovat všem svým spolupracovníkùm a kolegùm, kteøí mu pomohli s pøípravou textu. K vydání knihy pøispìla firma Newport Electronics s


Gergelitsová, Holan: Zlatý řez pravítkem a kružítkem

GENEROVÁNÍ ZVUKŮ POMOCÍ MIKROKONTROLÉRŮ

Publikace prezentuje nìkteré poznatky z obsáhlé oblasti analogových soustav, které v poslední dobì prodìlávají rozvoj. Z toho dùvodu ani nemùže podat

David Matoušek ÈÍSLICOVÁ TECHNIKA základy konstruktérské praxe Bez pøedchozího písemného svolení nakladatelství nesmí být kterákoli èást kopírována ne





Základy ultrazvuku A. ZÁKLADY ULTRAZVUKU 10



Podìkování: Výsledkù publikovaných v této knize bylo dosaženo také za podpory projektù GAÈR 101/06/P108 Výzkum simulaèního a experimentálního modelová



Přednáška A3B38MMP. Bloky mikropočítače vestavné aplikace, dohlížecí obvody. 2015, kat. měření, ČVUT - FEL, Praha J. Fischer






Monografie poskytuje v pøehledné a praktické formì znalosti a výpoèetní nástroje pro modelování šíøení rádiových vln v zástavbì, tedy vnì i uvnitø bud

Microchip. PICmicro Microcontrollers



Mikrokontroléry. Doplňující text pro POS K. D. 2001






Jan Hájek ELEKTRONICKÉ HLEDAÈE Bez pøedchozího písemného svolení nakladatelství nesmí být kterákoli èást kopírována nebo rozmnožována jakoukoli formou

Přednáška - Čítače. 2013, kat. měření, ČVUT - FEL, Praha J. Fischer. A3B38MMP, 2013, J.Fischer, ČVUT - FEL, kat. měření 1

Translation from the English language edition: Passing the marker Understanding the New Millennium Energy Copyright 2000 Lee Carroll All Rights Reserv


Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Roman Neruda a Tomáš Holan C++ BUILDER V PØÍKLADECH Bez pøedchozího písemného svolení nakladatelství nesmí být kterákoli èást kopírována nebo rozmnožo

Tato kniha popisuje výchozí stanoviska psychotroniky jako potenciální vìdní disciplíny Tvoøí ucelenou pracovní hypotézu pro realizaci základního výzku



Ladislav Szántó: Maxwellovy rovnice, 2. vydání


Mikropočítačová vstupně/výstupní jednotka pro řízení tepelných modelů. Zdeněk Oborný



Zadání semestrálního projektu PAM


Praktické úlohy- 2.oblast zaměření


Jízda po čáře pro reklamní robot



9. Rozšiřující desky Evb_Display a Evb_keyboard


PŘÍLOHY. PRESTO USB programátor

Modul LCD displeje se čtyřmi tlačítky. Milan Horkel

David Matoušek, Bohumil Brtík PROGRAMOVÁNÍ MIKROKONTROLÉRÙ S JÁDREM 8051 V JAZYCE C Názoré pøíklady a fukèí programy pro AT89S52 Bez pøedchozího písem



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.





A0M38SPP - Signálové procesory v praxi - přednáška 10 2

Uživatelská příručka

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

České vysoké učení technické v Praze Fakulta elektrotechnická. Katedra měření. Dokumentace. Rotační enkodér

Zadání semestrálního projektu


VII Malý univerzální ovladač - MiniMaus

PVKpro vývojový kit s programátorem pro mikrokontrolér PIC16F84 Připojení k PC: paralelní port Uživatelská příručka

FVZ K13138-TACR-V004-G-TRIGGER_BOX

PIC PROGRAMÁTOR Milan Obrtlílk 4. ročník SŠPH Uh. Hradiště

ixport RS I16O8 Inteligentní modul

FEL ČVUT Praha. Semestrální projekt předmětu X31SCS Struktury číslicových systémů. Jan Kubín


FILIP SCHWANK. Katedra měření, listopad 2017

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

UniPi 1.1 Lite Technologická dokumentace

Modul. Vlastnosti. Odběr řídicí část. výstupy 0,5A. velikost 6M

Témata profilové maturitní zkoušky

Transkript:

David Matoušek MIKROKONTROLÉRY PIC pro pokroèilé PIC16F628A Praha 2017

David Matoušek Mikrokontroléry PIC pro pokroèilé Recenzent Bohumil Brtník Bez pøedchozího písemného svolení nakladatelství nesmí být kterákoli èást kopírována nebo rozmnožována jakoukoli formou (tisk, fotokopie, mikrofilm nebo jiný postup), zadána do informaèního systému nebo pøenášena v jiné formì èi jinými prostøedky. Autor a nakladatelství nepøejímají záruku za správnost tištìných materiálù. Pøedkládané informace jsou zveøejnìny bez ohledu na pøípadné patenty tøetích osob. Nároky na odškodnìní na základì zmìn, chyb nebo vynechání jsou zásadnì vylouèeny. Všechny registrované nebo jiné obchodní známky použité v této knize jsou majetkem jejich vlastníkù. Uvedením nejsou zpochybnìna z toho vyplývající vlastnická práva. Veškerá práva vyhrazena David Matoušek, 2017 Nakladatelství BEN odborná literatura, Vìšínova 5, Praha 10 David Matoušek: Mikrokontroléry PIC pro pokroèilé BEN odborná literatura, Praha 2017 1. vydání ISBN 978-80-7300-549-8 (tištìná kniha) ISBN 978-80-7300-550-4 (elektronická kniha v PDF)

Předmluva Kniha je zaměřena na popis pokročilejších periferií mikrokontrolérů PIC16F628A a pokročilejších možností programování v jazyce C. Navazuje na knihu Mikrokontroléry PIC bez předchozích znalostí [1], ve které byly popsány základní periferie společně se základy jazyka C. První kapitola je věnována popisu komunikace řádkového LCD modulu včetně výkladu realizace řídicích funkcí, sestavení knihovny těchto funkcí označené jako MLCD (používá se v dalších příkladech) a použití funkce printf pro výstup na LCD modul. Druhá kapitola popisuje jednotku Timer0. Tato jednotka je použita pro měření kmitočtu, jsou ukázány možnosti automatického přepínání předděličky a pomocného počítadla přetečení pro dynamickou úpravu měřicího rozsahu. Též je předvedeno měření odporu mezipřevodem na kmitočet. Třetí kapitola ukazuje použití jednotek Timer1 a CCP1. Příklady používají jednotku Timer1 jako časovač pro odměr intervalu 0,5 s, generátor PWM signálu a speciální událostní spouštěč (režim compare). Čtvrtá kapitola představuje softwarovou implementaci sběrnice I 2 C. Po úvodním popisu sběrnice I 2 C a použitého obvodu MCP23008 (expandér pro 8 vývodů) je zařazen výklad práce s ukazateli, který je nutný pro pochopení realizace funkcí s výstupními parametry. Následně je realizována knihovna funkcí pro sběrnici I 2 C označená jako I2C. Pomocí této knihovny a expandéru MI2CEXP je nejdříve ovládán přípravek M8LED a poté přípravek MLEDSW. Nakonec je knihovna I2C použita pro řízení přípravku MLCD, což je klíčovým úkolem celé této kapitoly. Na závěr je pak ukázáno použití jednotky CCP1 v režimu Capture. Pátá kapitola popisuje omezení funkce vývodů portů daná zabudovanými periferiemi mikrokontroléru. Dále je popsáno praktické řešení ovládání maticové klávesnice realizované přípravkem MMATKBD a rotačního spínače EC11 připojeného na přípravek MSVORKY. Jsou diskutovány vstupy vnějšího přerušení INT0/RB0 a Input Change (RB7 až RB4). Příklady použití vstupů vnějšího přerušení jsou zaměřeny na obsluhu rotačního spínače a počítačové klávesnice s konektorem PS/2 (mini DIN 6). Vzhledem k rozdílným rychlostem komunikace mikrokontroléru s počítačovou klávesnicí a LCD displejem připojeným přes I 2 C je též pozornost věnována výkladu implementace datové struktury fronta. Šestá kapitola probírá pokročilé možnosti programování v jazyce C. Probrány jsou datové typy struct, bitové pole, union. Jsou též zařazeny pokročilejší příklady obsluhy počítačové klávesnice s konektorem PS/2 pro editaci údaje na LCD. Dále je vysvětleno použití operátoru sizeof(), příkazů switch a break a funkce atoi. Kapitola končí ukázkou automatického generování souboru s nastavením konfiguračních bitů mikrokontroléru. Sedmá kapitola je věnována pokročilým možnostem mikrokontroléru PIC16F628A. Jedná se o doplnění popisu konfiguračních bitů a konfigurace oscilátoru z [1], popis zdrojů resetu a přidružených jednotek (POR, PWRT, OST, BOR), popis jednotky WDT, režimu Sleep a datové paměti E 2 PROM. Příklady ukazují použití dvourychlostního režimu interního RC oscilátoru, použití režimu Sleep společně s jednotkou WDT a použití datové paměti E 2 PROM. V příloze jsou uvedeny podklady pro výrobu upravené verze přípravku MLCD pod označením MLCDXL. Přehled uváděných příkladů: PROG_01 výklad funkcí pro řízení řádkového LCD, PROG_02 knihovna funkcí MLCD včetně použití funkce printf, PROG_03 měření kmitočtu pomocí jednotky Timer0 s automatickým přepínáním předděličky, PROG_04 měření kmitočtu pomocí jednotky Timer0 s počítáním přetečení, PROG_05 měření kmitočtu pomocí jednotky Timer0 s počítáním přetečení a odměrem času pomocí jednotky Timer2, PROG_06 měření odporu mezipřevodem na kmitočet, i

PROG_07 měření kmitočtu pomocí Timer0 s odměrem časového intervalu pomocí Timer1, PROG_08 pulzně-šířkový modulátor vytvořený pomocí jednotek Timer1 a CCP1, PROG_09 speciální událostní spouštěč vytvořený pomocí jednotek Timer1 a CCP1, PROG_10 8bitový expandér výstupů pro přípravek M8LED s obvodem MCP23008 připojeným na sběrnici I 2 C, PROG_11 kombinovaný režim vstupů/výstupů pro přípravek MLEDSW s obvodem MCP23008 připojeným na sběrnici I 2 C, PROG_12 připojení LCD modulu přes sběrnici I 2 C, PROG_13 použití jednotky CCP1 v režimu Capture pro měření doby trvání záporného impulzu (log. 0), PROG_14 základní obsluha maticové klávesnice, PROG_15 základní obsluha rotačního spínače, PROG_16 obsluha rotačního spínače pomocí přerušení Input Change, PROG_17 základní obsluha klávesnice PS/2, PROG_18 zobrazení písmen a číslic zadávaných z klávesnice PS/2, PROG_19 editace textu na LCD pomocí klávesnice PS/2, PROG_20 výpis velikosti vybraných datových typů pomocí operátoru sizeof(), PROG_21 editace číselné hodnoty na LCD pomocí klávesnice PS/2, použití příkazů switch a break a použití funkce atoi, PROG_22 snížení spotřeby pomocí dvourychlostního režimu INTOSC, PROG_23 snížení spotřeby použitím režimu Sleep a jednotky WDT, PROG_24 použití E 2 PROM. Doprovodný ZIP archiv Doprovodný ZIP archiv je možné si stáhnout ze stránek www.ben.cz. Adresář PROGRAMY obsahuje zdrojové texty všech 24 příkladů, které jsou popsány v knize. Adresář SPOJE obsahuje soubory návrhového systému Eagle (SCH a BRD) a klišé plošných spojů jednotlivých přípravků. Tab. i Seznam přípravků z [1] použitých v této knize. Název Označení Stručný popis PKIT627 BEN 0280 vývojový kit pro mikrokokntrolér PIC16F628A M8LED BEN 0234 osmice LED (svítí při log. 0) MLEDSW BEN 0239 4 tlačítka a 4 LED MSVORKY BEN 0267 svorkovnice a pinová lišta Tab. ii Seznam přípravků popsaných v této knize. Název Označení Stručný popis MLCD BEN 0241 modul LCD displeje 2 8 znaků MLCDXL BEN 0298 modul LCD displeje 2 16 znaků MRX555 BEN 0243 generátor obdélníkového signálu s obvodem NE555 MI2CEXP8 BEN 0271 8bitový expandér řízený I 2 C s obvodem MCP23008 MMATKBD BEN 0272 maticová klávesnice 4 4 s běžnými tlačítky MPCKLAV BEN 0299 přípravek pro připojení klávesnice PS/2 ii

Obsah 1 LCD modul... 1-1 1.1 Popis komunikace s LCD modulem... 1-1 1.2 Přípravek MLCD modul LCD... 1-5 1.3 PROG_01 Skupina funkcí pro řízení přípravku MLCD... 1-6 1.4 PROG_02 Knihovna MLCD a použití funkce printf... 1-10 1.4.1 Vytvoření knihovny MLCD... 1-10 1.4.2 Funkce printf... 1-13 1.4.3 Celý projekt... 1-15 2 Jednotka Timer0... 2-1 2.1 Popis funkce... 2-1 2.2 Princip měření kmitočtu... 2-3 2.3 Přípravek MRX555 generátor obdélníkového signálu... 2-4 2.4 PROG_03 Měření kmitočtu s automatickým přepínáním předděličky... 2-6 2.5 PROG_04 Měření kmitočtu s počítáním přetečení... 2-9 2.6 PROG_05 Měření kmitočtu s počítáním přetečení (Timer2)... 2-12 2.7 PROG_06 Měření odporu mezipřevodem na kmitočet... 2-15 3 Jednotky Timer1 a CCP1... 3-1 3.1 Popis jednotky Timer1... 3-1 3.1.1 Režim časovače... 3-2 3.1.2 Režim synchronizovaného čítače... 3-2 3.1.3 Režim asynchronního čítače... 3-3 3.1.4 Oscilátor... 3-3 3.1.5 Vazba na přerušovací systém... 3-3 3.2 PROG_07 měření kmitočtu pomocí Timer0... 3-3 3.3 Popis jednotky CCP1... 3-6 3.3.1 Režim Capture záchytný registr... 3-6 3.3.2 Režim Compare komparační registr... 3-7 3.3.3 Režim PWM... 3-8 3.4 PROG_08 pulzně-šířkový modulátor... 3-10 3.5 PROG_09 speciální událostní spouštěč... 3-11 3.6 PROG_13 režim Capture... 3-12 4 Sběrnice I 2 C... 4-1 4.1 Popis... 4-1 4.1.1 Vzájemné elektrické propojení... 4-1 4.1.2 Přenos dat a formát rámce... 4-2 4.2 Přípravek MI2CEXP8 8bitový expandér řízený I 2 C... 4-4 4.3 Použití ukazatelů pro realizaci výstupních parametrů funkce... 4-6 4.4 PROG_10 8bitový expandér výstupů... 4-7 4.5 PROG_11 kombinovaný režim vstupů/výstupů... 4-12 4.6 PROG_12 připojení LCD modulu přes sběrnici I 2 C... 4-13 4.7 PROG_13 použití jednotky CCP1 v režimu Capture... 4-17 5 Vstupně/výstupní vývody a vstupy vnějšího přerušení... 5-1 5.1 Omezení funkce vývodů portů... 5-1 5.2 Přípravek MMATKBD maticová klávesnice... 5-2 5.2.1 Princip obsluhy maticové klávesnice... 5-3 5.2.2 PROG_14 základní obsluha maticové klávesnice... 5-4 5.3 Rotační spínač... 5-7 5.3.1 Připojení rotačního spínače EC11... 5-7 5.3.2 PROG_15 základní obsluha rotačního spínače... 5-8 5.4 Vstupy vnějšího přerušení... 5-11 5.4.1 Vstup vnějšího přerušení INT... 5-11 5.4.2 Vstupy vnějšího přerušení Input Change... 5-11 5.4.3 Použití vstupu vnějšího přerušení INT... 5-12 5.4.4 PROG_16 obsluha rotačního spínače pomocí přerušení Input Change... 5-12 iii

5.5 Klávesnice PS/2... 5-15 5.5.1 Stručný popis konektoru a komunikace klávesnice PS/2... 5-15 5.5.2 MPCKLAV přípravek pro připojení klávesnice PS/2... 5-16 5.6 Datová struktura fronta... 5-17 5.6.1 Základní vlastnosti fronty (viz také [5]):... 5-17 5.6.2 Realizace fronty polem... 5-18 5.6.3 PROG_17 základní obsluha klávesnice PS/2... 5-19 5.6.4 PROG_18 zobrazení písmen a číslic zadávaných z klávesnice PS/2... 5-23 6 Pokročilé možnosti programování... 6-1 6.1 Definice nového datového typu... 6-1 6.2 Datový typ struct... 6-1 6.2.1 PROG_19 editace textu na LCD pomocí klávesnice PS/2... 6-3 6.3 Bitové pole... 6-7 6.4 Datový typ union... 6-8 6.5 Poznámka k reálným číslům... 6-9 6.6 Operátor sizeof()... 6-9 6.7 Příkazy switch a break... 6-11 6.8 Funkce atoi... 6-12 6.9 PROG_21... 6-12 6.10 Generování konfiguračního souboru... 6-15 7 Pokročilé možnosti mikrokontroléru PIC16F628A... 7-1 7.1 Konfigurační bity... 7-1 7.2 Konfigurace oscilátoru... 7-1 7.2.1 Režim dvourychlostního interního RC oscilátoru... 7-1 7.3 Reset... 7-2 7.3.1 POR (Power-on Reset)... 7-3 7.3.2 PWRT (Power-up Timer)... 7-3 7.3.3 OST (Oscillator Start-up Timer)... 7-3 7.3.4 BOR (Brown-out Reset)... 7-3 7.3.5 Time-out sekvence... 7-4 7.3.6 Registry PCON a STATUS... 7-5 7.3.7 Vnější resetovací obvody... 7-5 7.4 WDT (WatchDog Timer)... 7-6 7.5 Režim Sleep (Power-Down)... 7-6 7.5.1 Probuzení z režimu Sleep... 7-6 7.6 Ochrana kódu... 7-7 7.7 Uživatelské ID... 7-7 7.8 Datová E 2 PROM... 7-7 7.8.1 Řídicí registr EECON1... 7-8 7.8.2 Čtení... 7-9 7.8.3 Zápis... 7-9 7.8.4 Verifikace zápisu... 7-9 7.8.5 Ochrana proti nežádoucímu zápisu... 7-9 7.8.6 Použití... 7-9 7.9 Příklady... 7-9 7.9.1 PROG_22 Snížení spotřeby pomocí dvourychlostního režimu INTOSC... 7-9 7.9.2 PROG_23 Snížení spotřeby použitím režimu Sleep a jednotky WDT... 7-11 7.9.3 PROG_24 použití E 2 PROM... 7-12 iv