PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 6

Podobné dokumenty
PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 5

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 8

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 7

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 10

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 3

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 2

Programování mikropočítačů platforma Arduino

Vysoká škola chemicko-technologická v Praze Fakulta chemicko-inženýrská Ústav počítačové a řídicí techniky. Aplikace mikroprocesorů.

Zařízení pro měření teploty, atmosférického tlaku a nadmořské výšky

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

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

Program "Světla" pro mikropočítač PMI-80

FREESCALE TECHNOLOGY APPLICATION

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

Strojový kód. Instrukce počítače

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

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

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

Přerušovací systém s prioritním řetězem

ŠESTNÁCTIKANÁLOVÝ A/D PŘEVODNÍK ±30 mv až ±12 V DC, 16 bitů

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.

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

Programování PICAXE18M2 v Assembleru


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

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 1

A/D a D/A PŘEVODNÍK 0(4) až 24 ma DC, 16 bitů

MIKROKONTROLERY PIC16F84

PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 11

Nabíječ NiCd a NiMh článků řízený mikroprocesorem

DESKA ANALOGOVÝCH VSTUPŮ ±24mA DC, 16 bitů

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í

DESKA ANALOGOVÝCH VSTUPŮ A VÝSTUPŮ ±24mA DC, 16 bitů

Časovače μpočítače AT89C51CC03

TENZOMETRICKÝ PŘEVODNÍK

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

ČEMU ROZUMÍ MIKROPROCESOR?

Výuková laboratorní sestava seminář pro učitele

DIGI Timer 8 8 kanálové stopky se záznamem dat

Jak pracovat s LEGO energometrem

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE

EduKit84. Výuková deska s programátorem pro mikrokontroléry PIC16F84A firmy Microchip. Uživatelská příručka

Akademický rok: 2004/05 Datum: Příjmení: Křestní jméno: Osobní číslo: Obor:

DRAK 3 INTELIGENTNÍ A/D PŘEVODNÍK. 3 VSTUPY: 0(4) - 20mA, 0-5/10V VÝSTUP: LINKA RS485 MODUL NA DIN LIŠTU RS485

TENZOMETRICKÝ PŘEVODNÍK

PŘIJÍMAČ DÁLKOVÉHO OVLÁDÁNÍ FLOXR

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

A/D a D/A PŘEVODNÍK 0(4) až 24 ma DC, 16 bitů

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

Modul univerzálních analogových vstupů R560. Shrnutí

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

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

PLC AUTOMAT SIEMENS SIMATIC S Úvod k učebním textům. PLC automat SIEMENS SIMATIC S Základní informace

11.23 Soliris RTS. Rádiová sluneční a větrná automatika

... sekvenční výstupy. Obr. 1: Obecné schéma stavového automatu

LED_007.c Strana: 1/5 C:\Michal\AVR\Výukové programy\archiv\ Poslední změna: :01:48

NAPOJENÍ ZAŘÍZENÍ S KOMUNIKACÍ BELIMO MP-BUS NA SÍŤ AUTOMATŮ MICROPEL

Modelová úloha Zabezpečení a správa budovy

Návod k obsluze výukové desky CPLD

1. MIKROPROCESOR ATMEGA A/D PŘEVODNÍK MÓDY PŘEVODNÍKU Single Conversion Mode Auto Triggering Start...

Klimatizace. Třída: 4.C. Střední Průmyslová Škola Elektrotechnická Havířov Protokol do MIT. Skupina: 3. Zpráva číslo: 3

Stage Setter 24 Návod k obsluze

8. Laboratoř: Aritmetika a řídicí struktury programu

Manuál přípravku FPGA University Board (FUB)

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

Ultrazvukový senzor 0 10 V

Ultrazvukový senzor 0 10 V

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

Instrukce pro montáž, obsluhu a údržbu

Tester chybovosti 6xE1 Software pro ukládání dat

Registrační teploměr

NÁVOD K OBSLUZE konfigurační SW CS-484

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

SAT-Finder plus SF 9000

Čísla, reprezentace, zjednodušené výpočty

TENZOMETRICKÝ PŘEVODNÍK

SW24x3 programovatelné relé

BPT 37 UT/W BEZDRÁTOVÝ PROSTOROVÝ TERMOSTAT

TENZOMETRICKÝ PŘEVODNÍK

Elektronické vážící zařízení s analogovým výstupem C2AX Cod Elektronická řídící jednotka Cod Al snímač 100x80 NÁVOD NA POUŽITÍ A ÚDRŽBU

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.

zení Koncepce připojení V/V zařízení POT POT ... V/V zařízení jsou připojena na sběrnici pomocí řadičů. Řadiče Připojení periferních zařízení

GEOGRAFICKÉ INFORMAČNÍ SYSTÉMY CVIČENÍ 4

ELEKTRONICKÉ BEZPEČNOSTNÍ SYSTÉMY cvičení

Universita Pardubice Fakulta elektrotechniky a informatiky. Mikroprocesorová technika. Semestrální práce

BDIO - Digitální obvody

Programování. řídících systémů v reálném čase. Střední odborná škola a Střední odborné učiliště - - Centrum Odborné přípravy Sezimovo Ústí

Autonomní přístupový sytém IBA-7612

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY. Systém přerušení. České vysoké učení technické Fakulta elektrotechnická

Úvod. Instrukce musí obsahovat: typ operace adresu operandu (operandů) typ operandů modifikátory adresy modifikátory operace POT POT

Laboratorní cvičení z předmětu Elektrická měření 2. ročník KMT

Digitální indikace BC-2001 / BC-3001

1. Programování PLC. Programovatelné automaty II - 1 -

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

compsetup COMPSETUP config, ivr Platí pro PICAXE 20X2, 28X2, 40X2 Syntaxe:

Komunikace modulu s procesorem SPI protokol

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

frekvence 8 Mhz, přestože spolupracuje s procesori různe rychlými. 16 bitová ISA sběrnice je

OM-EL-USB-2. USB Záznamník vlhkosti, teploty a rosného bodu.

5. A/Č převodník s postupnou aproximací

Transkript:

UNIVERZITA TOMÁŠE BATI VE ZLÍNĚ FAKULTA APLIKOVANÉ INFORMATIKY PROGRAMOVÁNÍ MIKROPOČÍTAČŮ CVIČENÍ 6 Práce s analogově digitálním převodníkem Jan Dolinay Petr Dostálek Zlín 2013 Tento studijní materiál vznikl za finanční podpory Evropského sociálního fondu (ESF) a rozpočtu České republiky v rámci řešení projektu: MODERNIZACE VÝUKOVÝCH MATERIÁLŮ A DIDAKTICKÝCH METOD

2 Cvičení 6 Práce s analogově digitálním převodníkem STRUČNÝ OBSAH CVIČENÍ: Programová obsluha A/D převodníku Ukázkový program sloupcový indikátor s LED Úkoly k procvičení VSTUPNÍ ZNALOSTI: Toto cvičení předpokládá znalosti získané na předchozím cvičení a účast na přednáškách. CÍL: Na tomto cvičení si ukážeme, jak lze v programech využít Analogově- Digitální převodník (A/D). Cílem cvičení je naučit se využívat A/D převodník k získání a zpracování analogové vstupní hodnoty (např. ke změření napětí na vstupu mikropočítače). Díky tomu můžeme v programech pracovat s údaji z okolního světa, např. teplotou nebo tlakem, získanými ze snímačů s analogovým výstupem. Cvičení se vztahuje k těmto otázkám Programová obsluha analogových a diskrétních vstupů a výstupů

3 Řešené příklady Příklad 1 Použití A/D převodníku Úkol: Vytvořte podprogram, který rozsvítí 0 až 4 LED diody v závislosti na nastavení potenciometru na vývojovém kitu. Řešení Na vývojovém kitu je osazen potenciometr (proměnný rezistor), který umožňuje měnit napětí na jednom ze vstupů A/D převodníku, konkrétně na kanálu 0. Hodnotu napětí nastavenou tímto potenciometrem budeme zjišťovat pomocí A/D převodníku a to ve smyčce (aby program průběžně reagoval na změny nastavení potenciometru) a podle její velikosti rozsvítíme příslušný počet LED. Návrh rozsahu svitu pro jednotlivé LED (v % rozsahu): 0 10% = žádná LED nesvítí 11 25% = svítí LED1 26 50% = svítí LED1 a LED2 51 75% = svítí LED1, LED2, LED3 > 75% = svítí všechny LED. Vývojový diagram je na následujícím obrázku.

4 Obr. 1 Vývojový diagram příkladu Slovně je možno popsat princip programu takto: Nejprve je třeba provést inicializaci portů a převodníku, což znamená nastavit piny portů, kde jsou připojeny LED diody jako výstupní, nastavit A/D převodník na 10-ti bitový režim atd. Zahájíme převod (zapsáním hodnoty do registru ATD1SC) Čekáme na dokončení převodu Pomocí několika podmínek rozsvítíme pro každý rozsah naměřené hodnoty (výsledku převodu) příslušný počet LED diod. Protože používáme rozlišení převodníku 10 bit, je maximální hodnota výsledku převodu 2 10 tj. 1024.* Čekáme 100 ms (aby převody neprobíhaly zbytečně rychle za sebou) Skokem se vracíme na začátek programu, na místo kde se spouští převod a tím danou část programu neustále opakujeme (a aktualizujeme tak počet rozsvícených LED podle aktuální hodnoty nastavené potenciometrem). * Odtud jsou vypočteny číselné hodnoty v podmínkách ve vývojovém diagramu- srovnejte s procentuálními hodnotami uvedenými v zadání. Např. pro nastavené napětí 26 až 50% rozsahu má svítit LED1 a LED2. 26% z 1024 je 266,4. Proto jestliže výsledek převodu je větší než 266, rozsvítí se kromě LED1 (podmínka > 112) také LED2.

5 Potřebné instrukce BLS Skok jestliže je číslo v uvažovaném registru A menší nebo rovno číslu v paměťové buňce. (Branch Lower or Same)- BCLR Skok má-li uvažovaný bit v paměťové buňce nulovou hodnotu (Branch if Bit Clear) CPHX Porovnání registru H:X a dvoubajtového čísla v paměti popř. přímého operandu. Vysvětlení programu Zde je zdrojový kód programu. Kromě hlavního programu je použit také podprogram cekej, který realizuje pozastavení běhu programu na přibližně 0,1 sekundy. Funguje stejně jako čekací podprogram uvedený dříve s tím, že navíc uchovává obsah registrů H, X a A. ; masky m_led_off EQU %00001111 ; kod porogramu mov #$ff,ptfd ; po prepnuti rezimu portu budou LED zhasnuty mov #%00001111,PTFDD ; PTF0 - PTF3 vystupni rezim mov #%00000001,ATD1PE ; pin PTB0 prepnut do rezimu vstup AD prevodniku mov #%11000100,ATD1C ; inicializace prevodniku (AD zap, 10bit ; zarovnani vpravo, ATD clock 2MHz) opakuj lda PTFD ora #m_led_off sta PTFD ; zhasneme vsechny LED mov #%00000000,ATD1SC ; spusteni prevodu - preruseni zakazano, ; jednorazovy prevod, kanal 0 nav1 lda ATD1SC ; cekej na dokonceni prevodu and #%10000000 beq nav1 ldhx ATD1RH ; nacteme do reg. H:X vysledek prevodu cphx #112 bls nav2 bclr 0,PTFD ; je vetsi -> rozvistime LED1 nav2 cphx #266 bls nav3 bclr 1,PTFD ; je vetsi -> rozvistime LED2 nav3 cphx #522 bls nav4 bclr 2,PTFD ; je vetsi -> rozvistime LED3 nav4 cphx #767 bls nav5 bclr 3,PTFD ; je vetsi -> rozvistime LED4

6 nav5 jsr cekej bra opakuj ; CEKEJ podprogram pro pozastaveni na cca 100 ms cekej PSHH ; uloz pouzivane registry na zasobnik PSHX PSHA LDA #2 n2 LDHX #$FFFF n1 AIX #-1 ; H:X = H:X-1 (pozor, nenastavuje priznaky) feed_watchdog ; reset watchdogu CPHX #0 ; je H:X = 0? BNE n1 ; pokud ne, skoc na n1 DECA ; A = A - 1 BNE n2 ; je A=0? Pokud ne, skoc na n2 PULA PULX PULH ; obnov puvodni obsah registru ze zasobniku RTS ; navrat z podprogramu Obr. 2 Kód hlavního programu pro ukázku práce s A/D převodníkem Kód začíná nastavením pinů portu F (kde jsou připojeny LED diody) do výstupního režimu. Pin portu B, na kterém je připojen potenciometr se zápisem do registru ATD1PE nastaví jako vstup pro A/D převodník, ostatní piny jsou ponechány v režimu běžných vstupů nebo výstupů. Dále zápisem do registru ATD1C nastavíme A/D převodník do režimu 10-bitového převodu, zarovnání výsledku vpravo a podle doporučení v dokumentaci k mikropočítači jsme také nastavili hodinový kmitočet převodníku na 2 MHz. Do programu pak vložíme návěští opakuj, protože na toto místo se bude program vracet pro provedení dalšího měření. Zápisem do registru ATD1SC vybereme jako vstup převodníku kanál 0 (protože na tom je připojen potenciometr) a spustíme převod. Protože převod trvá určitou dobu, musí program před přečtením výsledku počkat na dokončení převodu. Dokončení převodu signalizuje převodník nastavením příznaku v registru ATD1SC (a případně i přerušením, ale toho v tomto programu nevyužíváme). Nastavení příznaku na 1 se testuje pomocí logického součinu AND s maskou, ve které je na místě příznaku hodnota 1. Dokud není příznak v registru ATD1SC nastaven na 1, bude logický součin 0 x 1 tj. 0 a provede se tedy skok BEQ na návěští nav1. Program zde tedy setrvá tak dlouho, dokud se v nejvyšším bitu registru ATD1SC neobjeví hodnota 1 (což signalizuje dokončení převodu). Výsledek převodu je pak uložen ve dvojici registrů ATD1RH a ATD1RL. Protože jsme nastavili zarovnání výsledku vpravo, je vlastně spodních 8 bitů výsledku v registru ATD1RL a horní 2 bity v registru ATD1RH. Na dvojici výsledkových registrů ATD1RH: ATD1RL se proto můžeme dívat jako na jedno číslo o velikosti 16 bitů. Toto číslo můžeme načíst do

7 registru H:X. Obsah registru H:X pak porovnáváme s pevně nastavenými konstantami, které představují prahové hodnoty pro rozsvícení jednotlivých LED diod. Jestliže je naměřená hodnota (výsledek převodu) větší než příslušný práh, např. 112 nebo 266, provede se vynulování odpovídajícího bitu v datovém registru portu F (PTFD) a tím rozsvícení dané LED diody. Vynulování se provádí instrukcí BCLR (bit clear). Pokud naopak není naměřená hodnota větší než práh, vynulování se přeskočí skokem BLS (skoč pokud je menší nebo rovno). Princip je znázorněn a okomentován na následujícím výpisu kódu : LDHX ATD1RH ; nacteme do reg. H:X výsledek převodu CPHX #112 ; porovnáme H:X s prahovou hodnotou, zde zvolena 112 BLS nav2 ; jestliže je číslo v H:X menší nebo rovno 112, skočíme na nav2 BCLR 0,PTFD ; jestliže je větší, rozvistime LED1 (vynulováním bitu na portu F) nav2 CPHX #266 Hlavní program končí po vyhodnocení všech prahových hodnot skokem na návěští opakuj, viz instrukce BRA opakuj. Testování programu Po překladu program nahrajte to vývojového kitu postupem uvedeným dříve a spusťte plnou rychlostí. Otáčejte potenciometrem a sledujte jak se postupně rozsvěcují a zhasínají LED diody v závislosti na poloze potenciometru. Příklady k procvičení 1. Upravte program tak, aby se na výsledek převodu nečekalo ale využilo se přerušení. 2. Vytvořte program, který bude v závislosti na nastavení potenciometru měnit frekvenci blikání LED. Zároveň bude možno pomocí tlačítek SW1 a SW2 měnit počet blikajících diod od jedné po všechny čtyři. SW1 bude mít význam (+), tj. bliká o jednu LED více; SW2 (-) tj. bliká o jednu LED méně. Doplňující zdroje [1] Freescale: Firemní dokumentace pro mikropočítače HCS08, dostupné online: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=s08gb&nodeid= 01624684491437EDD5