• No results found

Bakal´ aˇrsk´ a pr´ ace

N/A
N/A
Protected

Academic year: 2022

Share "Bakal´ aˇrsk´ a pr´ ace"

Copied!
63
0
0

Loading.... (view fulltext now)

Full text

(1)

MODUL PRO PODPORU PROCESOR˚ U Z RADY AVR NA EXISTUJ´IC´IM ˇ

V´ YUKOV´ EM Pˇ R´IPRAVKU

Bakal´ aˇrsk´ a pr´ ace

M11000162

Studijn´ı program: B2612 – Elektrotechnika a informatika

Studijn´ı obor: 2612R011 – Elektronick´e informaˇcn´ı a ˇr´ıdic´ı syst´emy Autor pr´ace: Josef Krac´ık

Vedouc´ı pr´ace: Ing. Tom´aˇs Martinec, Ph.D.

(2)

MODULE WITH AVR PROCESSOR FOR EXISTING EDUCATION KIT

Bachelor thesis

M11000162

Study programme: B2612 – Electrical Engineering and Informatics

Study branch: 2612R011 – Electronic Information and Control Systems

Author: Josef Krac´ık

Supervisor: Ing. Tom´aˇs Martinec, Ph.D.

(3)
(4)
(5)

Prohl´ aˇsen´ı

Byl jsem sezn´amen s t´ım, ˇze na mou bakal´aˇrskou pr´aci se plnˇe vztahuje z´akon ˇc. 121/2000 Sb., o pr´avu autorsk´em, zejm´ena§ 60 – ˇskoln´ı d´ılo.

Beru na vˇedom´ı, ˇze Technick´a univerzita v Liberci (TUL) neza- sahuje do m´ych autorsk´ych pr´av uˇzit´ım m´e bakal´aˇrsk´e pr´ace pro vnitˇrn´ı potˇrebu TUL.

Uˇziji-li bakal´aˇrskou pr´aci nebo poskytnu-li licenci k jej´ımu vyuˇzit´ı, jsem si vˇedom povinnosti informovat o t´eto skuteˇcnosti TUL;

v tomto pˇr´ıpadˇe m´a TUL pr´avo ode mne poˇzadovat ´uhradu n´aklad˚u, kter´e vynaloˇzila na vytvoˇren´ı d´ıla, aˇz do jejich skuteˇcn´e v´yˇse.

Bakal´aˇrskou pr´aci jsem vypracoval samostatnˇe s pouˇzit´ım uveden´e literatury a na z´akladˇe konzultac´ı s vedouc´ım m´e bakal´aˇrsk´e pr´ace a konzultantem.

Datum:

Podpis:

(6)

Podˇ ekov´ an´ı

R´ad bych podˇekoval Ing. Tom´aˇsi Martincovi, Ph.D. za ochotu, od- born´e rady a cenn´e pˇripom´ınky, kter´e v´yraznˇe pˇrispˇely k vypra- cov´an´ı t´eto bakal´aˇrsk´e pr´ace.

(7)

Abstrakt

Pˇredmˇet Poˇc´ıtaˇce a mikropoˇc´ıtaˇce z ´Ustavu mechatroniky a tech- nick´e informatiky vyuˇz´ıv´a v´yukov´y pˇr´ıpravek, kter´y seznamuje stu- denty se z´akladn´ımi principy technick´eho vybaven´ı poˇc´ıtaˇc˚u. Tento pˇr´ıpravek je vybaven r˚uzn´ymi komunikaˇcn´ımi obvody, displejem, kl´avesnic´ı, ˇcidly, tlaˇc´ıtky, LED diodami atp. Obsahuje tak´e patici, do kter´e se d´a pˇripojit modul s r˚uzn´ymi typy mikrokontrol´eru. Tato bakal´aˇrsk´a pr´ace popisuje v´yrobu takov´eho modulu, kter´y bude ob- sahovat ˇr´ıd´ıc´ı mikrokontrol´er specifick´e ˇrady AVR a dok´aˇze ovl´adat veˇsker´e perif´erie pˇr´ıpravku. Svoji pouˇzitelnost by mˇel uk´azat na vhodnˇe naprogramovan´ych pˇr´ıkladech. V´ysledn´y AVR modul by mˇel b´yt schopen pln´e funkce pˇri pouˇzit´ı ve v´yuce. Uplatnˇen´ı to- hoto modulu by mˇeli ocenit hlavnˇe zaˇc´ınaj´ıc´ı program´atoˇri (stu- denti ostatn´ıch fakult), pro kter´e bylo vymyˇsleno pouˇzit´ı speci´aln´ı platformy, jenˇz umoˇzˇnuje snadnˇejˇs´ı programov´an´ı.

Kl´ıˇ cov´ a slova:

v´yukov´y pˇr´ıpravek, AVR, modul, programov´an´ı, Arduino

Abstract

Institute of Mechatronics and Computer Engineering includes sub- ject called Computers and Microcomputers which introduces stu- dents to the basic principles of computer hardware using an educati- onal kit. This product is a printed circuit board and it is equipped with various communication circuits, display, keypad, sensors, but- tons, LEDs, etc. It also includes a special connector for univesal modules which contains different microcontrollers. This bachelor thesis describes main steps of making a special module which will include a specific AVR microcontroller. This MCU will be possible to control the whole educational kit. All its practicability should be shown on an appropriately programmed examples. The final AVR module should be able to work in the subject. The application of this module should be helpful for beginning programmers (especi- ally from another faculties than students of the Faculty of Mechat- ronics ). This AVR module contians a special platform which allows easier programming.

Key words:

educational kit, AVR, module, programming, Arduino

(8)

Obsah

Seznam zkratek . . . 12

1 Uvod´ 13 2 V´yukov´y pˇr´ıpravek 14 3 Mikrokontrol´er 16 3.1 AVR procesory . . . 16

3.1.1 Harvardsk´a architektura . . . 16

3.1.2 RISC . . . 17

3.1.3 Z´akladn´ı rodiny AVR . . . 18

3.2 V´ybˇer mikrokontrol´eru . . . 19

4 Program´ator 20 4.1 Rozhran´ı ISP . . . 20

4.2 Ponyser . . . 21

4.3 USBasp . . . 21

4.4 Testov´an´ı . . . 22

5 N´avrh desky ploˇsn´eho spoje 24 5.1 O programu KiCad . . . 24

5.2 Popis programu Kicad . . . 24

5.2.1 Editor sch´ematu . . . 24

5.2.2 Pˇriˇrazov´an´ı pouzder . . . 26

5.2.3 Editor ploˇsn´eho spoje . . . 27

5.2.4 Prohl´ıˇzeˇc Gerber . . . 28

5.2.5 3D modeling . . . 29

5.3 Postup pˇri n´avrhu sch´ematu . . . 29

5.4 Postup pˇri v´ybˇeru pouzder . . . 30

5.5 Postup pˇri n´avrhu DPS . . . 30

6 Programov´an´ı modulu 31 6.1 Naprogramov´an´ı USBasp . . . 31

6.1.1 AVRDUDE . . . 31

6.1.2 Programovac´ı propojky (Fuse Bits) . . . 33

6.2 Prvn´ı ´uloha . . . 33

(9)

6.2.2 Funkce programu prvn´ı ´ulohy . . . 34

6.3 Druh´a ´uloha . . . 40

6.3.1 Arudino specifikace . . . 40

6.3.2 Funkce programu druh´e ´ulohy . . . 41

6.3.3 Programovac´ı m´ody . . . 42

6.3.4 Nastaven´ı pin˚u Arduino . . . 43

7 Z´avˇer 44

Literatura 47

A Obsah pˇriloˇzen´eho CD 48

B Ostatn´ı obr´azky 49

C Sch´ema, layout a souˇc´astky DPS 56

(10)

Seznam obr´ azk˚ u

2.1 V´yukov´y pˇr´ıpravek . . . 15

3.1 Obecn´e sch´ema Harvardsk´e architektury . . . 17

4.1 Konektory ISP . . . 20

4.2 Sch´ema program´atoru Ponyser . . . 21

4.3 Ponyser na nep´ajiv´em poli . . . 22

4.4 Testovac´ı USBasp . . . 23

4.5 Nastaven´ı program´ator˚u v avrdude-GUI . . . 23

5.1 Vytvoˇren´ı nov´e souˇc´astky . . . 25

5.2 Kontroln´ı matice . . . 26

5.3 Uk´azka softwaru pˇriˇrazen´ı pouzder . . . 27

5.4 Exportn´ı nastaven´ı souˇc´astky . . . 29

6.1 Prvn´ı pˇripojen´ı USBasp . . . 32

6.2 Nainstalovan´y ovladaˇc USBasp . . . 32

6.3 Uk´azka v´ypoˇctu teploty . . . 34

6.4 Uk´azka konstrukce kl´avesnice . . . 35

6.5 V´ypoˇcet t´onu a1 . . . 37

6.6 Funkce inicializace ADC . . . 37

6.7 Nastaven´ı oranˇzov´e barvy . . . 38

6.8 Pˇrenos dat sbˇernice I2C . . . 39

6.9 Uk´azka Ethernet Arduino Shiledu . . . 41

6.10 Zjiˇstˇen´ı IP adresy . . . 42

6.11 Nastaven´ı displeje v jazyku Wiring . . . 42

6.12 Nastaven´ı pˇrenosu programu do mikrokontrol´eru . . . 43

B.1 3D vizualizace AVR modulu . . . 49

B.2 Nastaven´ı pojistek pro USBasp program´ator . . . 50

B.3 Programov´an´ı MCU v avdude v pˇr´ıkazov´em ˇr´adku . . . 50

B.4 Nastaven´ı mikrokontrol´eru ATmega168 v avrdude-GUI . . . 51

B.5 Nastaven´ı mikrokontrol´eru ATmega2560 v avrdude-GUI . . . 51

B.6 Uk´azka funkce webov´eho serveru . . . 52

B.7 Zobrazen´ı dat na SD kartˇe . . . 52

(11)

B.10 Pˇripojen´y Arduino Shield k routeru . . . 54

B.11 Mapa pin˚u pro Arduino Mega 2560 pinout . . . 55

C.1 Seznam souˇc´astek AVR modulu . . . 56

C.2 Sch´ema program´atoru USBasp na AVR modulu . . . 57

C.3 Sch´ema ˇr´ıd´ıc´ıho obvodu AVR modulu . . . 58

C.4 Sch´ema ´uprav AVR modulu pro dalˇs´ı verzi . . . 59

C.5 Layout svrchn´ı vrstvy mˇedi AVR modulu . . . 60

C.6 Layout spodn´ı vrstvy mˇedi AVR modulu . . . 61

C.7 Um´ıstˇen´ı souˇc´astek na svrchn´ı vrstvˇe AVR modulu . . . 62

(12)

Seznam tabulek

3.1 Uk´azka s pipeliningem . . . 17

3.2 Uk´azka bez pipeliningu . . . 18

3.3 Parametry mikrokontrol´eru . . . 19

4.1 Piny rozhran´ı ISP . . . 21

6.1 Propojky . . . 33

6.2 Hlavn´ı piny posuvn´eho registru . . . 36

(13)

Seznam zkratek

ACK ACKnowledgement signal, potvrzuj´ıc´ı bit I2C sbˇernice

AVR Alf (Egil Bogen) Vegard (Wollan) Risc procesor, RISC mikropoˇc´ıtaˇc od firmy Atmel

CAN sbˇernice pouˇz´ıvan´a v automobilov´em pr˚umyslu

CPU Central Procesing Unit, souˇc´astka vykon´avaj´ıc´ı strojov´y k´od z operaˇcn´ı pamˇeti

CTC Clear Timer on Compare, speci´aln´ı m´od ˇcasovaˇce DB9 konektor pro s´eriovou komunikaci RS-232

EEPROM Electrically Erasable Programmable Read-Only Memory, elektricky mazateln´a nonvolatiln´ı pamˇet’

ERC Electrical Rule Check, kontrola elektrick´ych pravidel ve sch´ematu n´avrhu ploˇsn´eho spoje

GND GrouND, oznaˇcen´ı zemn´ıc´ıho vodiˇce

GNU GNU’s Not Unix, projekt zamˇeˇren´y na svobodn´y software GPL General Public License, vˇseobecn´a veˇrejn´a licence GNU GUI Graphical User Interface, grafick´e uˇzivatelsk´e rozhran´ı I2C Inter-Integrated Circuit, s´eriov´a sbˇernice

ISP In-System Programming, programovac´ı rozhran´ı

JTAG Joint Test Action Group, metoda testov´an´ı ploˇsn´ych spoj˚u a moˇznost programov´an´ı Flash pamˇet´ı

LCD Liquid Crystal Display, displej sloˇzen z tekut´ych krystal˚u

LED Light-Emitting Diode, polovodiˇcov´a elektronick´a souˇc´astka vyzaˇruj´ıc´ı svˇetlo

MCU Micro Controler Unit, jin´y v´yznam pro mikrokontrol´er MISO Master In Slave Out, vodiˇc ISP komunikace

MOSI Master Out Slave In, vodiˇc ISP komunikace NAND Not AND, logick´y ˇclen negovan´eho souˇcinu NOR Not OR, logick´y ˇclen negovan´eho souˇctu NOT Not, logick´y ˇclen negace

PCB Printed Circuit Board, jin´e oznaˇcen´ı pro desku ploˇsn´eho spoje PWM Pulse Width Modulation, pulznˇe ˇs´ıˇrkov´a modulace

RGB Red Green Blue, tˇri z´akladn´ı barvy ˇcerven´a, zelen´a a modr´a ROM Read-Only Memory, pamˇet’ urˇcen´a pouze ke ˇcten´ı

RS-232 rozhran´ı s´eriov´e komunikace RS-485 rozhran´ı s´eriov´e komunikace

RTC Real Time Clock, integrovan´y obvod kalkuluj´ıc´ı re´aln´ı ˇcas RWM Read-Write Memory, pamˇet’ umoˇznuj´ıc´ı ˇcten´ı i z´apis SCL Serial Clock Line, hodinov´y sign´al I2C sbˇernice

SCK Serial ClocK, Master Out Slave In, hodinov´y sign´al ISP komunikace SDA Serial Data Line, datov´y sign´al I2C sbˇernice

SMD Surface Mount Device, souˇc´astky urˇcen´e k povrchov´e mont´aˇzi na ploˇsn´em spoji

TWI Two Wire serial Interface, dvouvodiˇcov´e rozhran´ı USB Universal Serial Bus, univerz´aln´ı s´eriov´a sbˇernice

(14)

1. Uvod ´

Jiˇz v d´avn´ych dob´ach byla snaha lid´ı ulehˇcovat si pr´aci r˚uzn´ymi chytr´ymi vyn´alezy, kter´e by zm´ırnily n´amahu samotn´eho ˇclovˇeka. Jednalo se pˇredevˇs´ım o stoje nebo n´astroje ovl´adan´e manu´alnˇe ˇclovˇekem. Pozdˇeji se zaˇcalo uvaˇzovat tak´e o stroj´ıch, kter´e by dok´azaly samostatnˇe pracovat bez lidsk´e pomoci. Mˇely by tzv.

umˇelou inteligenci. Centrum ˇr´ızen´ı stroje v dneˇsn´ı dobˇe tvoˇr´ı tzv. mikrokontrol´er, kter´y ovl´ad´a pomoc´ı elektrick´ych sign´al˚u jeho jednotliv´e ˇc´asti. Prvn´ı mikrokontrol´er vytvoˇrila firma Texas Instruments v roce 1974. Tento prvek dnes nalezneme t´emˇeˇr v kaˇzd´em modern´ım elektronick´em pˇr´ıstroji napˇr. v hraˇck´ach, mp3 pˇrehr´avaˇc´ıch, d´alkov´ych ovl´adaˇc´ıch, mobiln´ıch telefonech, l´ekaˇrsk´ych nebo mˇeˇr´ıc´ıch pˇr´ıstroj´ıch, v implant´atech a v cel´e ˇradˇe dalˇs´ıch zaˇr´ızen´ıch.

Jednoˇcipov´y poˇc´ıtaˇc (MCU, uC, mikrokontrol´er, angl. microcontroller) je pro- gramovateln´a elektronick´a souˇc´astka v podobˇe integrovan´eho obvodu. Pouˇz´ıv´a se pˇrev´aˇznˇe k ˇr´ızen´ı nebo jako souˇc´ast nˇejak´eho dalˇs´ıho zaˇr´ızen´ı k plnˇen´ı urˇcit´e funkce.

Obsahuje pamˇet’, programovateln´e vstupnˇe-v´ystupn´ı rozhran´ı a r˚uzn´e dalˇs´ı peri- fern´ı obvody napˇr. ˇc´ıtaˇce, ˇcasovaˇce, s´eriov´e porty, analogovˇe-digit´aln´ı nebo digit´alnˇe- analogov´e pˇrevodn´ıky a dalˇs´ı. Pouˇzit´ım mikrokontrol´eru v dneˇsn´ı dobˇe nahrad´ıme velk´e mnoˇzstv´ı logick´ych obvod˚u i diskr´etn´ıch souˇc´astek, kter´ych bylo dˇr´ıve k re- alizaci potˇreba. T´ım p´adem se sn´ıˇzily n´aklady, ale tak´e se rozhran´ı stalo daleko pˇr´ıvˇetivˇejˇs´ım pro uˇzivatele. Pˇrid´an´ım nov´eho komponentu nebo zaˇr´ızen´ı tak ne- mus´ıme mˇenit konstrukci samotn´eho jednoˇcipov´eho poˇc´ıtaˇce. Staˇc´ı jen pozmˇenit jeho instrukce tzn. jej pˇreprogramovat.

C´ılem t´eto bakal´aˇrsk´e pr´ace je vybrat takov´y mikrokontrol´er od firmy Atmel z ˇrady AVR, kter´y by dok´azal ovl´adat vˇsechny komponenty ˇskoln´ıho pˇr´ıpravku, a sezn´amit se s n´ım z hlediska programov´an´ı. Obezn´amit se tak´e s v´yukov´ym pˇr´ıpravkem, pˇredevˇs´ım s jeho perif´eriemi a moˇznostmi pouˇzit´ı. Navrhnout ploˇsn´y spoj nebo-li modul, kter´y bude obsahovat jednak dan´y mikroˇcip, ale tak´e programo- vac´ı obvod tzv. program´ator, aby se pˇri kaˇzd´em programovan´ı nemusel pˇripojovat speci´aln´ı program´ator externˇe. Po v´yrobˇe a osazen´ı modulu nahr´at do pˇredem pˇri- praven´eho mikroˇcipu (jin´eho neˇz ˇr´ıd´ıc´ıho) k´od, kter´y zaruˇc´ı stejnou funkci, jakou vykon´av´a extern´ı program´ator. Posledn´ım bodem t´eto pr´ace je naprogramov´an´ı jed- notliv´ych periferi´ı pˇr´ıpravku v jazyce C, a t´ım otestovat vyroben´y modul. N´aslednˇe zkusit pouˇz´ıt Arduino platformu a nahr´at s pomoc´ı speci´aln´ıch knihoven v´yraznˇe jed- noduˇsˇs´ı program. Pˇri v´yuce by tedy mohl zaˇc´ateˇcn´ık pouˇz´ıvat pr´avˇe toto prostˇred´ı, a pot´e postupnˇe pˇrech´azet do samostatn´eho programovac´ıho jazyku C.

(15)

2. V´ yukov´ y pˇr´ıpravek

V´yukov´y pˇr´ıpravek je deska ploˇsn´eho spoje (obr. 2.1, str. 15), kter´a obsa- huje r˚uzn´e perifern´ı obvody jako napˇr. (LCD displej, kl´avesnici apod.). Vyuˇz´ıv´a se zejm´ena v pˇredmˇetu PMP (Poˇc´ıtaˇce a mikropoˇc´ıtaˇce) a PHS (Poˇc´ıtaˇcov´y hardware a rozhran´ı).

Seznam d˚uleˇzit´ych komponent pˇr´ıpravku

• Konektor 2 x 20 pin˚u - speci´aln´ı konektor ML 20, kter´y propojuje periferie pˇr´ıpravku s ˇr´ıd´ıc´ım modulem, pouˇzit´ı z´avis´ı na uˇzivateli.

• Konektor 3 x 20 pin˚u - jedn´a se o tˇri dutinkov´e liˇsty o dvaceti pinech, kter´e maj´ı pˇresn´e rozestaven´ı a slouˇz´ı pro pˇripojen´ı pˇr´ısluˇsn´eho modulu k v´yukov´emu pˇr´ıpravku.

• LCD displej s ˇradiˇcem - displej obsahuje integrovan´y obvod HD44780 s rozliˇsen´ım 16x2 znak˚u a LED pole jako podsv´ıcen´ı.

• Maticov´a kl´avesnice - kl´avesnice, kter´a obsahuje ˇctyˇri ˇr´adky a sloupce, do- hromady tedy ˇsestn´act kl´aves.

• LED bargraf - sloupec 10-ti zelen´ych LED diod v jednom ucelen´em pouzdru s 20-ti v´yvody.

• Senzor teploty - integrovan´y obvod, kter´y pˇredstavuje modern´ı kˇrem´ıkov´e teplotn´ı ˇcidlo urˇcen´e pro nejr˚uznˇejˇs´ı konstrukce, jehoˇz v´ystupem je ˇs´ıˇrkovˇe modulovan´y sign´al.

• Tlaˇc´ıtko 2x - tlaˇc´ıtkov´y sp´ınaˇc bez aretace.

• Potenciometr - uhl´ıkov´y otoˇcn´y mono potenciometr.

• Piezosir´enka - komponenta ovl´adan´a pomoc´ı ˇs´ıˇrkovˇe modulovan´eho sign´alu.

• LED diody 3x - trojice LED diod ˇcerven´e, ˇzlut´e a zelen´e barvy.

• ˇZ´arovka

(16)

• USB konektor - USB typu B (z´asuvka), kter´a slouˇz´ı jako hlavn´ı pˇr´ıvod nap´ajen´ı nebo komunikace po s´eriov´e lince pomoc´ı integrovan´eho obvodu FT232 um´ıstˇen´eho na pˇr´ıpravku.

• DB9 - konektor (z´asuvka), vyuˇz´ıvaj´ıc´ıse k s´eriov´e komunikaci po RS-232 a RS- 485 pomoc´ı integrovan´ych obvod˚u MAX232 a MAX481, kter´e jsou um´ıstˇeny na pˇr´ıpravku.

• Konektor se z´amkem 2x - konektory pro pˇripojen´ı zaˇr´ızen´ı, kter´e bude komunikovat pomoc´ı RS-485.

Obr´azek 2.1: V´yukov´y pˇr´ıpravek

(17)

3. Mikrokontrol´ er

3.1 AVR procesory

AVR je oznaˇcen´ı pro jednoˇcipov´y mikrokontrol´er s Harvardskou architekturou typu RISC. U zrodu st´ali studenti Alf-Egil Bogen a Vegard Wollan z Norsk´eho technologick´eho institutu (Norwegian Institute of Technology(NTH)). N´azev AVR vypl´yv´a z Alf-Egil Bogen Vegard Wollan RISC processor. Firma Amtel koupila tuto koncepci, a t´ım vznikla 8-bitov´a MCU rodina, kter´a je na trhu od roku 1997. Byla to tak´e jedna z prvn´ıch ˇrad, kter´a mˇela uloˇzen´y program v pamˇeti Flash.

3.1.1 Harvardsk´ a architektura

Tato architektura se vyznaˇcuje rozdˇelenou pamˇet´ı pro data a pro program.

Mezi jej´ı hlavn´ı v´yhody patˇr´ı moˇznost odliˇsn´e ˇs´ıˇrky programov´e a datov´e sbˇernice.

Pro program se pouˇz´ıv´a obvykle pamˇet’ ROM, protoˇze nen´ı tak finanˇcnˇe n´akladn´a a m´a vysokou kapacitu. Pro data b´yv´a aplikov´ana pamˇet’ typu RWM. Dalˇs´ı plus tvoˇr´ı rychlost vykon´av´an´ı instrukc´ı, protoˇze instrukci i data lze ˇc´ıst najednou (obr.

3.1, str. 17). Hlavn´ı nev´yhodou Harvardsk´e architektury jsou dvˇe sbˇernice, kter´e maj´ı vyˇsˇs´ı n´aroky pˇri v´yvoji ˇr´ıd´ıc´ı jednotky procesoru. To se projev´ı pˇri celkov´ych n´akladech na v´yrobu mikroˇcipu. Dalˇs´ım menˇs´ım nedostatkem je fakt, ˇze nen´ı moˇzn´e vyuˇz´ıt volnou datovou pamˇet’ pro program a naopak [3].

• Aritmeticko-logick´a jednotka - z´akladn´ı komponenta, ve kter´e se prov´adˇej´ı vˇsechny aritmetick´e a logick´e operace napˇr.: sˇc´ıt´an´ı a odˇc´ıt´an´ı cel´ych ˇc´ısel, logick´y souˇcin, logick´y souˇcet, funkce NOT, NAND, NOR, rotace bitu a dalˇs´ı,

• datov´a pamˇet’ - pamˇet’ pro data,

• programov´a pamˇet’ - pamˇet’ pro program,

• kontroln´ı jednotka - komponenta CPU, kter´a ˇr´ıd´ı operace procesoru, a tak´e koordinaci a komunikaci mezi vstupn´ımi nebo v´ystupn´ımi zaˇr´ızen´ımi,

• I/O - vstup nebo v´ystup dat.

(18)

Obr´azek 3.1: Obecn´e sch´ema Harvardsk´e architektury

3.1.2 RISC

RISC oznaˇcuje procesory s redukovatelnou instrukˇcn´ı sadou. Maj´ı mal´y poˇcet instrukc´ı (instrukˇcn´ı sada tvoˇr´ı 32 instrukc´ı). Instrukce jsou velmi jednoduch´e a vˇetˇsinou se prov´adˇej´ı v jednom strojov´em cyklu. Neexistuj´ı ˇz´adn´e specializovan´e registry, takˇze vˇetˇsina instrukc´ı pracuje pˇr´ımo s vnitˇrn´ımi registry, coˇz je daleko rychlejˇs´ı. Implementace instrukc´ı se prov´ad´ı logick´ymi obvody. D´elka, co se t´yˇce poˇctu bit˚u, je u vˇsech instrukc´ı stejn´a. RISC um´ı tak´e pipelining neboli zˇretˇezen´e zpracov´an´ı (uk´azka rozd´ıl˚u v tabulk´ach 3.1 a 3.2, str. 17 a 18). Jde o rozloˇzen´ı jedn´e instrukce do nˇekolika f´az´ı. Pro pˇr´ıklad lze v prvn´ı f´azi naˇc´ıtat a dek´odovat instrukci, d´ale ji pak v druh´e f´azi prov´adˇet. Hlavn´ı myˇslenka spoˇc´ıv´a ve vyuˇzit´ı ˇc´ast´ı proce- soru, kter´e zrovna nic nevykon´avaj´ı. T´ım se rapidnˇe zvyˇsuje v´ykon cel´eho procesoru.

1.takt 2.takt 3.takt 4.takt

1.instrukce:

naˇcten´ı

1.instrukce:

proveden´ı 2.instrukce:

naˇcten´ı

2.instrukce:

proveden´ı 3.instrukce:

naˇcten´ı

3.instrukce:

naˇcten´ı Tabulka 3.1: Uk´azka s pipeliningem

(19)

1.takt 2.takt 3.takt 4.takt 1.instrukce: 1.instrukce:

naˇcten´ı a dek´od. proveden´ı

2.instrukce: 2.instrukce:

naˇcten´ı a dek´od. proveden´ı Tabulka 3.2: Uk´azka bez pipeliningu

3.1.3 Z´ akladn´ı rodiny AVR

Mikrokontrol´ery AVR se dˇel´ı do nˇekolika podskupin neboli rodin, a to podle periferi´ı, poˇctu pin˚u, velikosti pamˇeti atd.

1. AVR - AT90 s´erie

• tato ˇrada se dnes jiˇz nevyr´ab´ı 2. tinyAVR - ATtiny s´erie

• pamˇet’ pro program: 0,5 - 16 kB

• poˇcet pin˚u: 6 - 32

• frekvence: do 20 MHz

• omezen´a sada periferi´ı 3. megaAVR - ATmega s´erie

• pamˇet’ pro program: 4 - 512 kB

• poˇcet pin˚u: 28 - 100

• frekvence: do 20 MHz

• rozˇs´ıˇrenˇejˇs´ı sada instrukc´ı

• rozˇs´ıˇren´a sada periferi´ı

• picoPower - ´uspora energie, prodlouˇzen´ı ˇzivotnosit baterie 4. XMEGA - ATxmega s´erie

• pamˇet’ pro program: 16 - 384 kB

• poˇcet pin˚u: 32 - 100

• frekvence: do 32 MHz

• DMA - pˇr´ım´y pˇr´ıstup do pamˇeti (Direct Acess Memory)

• Event System - umoˇzˇnuje komunikaci mezi periferiemi bez nutnosti zatˇeˇzov´an´ı CPU

• picoPower - 2. generace

(20)

5. AVR32 - AT32UC3 s´erie

• pamˇet’ pro program: 16 - 512 kB

• poˇcet pin˚u: 48 - 144

• frekvence: do 66 MHz

• periferie podobn´e jako u ATxmega s´erie

Mezi posledn´ı patˇr´ı tak trochu specifick´a podskupina AutomotiveAVR. Mi- kroˇcipy v t´eto skupinˇe jsou speci´alnˇe vyr´abˇeny pro pouˇzit´ı v automobilov´em pr˚umyslu.

Vyskytuj´ı se zde upraven´e klony z jednotliv´ych rodin napˇr. ATmega88 Automotive atd. Jejich rozd´ıl spoˇc´ıv´a kupˇr´ıkladu v teplotn´ım rozsahu nebo v poˇctu pˇremaz´an´ı flash pamˇeti.

3.2 V´ ybˇ er mikrokontrol´ eru

Pˇr´ı v´ybˇeru jednoˇcipov´eho poˇc´ıtaˇce hr´alo roli nˇekolik d˚uleˇzit´ych aspekt˚u. V prvn´ı ˇradˇe to byla pˇredem stanoven´a ˇrada AVR. Dalˇs´ı roli hr´al tak´e poˇcet pin˚u. Mo- dul totiˇz musel obs´ahnout vˇsechny komponenty v´yukov´eho pˇr´ıpravku. Svoji roli hr´ala tak´e velikost mikrokontrol´eru tzn. velikost pouzdra tak, aby zabral co nejmenˇs´ı ˇc´ast modulu. Velk´y v´yznam hr´alo tak´e nap´ajec´ı napˇet´ı, kter´e mˇelo b´yt +5V. Za posledn´ı d˚uleˇzit´y bod bylo povaˇzov´ano moˇzn´e pouˇzit´ı Arduino platformy do jednoˇcipov´eho poˇc´ıtaˇce. Po zv´aˇzen´ı nˇekolika variant padla volba na MCU z rodiny megaAVR, a to konkr´etnˇe na ATmega2560-16AU [5].

ATmega2560

Flash 256 kB

EEPROM 4 kB

RAM 8 kB

Celkov´y poˇcet pin˚u 100

Univerz´aln´ı I/O piny 86

16-ti bitov´e PWM kan´aly 12

UART 4

ADC kan´aly 16

Nap´ajec´ı napˇet´ı 4,5 - 5,5 V

Frekvence 0-16 MHz

Pouzdro TQFP100

Tabulka 3.3: Parametry mikrokontrol´eru

(21)

4. Program´ ator

Program´ator je zaˇr´ızen´ı, kter´e transportuje pˇredem upraven´y program v hexa- decim´aln´ım form´atu do pˇr´ısluˇsn´eho mikrokontrol´eru.

Pro jednoduch´e pouˇzit´ı modulu pˇri v´yuce byl kladen d˚uraz na um´ıstˇen´ı pro- gram´atoru pˇr´ımo na ploˇsn´em spoji. Vybran´y program´ator by pak komunikoval s poˇc´ıtaˇcem pomoc´ı USB. Po konzultaci s odborn´ıky byly vybr´any pro testov´an´ı a porovn´an´ı dva program´atory - Ponyser a USBasp.

4.1 Rozhran´ı ISP

USBasp i Ponyser komunikuj´ı s mikroˇcipem pomoc´ı ISP rozhran´ı (in system programming). Jedn´a se o takov´e rozhran´ı, kter´e umoˇzˇnuje programovat intern´ı pamˇeti jednoˇcipov´eho poˇc´ıtaˇce pˇr´ımo v c´ılov´e aplikaci. Toto ˇreˇsen´ı v´yraznˇe urych- luje proces v´yvoje a pˇredch´az´ı tak mechanick´emu poˇskozen´ı pˇri manipulaci mezi speci´aln´ım program´atorem a c´ılovou aplikac´ı. Mezi dalˇs´ı moˇznosti naprogramov´an´ı mikroˇcipu patˇr´ı rozhran´ı JTAG, BOOTLOADER a dalˇs´ı.

Existuj´ı dvˇe varianty konektorov´eho zapojen´ı ISP rozhran´ı, a to se ˇsesti vodiˇci nebo s deseti vodiˇci (viz obr. 4.1 a tab. 4.1, str. 21).

Obr´azek 4.1: Konektory ISP

(22)

Sign´al 6-pin˚u 10-pin˚u I/O V´yznam

VCC 2 2 – Nap´ajec´ı napˇet´ı

GND 6 (3),4,6,8,10 – Uzemnˇen´ı

MOSI 4 1 V´ystup Pˇr´ıkazy a data z program´atoru do MCU

MISO 1 9 Vstup Data z MCU do program´atoru

SCK 3 7 V´ystup Hodinov´y sign´al ˇr´ızen´y program´atorem RESET 5 5 V´ystup Reset ˇr´ızen´y program´atorem

Tabulka 4.1: Piny rozhran´ı ISP

4.2 Ponyser

Tento AVR program´ator patˇr´ı mezi nejjednoduˇsˇs´ı a nejlevnˇejˇs´ı zaˇr´ızen´ı. Pro v´yrobu program´atoru postaˇc´ı nˇekolik rezistor˚u, tˇri diody, tranzistor a dva konek- tory (viz obr. 4.2) nebo [9]. Pracuje pˇri nap´ajec´ım napˇet´ı +5 V. Ke komunikaci s poˇc´ıtaˇcem, kter´y nevlastn´ı DB9 konektor, mus´ı b´yt pouˇzit pˇr´ısluˇsn´a redukce.

Obr´azek 4.2: Sch´ema program´atoru Ponyser

4.3 USBasp

Toto AVR zaˇr´ızen´ı pouˇz´ıv´a pro naprogramov´an´ı mikrokontrol´er integrovan´y obvod. Zpravidla to b´yv´a mikroˇcip z rodiny megaAVR, kter´y obsahuje urˇcit´y fir-

(23)

mohou b´yt dvˇe, a to +3,3 V nebo +5 V. Umoˇzˇnuje tˇri d˚uleˇzit´a nastaven´ı pomoc´ı propojen´ı urˇcit´ych vodiˇc˚u (viz pˇr´ıloha C obr´azek 2):

• pˇrepnut´ı nap´ajen´ı mezi USB nebo extern´ım zdrojem napˇet´ı (konektor - JP1),

• programov´an´ı mikrokontrol´er˚u, kter´e maj´ı hodinovou frekvenci menˇs´ı neˇz 1,5 MHz (konektor - JP2),

• pˇreprogramov´an´ı samotn´eho integrovan´eho mikroˇcipu na program´atoru nov´ym nebo jin´ym firmwarem (konektor - JP3).

Obsahuje tak´e dvˇe LED diody, kter´e signalizuj´ı nap´ajen´ı a pˇrenos programu do mikroˇcipu. Pro vyˇsˇs´ı hodinovou frekvenci MCU na program´atoru se pouˇz´ıv´a extern´ı krystal s hodnotou 12MHz.

4.4 Testov´ an´ı

Jelikoˇz pˇrenosov´a rychlost program´atoru Ponyser nebyla urˇcena, odvodila se z pˇrenosu vybran´ych k´od˚u vzestupnˇe podle velikosti do mikroˇcipu v nep´ajiv´em poli (v tomto pˇr´ıpadˇe Atmega16). K propojen´ı poˇc´ıtaˇce s program´atorem byl pouˇzit pˇrevodn´ık USB - RS-232 (viz obr. 4.3).

Obr´azek 4.3: Ponyser na nep´ajiv´em poli

Pro lepˇs´ı srovn´an´ı byl tak´e testov´an program´ator USBasp (obr. 4.4, str. 23), kter´y nebyl sestaven nep´ajiv´em poli, ale pˇr´ımo koupen v internetov´em obchodu.

Firmware byl v mikrokontrol´eru pˇredem nahran´y. V softwaru avrdude-GUI (kapitola 6.1.1) se pak nastavily pˇr´ısluˇsn´e hodnoty pro jednotliv´e program´atory (viz obr. 4.5, str. 23).

Pot´e se zaˇcalo s nahr´av´an´ım jednotliv´ych k´od˚u vzestupnˇe podle velikosti. Pro- gram´ator Ponyser zaˇcal postupnˇe ztr´acet. Program, kter´y ˇcinil 2141 B, nahr´aval 33

(24)

Obr´azek 4.4: Testovac´ı USBasp

Obr´azek 4.5: Nastaven´ı program´ator˚u v avrdude-GUI

sekund. USBasp to dok´azal do 2 sekund. Testov´an´ı rychlosti tedy jednoznaˇcnˇe roz- hodlo pro USBasp. Nakonec byly shrnuty veˇsker´e v´yhody i nev´yhody jednotliv´ych program´ator˚u.

Jako pouˇzitelnˇejˇs´ı program´ator pro um´ıstˇen´ı na modul byl fin´alnˇe vybr´an USBasp, kter´y umoˇzˇnuje vˇetˇs´ı pˇrenosovou rychlost i schopnost pˇr´ım´eho propojen´ı s poˇc´ıtaˇcem pomoc´ı USB konektoru. Dalˇs´ı velikou v´yhodou tohoto program´atoru je moˇznost aktualizace firmwaru.

(25)

5. N´ avrh desky ploˇsn´ eho spoje

Pˇred samotn´ym n´avrhem doˇslo k peˇcliv´emu vyb´ır´an´ı softwaru, kter´y by do- stateˇcnˇe uspokojil vˇsechny pˇredem urˇcen´e poˇzadavky. Jednalo se pˇredevˇs´ım o cenu programu, mnoˇzstv´ı vrstev DPS, maxim´aln´ı velikost desky ploˇsn´eho spoje, poˇcet moˇzn´ych komponent, moˇznost vytvoˇren´ı vlastn´ı knihovny souˇc´astek nebo pˇrid´an´ı existuj´ıc´ı a v posledn´ı ˇradˇe tak´e internetov´a podpora programu. Pˇrednost pˇred pro- gramem Eagle dostal nakonec software KiCad.

5.1 O programu KiCad

Tento program byl vytvoˇren v roce 1992 Jean-Pierre Charrasem [12]. Na jeho dalˇs´ıch verz´ıch se nyn´ı pod´ıl´ı uˇz v´ıce lid´ı tzv. KiCad Developers Team. Software je volnˇe ˇsiˇriteln´y s licenc´ı GNU GPL v2. Mezi jeho hlavn´ı v´yhody patˇr´ı podpora pro Windows, Linux i Apple OS X, d´ale moˇznost neomezen´e velikosti sch´ematu a ploˇsn´eho spoje (m˚uˇze m´ıt aˇz 16 vrstev) a ˇsirok´a z´akladna knihoven na internetu, kter´e mohou vkl´adat tak´e samotn´ı uˇzivatel´e. Je zde moˇznost trojrozmˇern´eho n´avrhu souˇc´astek, ale i 3D pohled na aktu´aln´ı ploˇsn´y spoj. Pro program Kicad je k dispozici tak´e ˇceˇstina. Bohuˇzel nˇekter´a slova nebyla z angliˇctiny pˇreloˇzena.

5.2 Popis programu Kicad

5.2.1 Editor sch´ ematu

Prvn´ı integrovan´y software Kicadu nese n´azev Eeschema. Umoˇzˇnuje navrhnout sch´ema elektrick´eho obvodu. M´a na v´ybˇer tˇri druhy: jednostr´ankov´e, v´ıcestr´ankov´e a hierarchick´e. D´ale nab´ız´ı um´ıst’ov´an´ı souˇc´astek a nap´ajec´ıch port˚u, propojovac´ı spoje, sbˇernice i jejich textov´y popis, oznaˇcen´ı nezapojen´ych spoj˚u, pˇrid´av´an´ı pro- pojen´ı, kop´ırov´an´ı vybran´ych blok˚u, v´ybˇer mˇr´ıˇzky v palc´ıch nebo milimetrech.

• Prohl´ıˇzeˇc knihoven

Zobrazuje jednotliv´e souˇc´astky v urˇcen´ych knihovn´ach. Pouˇz´ıv´a se hlavnˇe pro celkov´y pˇrehled i v´ybˇer knihoven, kter´e budou ve sch´ematu pouˇzity. Lze tak´e zobrazit jednotliv´e datasheety souˇc´astek ve form´atu PDF.

(26)

• Editor knihoven

Tento program umoˇzˇnuje vytv´aˇren´ı nov´ych knihoven i souˇc´astek (obr. 5.1).

Uˇzivatel m´a na v´ybˇer nˇekolik moˇznost´ı: vytvoˇrit souˇc´astku do nov´e nebo pˇredem vybran´e knihovny, naˇc´ıst ji ze st´avaj´ıc´ı knihovny a upravit jej´ı vlastnosti, vytvoˇrit novou souˇc´astku ze st´avaj´ıc´ı.

Obr´azek 5.1: Vytvoˇren´ı nov´e souˇc´astky

N´asleduje vytv´aˇren´ı grafick´e str´anky, kter´a umoˇzˇnuje vykreslit sch´ematickou znaˇcku souˇc´astky. Pˇri vloˇzen´ı pinu souˇc´astky lze nastavit spoustu parametr˚u jako je napˇr. ˇc´ıslo, druh v´yvodu, orientace atp.

• Oˇc´ıslov´an´ı souˇc´astek ve sch´ematu

Kaˇzdou komponentu v n´avrhu je nutno oˇc´ıslovat, kv˚uli generov´an´ı netlistu.

V tomto programu se d´a nastavit nˇekolik krit´eri´ı. Prvn´ım z nich je rozsah, kter´y nab´ız´ı oˇc´ıslovat aktu´aln´ı str´anku nebo celou hierarchii. Dalˇs´ı nab´ız´ı smazat aktu´aln´ı ˇc´ıslov´an´ı nebo ho ponechat a doplnit, znaˇcit souˇc´astky podle pozice hodnoty X a Y. Lze tak´e nastavit v´ybˇer oˇc´ıslov´an´ı od urˇcit´ych hodnot: pouˇzije prvn´ı voln´e ˇc´ıslo ve sch´ematu, zaˇcne od ˇc´ısla listu sch´ematu vyn´asoben´eho 100 nebo 1000 a pouˇzije prvn´ı voln´e ˇc´ıslo.

• Kontrola elektrick´ych pravidel

Kontrola elektrick´ych pravidel (v programu nˇekdy pod n´azvem ERC) hl´ıd´a chyby uˇzivatele zp˚usoben´e pˇri n´avrhu sch´ematu (napˇr. zapojen´ı v´ystupu na v´ystup

(27)

Obr´azek 5.2: Kontroln´ı matice

si s´am zvol´ı, kter´e chyby m´a ERC hl´ıdat. Existuj´ı tˇri moˇznosti. Pˇri propojen´ı dvou sign´al˚u program nahl´as´ı varov´an´ı, error nebo na nic neupozorn´ı tzn., ˇze je vˇse v poˇr´adku.

• Generov´an´ı netlistu

Tento program umoˇzˇnuje pˇrechod do n´avrhu DPS generov´an´ım netlistu (se- znam souˇc´astek a spoj˚u). Kicad umoˇzˇnuje export i do jin´ych n´avrhov´ych program˚u.

Napˇr´ıklad OrCad, CadStar, Spice. Daj´ı se tak´e pouˇz´ıt r˚uzn´e z´asuvn´e moduly, takˇze export m˚uˇze b´yt jeˇstˇe v´ıce rozˇs´ıˇren.

• Generov´an´ı rozpisu materi´alu

Jak uˇz s´am n´azev napov´ıd´a, tento program dok´aˇze vygenerovat seznam vˇsech souˇc´astek, jejich hodnoty i pouzdra. Toho se vyuˇz´ıv´a pˇredevˇs´ım pˇri tvorbˇe ob- jedn´avek, kdy program nab´ıdne uˇzivateli hotov´y soupis komponent. Seznam se d´a otevˇr´ıt t´emˇeˇr v kaˇzd´em textov´em editoru.

5.2.2 Pˇriˇrazov´ an´ı pouzder

Vˇetˇsina souˇc´astek se vyr´ab´ı v nˇekolika pouzdrov´ych variant´ach. Poˇzadovan´e pˇriˇrazen´ı v programu KiCad ˇreˇs´ı software s n´azvem CvPcb. Souˇc´astka ve sch´ematu z´ısk´a urˇcit´e rozm´ıstˇen´ı p´ajec´ıch ploˇsek, kter´e je nutn´e k n´avrhu desky ploˇsn´eho spoje.

Stejnˇe jako existuje knihovna souˇc´astek pro n´avrh sch´ematu, existuje tak´e knihovna pouzder. Uˇzivatel v programu nahraje generovan´y netlist, a t´ım se n´aslednˇe zobraz´ı veˇsker´e pouˇz´ıvan´e souˇc´astky ve sch´ematu. Po nahr´an´ı knihovny pouzder lze propojit souˇc´astku s vybran´ym pouzdrem. Pot´e je vˇse pˇripraveno k n´avrhu ploˇsn´eho spoje.

(28)

Obr´azek 5.3: Uk´azka softwaru pˇriˇrazen´ı pouzder

• Zobrazen´ı vybran´ych pouzder

V programu existuje tak´e funkce oznaˇcovan´a jako Zobrazit vybran´e pouzdro, kter´a uˇzivateli nab´ıdne celkov´y vzhled souˇc´astky a rozm´ıstˇen´ı p´ajec´ıch ploˇsek. Umoˇzˇnuje i 3D pohled (viz obr. 5.3).

5.2.3 Editor ploˇsn´ eho spoje

Tˇret´ı program z nab´ıdky KiCad m´a n´azev Pcbnew. Vytv´aˇr´ı koneˇcn´y n´avrh desky ploˇsn´eho spoje. Mezi jeho hlavn´ı funkce patˇr´ı vytv´aˇren´ı spoj˚u a pr˚uchodek, dodateˇcn´e pˇrid´an´ı modul˚u, vyplnˇen´ı vodiv´ymi oblastmi nebo zv´yraznˇen´ı s´ıtˇe vy- bran´eho sign´alu.

V dalˇs´ıch podkapitol´ach budou vysvˇetleny dalˇs´ı podprogramy a d˚uleˇzit´e funkce, kter´e jsou potˇreba pro zhotoven´ı ploˇsn´eho spoje.

• Nahr´an´ı netlistu

Pˇri vytvoˇren´ı nov´e DPS se v programu nejprve nahraje netlist, kter´y si uˇzivatel s´am vybral a nastavil v pˇredchoz´ıch programech. To umoˇzn´ı zobrazit jednotliv´e komponenty propojen´e sign´alov´ymi ˇcarami tak, jak byly ve sch´ematu navrˇzeny.

• Rozm´ıstˇen´ı souˇc´astek

Pˇri importu souˇc´astek do programu se st´av´a, ˇze dojde k pˇrekr´yv´an´ı jednot- liv´ych komponent. Kv˚uli celkov´emu pˇrehledu existuje v programu funkce Reˇzim

(29)

• Technick´e vrstvy

N´avrh DPS je rozdˇelen do nˇekolika vrstev. Kaˇzd´a pln´ı svou vlastn´ı roli. Rozdˇelen´ı v´yznamn´ych vrstev v programu KiCad je n´asleduj´ıc´ı:

Cu - vrstva mˇedi

Adhes - vrstva lepidla (pro SMD souˇc´astky) Paste - vrstva p´ajec´ı pasty

Silks - vrstva rozm´ıstˇen´ı potisku Mask - vrstva nep´ajiv´e masky User - uˇzivatelsk´a vrstva

Cuts - rozmˇer desky ploˇsn´eho spoje

• Module Editor

Tento podprogram slouˇz´ı k vytv´aˇren´ı nebo upravov´an´ı jednotliv´ych pouzder. Pˇred samotn´ym n´avrhem se vybere tzv. aktu´aln´ı knihovna, do kter´e m´a b´yt toto pouzdro um´ıstˇeno. Po zad´an´ı n´azvu m˚uˇze zaˇc´ıt samotn´y n´avrh. Daj´ı se vkl´adat r˚uzn´e druhy a velikosti pad˚u. Aby bylo zaruˇceno spr´avn´e propojen´ı symbolu s pouzdrem souˇc´astky na ploˇsn´em spoji, mus´ı m´ıt piny i pady stejn´a ˇc´ısla. Existuje zde tak´e moˇznost ohraniˇcen´ı souˇc´astky pomoc´ı ˇc´ary, mnoho´uheln´ıku atd. K vytvoˇren´emu pouzdru lze pak pˇriˇradit i 3D model z programu Wings3D.

• Autoroutery

Pˇri sloˇzit´em n´avrhu ploˇsn´eho spoje lze vyuˇz´ıt program tzv. autorouter, kter´y s´am navrhne jednotliv´e vodiv´e cesty. Uˇzivatel m´a na v´ybˇer hned dva. Prvn´ı se nach´az´ı pˇr´ımo v editoru DPS. Pro spr´avnou funkˇcnost se mus´ı nastavit n´avrhov´a pravidla pˇr´ımo v PCB editoru. Druh´y, s n´azvem FreeROUTE, je k dispozici pˇres internet pomoc´ı Java pluginu. Obsahuje vlastn´ı nastaven´ı n´avrhov´ych pravidel.

• Vykreslen´ı

Pro vyroben´ı ploˇsn´eho spoje je nutno vykreslit jednotliv´e vrstvy, kter´e budou d´ale posl´any do v´yroby. Volbou Kreslit v programu otevˇre uˇzivatel menu, ve kter´em vybere pˇr´ısluˇsn´e vrstvy a soubor vrt´an´ı. Pot´e vybere form´at: Gerber, Postscript, SVG, DXF nebo HPGL.

5.2.4 Prohl´ıˇzeˇ c Gerber

Ctvrt´ˇ y podprogram v nab´ıdce Kicad, kter´y byl v bakal´aˇrsk´e pr´aci pouˇzit se naz´yv´a GerbView. Umoˇzˇnuje uˇzivateli prohl´ıˇzet a tisknout soubory Gerber i vrtac´ı soubory Excellon.

(30)

5.2.5 3D modeling

Extern´ı program pro modeling souˇc´astek ve trojrozmˇern´em prostoru umoˇzˇnuje program, kter´y m´a n´azev Wings 3D. Je velice snadn´y a spolehliv´y. Vyznaˇcuje se intuitivn´ım ovl´ad´an´ım, coˇz kaˇzd´y zaˇc´ateˇcn´ık ocen´ı. Hod´ı se napˇr´ıklad pro spolupr´aci mezi n´avrh´aˇrem a konstrukt´erem.

Nˇekter´e souˇc´astky AVR modulu neobsahovaly 3D pohled. Byly tedy navrˇzeny ve zm´ınˇen´em softwaru a exportov´any do programu KiCad. Pro spr´avnou velikost souˇc´astky v 3D vizualizaci n´avrhov´eho softwaru musel b´yt pˇresnˇe nastaven exportn´ı rozmˇer (viz obr. 5.4). Celkov´y pohled na v´ysledn´y 3D AVR modul (viz pˇr´ıloha B obr´azek 1).

Obr´azek 5.4: Exportn´ı nastaven´ı souˇc´astky

5.3 Postup pˇri n´ avrhu sch´ ematu

Po v´ybˇeru MCU a vhodn´eho program´atoru bylo moˇzno pˇrej´ıt k samotn´emu n´avrhu sch´ematu. Nejprve doˇslo k pˇrevzet´ı a upraven´ı (z´amˇenou mikroˇcipu) progra- movac´ı ˇc´asti sch´ematu (viz pˇr´ıloha C obr´azek 8). Pro moˇznost resetovat ˇr´ıd´ıc´ı mi- kroˇcip bylo na resetovac´ı pin pˇripojeno tlaˇc´ıtko. Vloˇzen´ım extern´ıho krystalu mezi urˇcit´e piny se zajistila pˇresn´a hodinov´a frekvence ˇr´ıd´ıc´ıho integrovan´eho obvodu ATmega2560. LED bargraf na pˇr´ıpravku se vˇzdy na ostatn´ıch v´yukov´ych modulech obsluhoval pomoc´ı dvou 8-bitov´ych posuvn´ych registr˚u. Byly tedy tak´e zaˇrazeny do sch´ematu (viz pˇr´ıloha C obr´azek 3). Pro moˇznost pˇripojen´ı zaj´ımav´ych komponent od firmy Arduino byly zahrnuty tak´e konektory pro Arduino Shield. Po propojen´ı sign´al˚u zbylo nˇekolik voln´ych pin˚u mikrokontrol´er ATmega2560. Vybrali se proto

(31)

optick´e ˇcidlo a senzor svˇetla. Ostatn´ı nepouˇzit´e piny byly sign´aly vyvedeny na sa- mostatn´y konektor pro pˇr´ıpadn´e pouˇzit´ı.

Pˇri navrhov´an´ı sch´ematu se nˇekter´e symboly museli navrhovat vlastnoruˇcnˇe (viz kapitola 5.2.1). Po fin´aln´ım n´avrhu sign´alov´ych cest se komponenty oˇc´ıslovaly a probˇehla kontrola elektrick´ych pravidel. Nakonec bylo v´ysledn´e sch´ema pouˇzito pro generov´an´ı netlistu.

5.4 Postup pˇri v´ ybˇ eru pouzder

Pˇri v´ybˇeru pouzder jednotliv´ych komponent se kladl d˚uraz na co nejmenˇs´ı rozmˇery, protoˇze velikost modulu nebyla zrovna nejvˇetˇs´ı. Spolu s t´ımto faktorem hr´ala d˚uleˇzitou roli tak´e moˇznost p´ajen´ı souˇc´astek pomoc´ı pˇr´ım´eho p´ajec´ıho hrotu s pr˚umˇerem ˇspiˇcky 0,5 mm. Jako nejmenˇs´ı SMD pouzdro bylo tedy vybr´ano 0805.

V posledn´ı ˇradˇe se bral ohled i na dostupnost souˇc´astek v internetov´em obchodu.

Nˇekter´a pouzdra bohuˇzel nebyla v nab´ıdce programu CvPcb. Vytvoˇrila se tedy ruˇcnˇe v programu Module Editor.

5.5 Postup pˇri n´ avrhu DPS

V n´avrhu desky ploˇsn´eho spoje se muselo dodrˇzet um´ıstˇen´ı vˇsech souˇc´astek na horn´ı stranˇe oboustrann´e DPS. Jedinou v´yjimku tvoˇrily konektory, kter´e se zasuno- valy do v´yukov´eho pˇr´ıpravku. Mˇelo to pomoci k lepˇs´ımu vysvˇetlen´ı v´yznamu jed- notliv´ych komponent pˇri v´yuce. Dalˇs´ı v´yhodou byl komfortnˇejˇs´ı pˇr´ıstup pˇri hled´an´ı jak´ekoliv z´avady na ploˇsn´em spoji (viz pˇr´ıloha C obr´azek 5, 6 a 7).

Prvn´ı vˇec´ı v programu Pcbnew bylo vyznaˇcen´ı obrysu modulu, kter´y se pˇrejal z layoutu starˇs´ıch modul˚u pouˇz´ıvan´ych pˇri v´yuce. Rozm´ıstˇen´ı konektor˚u, jejichˇz v´ystupy ovl´adaly komponenty pˇr´ıpravku, byla tak´e pˇrevzata ze stejn´eho zdroje. Ko- nektory pro Arduino Shield byly rozestavˇeny podle internetov´eho sch´ematu pod licenc´ı GNU GPL na str´ank´ach firmy spolu s ISP rozhran´ım [14]. Pot´e doˇslo k um´ıst’ov´an´ı integrovan´ych obvod˚u ATmega2560, ATmega168 i jejich extern´ıch krys- tal˚u, posuvn´ych registr˚u a souˇc´astek ve schematick´e ˇc´asti USBasp. Nakonec byly rozestavˇeny tyto komponenty: reset tlaˇc´ıtko, senzor svˇetla [17], RGB LED [16] a op- tick´y senzor [18] tak, aby nebyly po zasunut´ı libovoln´eho Arduino Shieldu zakryty.

Po rozm´ıstˇen´ı vˇsech souˇc´astek n´asledovalo jejich propojen´ı sign´alov´ymi i nap´aje- c´ımi vodiˇci. V nastaven´ı se zvolila jednotn´a ˇs´ıˇrka vodiˇce, kter´a byla schopna pˇripojit sousedn´ı vodiˇce k pouzdru TQFP100 s dostateˇcnou mezerou. Pˇrednˇe se zaˇcaly v´est sign´aly napˇet’ov´e a zemn´ıc´ı. Pak nastalo propojov´an´ı sign´al˚u ISP rozhran´ı.

N´asledovalo veden´ı cest od program´atoru (ATmega168 [6]), ale i od komponent v´yukov´eho pˇr´ıpravku k mikroˇcipu ATmega2560. Pˇri tak vysok´em poˇctu cest na mal´em prostoru muselo b´yt pouˇzito nˇekolik des´ıtek pr˚uchodek.

(32)

6. Programov´ an´ı modulu

Pro demonstraci funkˇcnosti vyroben´eho AVR modulu (viz pˇr´ıloha B obr´azek 8) bylo nutno naprogramovat vhodn´e pˇr´ıklady. Byly sestaveny dva programy. Prvn´ı se naprogramoval v Atmel Studiu v jazyku C. Druh´y byl sestaven v prostˇred´ı Arduino.

Nejprve se vˇsak musel nastavit program´ator.

6.1 Naprogramov´ an´ı USBasp

Prvn´ı vˇec´ı po zhotoven´ı a osazen´ı modulu bylo nutno naprogramovat pˇr´ısluˇsn´y integrovan´y obvod (ATmega168) tak, aby se choval jako program´ator. Firmware byl staˇzen z internetov´eho zdroje [8] pod licenc´ı GNU GPLv2 pˇr´ımo v hexadecim´aln´ım tvaru. Pro nahr´an´ı k´odu do integrovan´eho obvodu byl pouˇzit extern´ı program´ator AVRProg USBv2 [23] (podobn´a vnitˇrn´ı struktura jako u USBasp). Protoˇze tento program´ator obsahoval 10-ti pinov´y konektor ISP, musela b´yt vyrobena redukce, aby doˇslo ke spojen´ı pˇr´ısluˇsn´ych pin˚u v modulu (viz pˇr´ıloha B obr´azek 9). Reset pin vˇsak nebyl pˇripojen na ISP rozhran´ı, ale na konektor JP2 pin 1. N´asledovalo propojen´ı konektor˚u pomoc´ı jumper˚u na ploˇsn´em spoji modulu, a to JP1 a JP3 (viz obr.

C.2). Posledn´ı vˇec, kter´a byla nutn´a ke spr´avn´emu fungov´an´ı firmwaru v MCU, bylo nastaven´ı jednotliv´ych intern´ıch propojek. Na internetov´em kalkul´atoru [21] byly nastaveny urˇcit´e parametry, kter´e definovaly v´yslednou hodnotu propojek (viz obr.

B.2). V softwaru avrdude-GUI byly nastaveny jednotliv´e parametry a c´ılov´a cesta k hexadecim´aln´ımu tvaru firmwaru (viz pˇr´ıloha B obr´azek 4). Po stisknut´ı tlaˇc´ıtka Write v r´ameˇcku Fuse doˇslo k pˇreps´an´ı propojek. Koneˇcnou programovac´ı f´az´ı bylo kliknut´ı na poloˇzku Write v r´ameˇcku Flash. Po odpojen´ı extern´ıho program´atoru a odebr´an´ı propojky JP1 na ploˇsn´em spoji bylo potˇreba nainstalovat ovladaˇc pro spr´avnou funkci USBasp program´atoru. USB konektor na AVR modulu se propojil pomoc´ı redukˇcn´ıho kabelu k PC. Objevila se informace (viz obr. 6.1, str. 32).

Ve vlastnostech USB portu bylo potˇreba vybrat spr´avn´y ovladaˇc. Ten obsaho- val soubor ve form´atu ZIP, ve kter´em se nach´azel tak´e firmware. Po aktualizaci se port pˇrihl´asil jako USBasp (viz obr. 6.2, str. 32).

6.1.1 AVRDUDE

Tento program umoˇzˇnuje nahr´avat nebo stahovat programy z pamˇeti Flash a EEPROM z AVR mikrokontrol´eru pomoc´ı ISP. N´azev toho n´astroje vznik z ang-

(33)

Obr´azek 6.1: Prvn´ı pˇripojen´ı USBasp

Obr´azek 6.2: Nainstalovan´y ovladaˇc USBasp

ho prvnˇe nazval AVRPROG a prvnˇe fungoval na operaˇcn´ım syst´emu FreeBSD. Kv˚uli velik´emu z´ajmu vznikla i podpora pro Windows. Aby se vyhnul konfliktu s AVR- PROG.EXE (Atmel’s Windows programming software), pˇrejmenoval n´azev na AVR- DUDE. Dnes tento program podporuje tak´e Linux i Apple OS X a patˇr´ı do licenˇcn´ı skupiny GNU GPL v2 [20].

Spuˇstˇen´ı toho programu se prov´ad´ı v pˇr´ıkazov´em ˇr´adku pomoc´ı slova avrdude.

Pomoc´ı jednotliv´ych pˇr´ıkaz˚u nastav´ıme potˇrebn´e parametry.

Pro lepˇs´ı a pˇrehlednˇejˇs´ı programov´an´ı lze pouˇz´ıt avrdude-GUI. Tento soubor umoˇzˇnuje grafick´e uˇzivatelsk´e rozhran´ı (zkratka GUI viz pˇr´ıloha B obr´azek 5). Ob- sahuje v´ybˇer z nˇekolika des´ıtek mikrokontrol´er˚u a druh˚u program´ator˚u. Pˇri Device a Programmer. Po urˇcen´ı tˇechto parametr˚u n´asleduje v´ybˇer portu Port, na kter´em se programovac´ı zaˇr´ızen´ı nach´az´ı. D´ale je zde moˇzno urˇcit vnitˇrn´ı nastaven´ı mikroˇcipu pomoc´ı intern´ıch propojek Fuses. V prostˇren´ı avrdude-GUI lze jednoduˇse vyb´ırat soubory, kter´e se maj´ı nahr´at do pamˇeti Flash nebo EEPROM. Jednotliv´e pamˇeti se daj´ı ˇcist i pˇrepisovat. Existuje zde tak´e tlaˇc´ıtko Terminal, kter´e zjist´ı dostupnost MCU po pˇredem urˇcen´ych parametrech (tj. zvolen´y program´ator, port a zaˇr´ızen´ı).

V pˇr´ıpadˇe neshody nebo nespr´avn´eho pˇripojen´ı program´atoru k mikroˇcipu n´aleˇzitˇe upozorn´ı vhodn´ym koment´aˇrem. Oznaˇcen´ı Lock Bit slouˇz´ı k uzamˇcen´ı firmwaru.

Tlaˇc´ıtko Chip Erase vymaˇze pamˇet’ Flash i EEPROM v jednoˇcipov´em poˇc´ıtaˇci.

Posledn´ım n´astrojem v programu je Command line Option, kter´y je totoˇzn´y s pro-

(34)

gramov´an´ım mikrokontrol´eru v pˇr´ıkazov´e ˇr´adce.

6.1.2 Programovac´ı propojky (Fuse Bits)

Vˇetˇsina mikroˇcip˚u lze speci´alnˇe nastavit pomoc´ı tzv. programovateln´ych pro- pojek [5]. Slouˇz´ı hlavnˇe k nastaven´ı hodinov´eho sign´alu MCU, ochranˇe proti pˇrepisu atd. Mezi nejz´akladnˇejˇs´ı patˇr´ı:

Propojka V´yznam

CKDIV8 dˇeliˇcka frekvence hodin osmi

CKOUT hodinov´y v´ystup na tov´arnˇe urˇcen´y pin SUT[1..0] doba pro spuˇstˇen´ı MCU (urˇcen´a krystalem) CKSEL[3..0] urˇcen´ı frekvence hodin: intern´ı,extern´ı atd.

SPIEN komunikace pˇres ISP

WDTON pˇri zacyklen´ı resetuje procesor

EESAVE EEPROM pamˇet’ je pˇri pˇremaz´an´ı zachov´ana BODLEVEL[2..0] reset mikroˇcipu pˇri poklesu nap´ajec´ıho napˇet´ı

Tabulka 6.1: Propojky

6.2 Prvn´ı ´ uloha

V zad´an´ı bakal´aˇrsk´e pr´ace nebyly nikde pˇresnˇe stanoveny pˇr´ıklady, kter´e by mˇely v´ysledn´y modul otestovat na v´yukov´em pˇr´ıpravku. Byl tedy vymyˇslen program v jazyku C, kter´y demonstroval pouˇzit´ı komponent pˇr´ıpravku i modulu.

6.2.1 Atmel Studio

Veˇsker´y k´od byl seps´an v programovac´ım prostˇred´ı Atmel Studio 6.1 [19].

Pˇrednost dostalo pˇred WinAVR d´ıky inteligentn´ımu asistentovi doplˇnov´an´ı k´odu.

Tato funkce predikuje uˇzivatel˚uv z´amˇer pˇri psan´ı instrukce a nab´ız´ı mu fin´aln´ı va- rianty. Nen´ı proto nutn´e ˇcast´e nahl´ıˇzen´ı do datasheetu souˇc´astky. Nˇekdy se tato funkce vyskytuje pod pojmem IntelliSense.

Mezi hlavn´ı parametry programu patˇr´ı:

• podpora pro 8-bitov´e, 32-bitov´e AVR mikrokontrol´ery a dalˇs´ı napˇr´ıklad ARM,

• programovac´ı jazyky: C/C++ a assembler,

• integrovan´y kompil´ator a debugger,

• integrovan´e z´akladn´ı knihovny,

(35)

6.2.2 Funkce programu prvn´ı ´ ulohy

Po pˇriveden´ı nap´ajec´ıho napˇet´ı zaˇcnou LED diody a ˇz´arovka sv´ıtit, LED bar- graf blikat, piezosir´enka bzuˇcet, RGB LED dioda postupnˇe stˇr´ıdat tˇri z´akladn´ı barvy a na LCD displej je vysl´an n´apis V´ıt´a V´as pˇr´ıpravek TUL. Po pˇeti vteˇrin´ach dojde k smaz´an´ı displeje a k pˇrejit´ı do m´odu menu. Na displej se postupnˇe zaˇcne ps´at dvojice za sebou jdouc´ıch n´apis˚u, kaˇzd´y na jeden ˇr´adek, kter´e reprezentuj´ı jednotliv´e m´ody.

Tlaˇc´ıtky na pˇr´ıpravku lze posouvat jednotliv´e poloˇzky nebo vstupovat i vystupovat z vybran´ych reˇzim˚u. Seznam vˇsech poloˇzek v menu je n´asleduj´ıc´ı:

• Re´aln´y ˇcas

Na v´yukov´em pˇr´ıpravku je um´ıstˇen integrovan´y obvod DS1338, obvod re´aln´eho ˇcasu RTC [11], kter´y poˇc´ıt´a sekundy, minuty, hodiny, mˇes´ıce, den v t´ydnu a rok.

Obsahuje integrovan´y krystal s hodnotou 32 768 Hz, kter´y pˇresnˇe poˇc´ıt´a dan´e cykly.

Pomoc´ı s´eriov´eho rozhran´ı I2C komunikuje s MCU rychlost´ı 100 kHz.

Pˇri programov´an´ı tohoto prvn´ıho reˇzimu byly pouˇzity komunikaˇcn´ı TWI kni- hovny, kter´e byly upraveny pˇr´ımo na tento m´od. V prvn´ı ˇradˇe se mikrokontrol´er dot´azal na urˇcenou adresu RTC obvodu. Kdyˇz hodiny re´aln´eho ˇcasu dok´azaly pr´avnˇe odpovˇedˇet, nav´azala se komunikace. Pot´e se nahr´aly pˇr´ısluˇsn´e hodnoty sekund, mi- nut atd. do registr˚u RTC obvodu. Pˇri kaˇzd´em zobrazen´ı tohoto m´odu byl jednoduˇse vyˇz´ad´an aktu´aln´ı ˇcas od RTC obvodu. Po odpojen´ı nap´ajec´ıho napˇet´ı nebyly ´udaje o ˇcase ztraceny d´ıky z´aloˇzn´ı baterii um´ıstˇen´e na pˇr´ıpravku.

• Senzor teploty

Druh´a poloˇzka v menu zobrazuje aktu´aln´ı teplotu v prostˇred´ı v´yukov´eho pˇr´ı- pravku [15]. V´ystup tohoto ˇcidla generuje obd´eln´ıkov´y sign´al s frekvenc´ı 1-4 kHz.

Zmˇena stˇr´ıdy se mˇen´ı v z´avislosti na teplotˇe. Teplotn´ı ˇcidlo bylo pˇripojeno k pinu mikrokontrol´eru, kter´y umoˇzˇnoval pˇreruˇsen´ı.

Pˇri psan´ı programovac´ıho k´odu pro zjiˇstˇen´ı teploty je nejprve potˇreba na- stavit pˇreruˇsen´ı pro kaˇzdou hranu sign´alu. D´ale pak povolit 16-bitov´y ˇcasovaˇc pro urˇcen´ı doby sign´alu v jednotliv´em stavu. Z tˇechto hodnot se urˇcila stˇr´ıda sign´alu (viz obr.6.3). N´asledoval v´ypoˇcet teploty. Po zkonvertov´an´ı dat se hodnota teploty

Obr´azek 6.3: Uk´azka v´ypoˇctu teploty

(36)

um´ıstila na displej. Pro zahˇr´ıv´an´ı teplotn´ıho ˇcidla mohla b´yt pouˇzita ˇz´arovka, kter´a se rozsv´ıtila po stisku prav´eho tlaˇc´ıtka na v´yukov´em pˇr´ıpravku.

• Psan´ı na LCD

V tomto m´odu mohl uˇzivatel zobrazovat ˇc´ıslice na LCD displej po stisknut´ı kl´avesy z maticov´e kl´avesnice (obr. 6.4). Byla zde moˇznost zapisovat jednotliv´a ˇc´ısla od 0 do 9 a dva znaky * a # v libovoln´em poˇrad´ı. Pˇri stisku kl´avesy A dojde k pˇrem´ıstˇen´ı kurzoru na prvn´ı pozici prvn´ıho ˇr´adku LCD displeje. Obdobnˇe i kl´avesa B zp˚usob´ı pˇresun kurzoru, v tomto pˇr´ıpadnˇe vˇsak na prvn´ı pozici 2. ˇr´adku. Kl´avesa C provede vymaz´an´ı veˇsker´ych ˇc´ıslic a nastav´ı kurzor na prvn´ı pozici prvn´ıho ˇr´adku.

Pomoc´ı posledn´ı kl´avesy D lze pˇrepnout kurzor. M˚uˇze bud’ blikat nebo b´yt vypnut.

Cel´y program funguje na principu zmˇeny logick´ych ´urovn´ı jednotliv´ych pin˚u, kter´e jsou pˇripojeny ke kl´avesnici. ˇCtyˇri piny, kter´e jsou pˇripojeny ke sloupc˚um ma- tice, se v programu nastavily jako v´ystupy. Dalˇs´ı ˇctyˇri piny byly pˇripojeny k ˇr´adk˚um matice a nastaveny jako vstupy. Protoˇze pˇr´ıpravek obsahuje zvedac´ı rezistory, byl stav vstup˚u v pozitivn´ı logice logick´a ”1”. Pot´e n´asledoval samotn´y algoritmus na vy- hled´av´an´ı kl´avesy. ˇSlo o postupnou zmˇenu jednoho v´ystupu (sloupce) z logick´e ”1”do logick´e ”0”. Ostatn´ı tˇri v´ystupn´ı piny byly nastaveny do logick´e ”1”. D´ale program zkontroloval hodnoty vstup˚u (ˇr´adk˚u). Pakliˇze doˇslo ke zmˇenˇe vstupu do logick´e ”0”, muselo nastat propojen´ı (stisk kl´avesy) aktu´alnˇe kontrolovan´eho ˇr´adku s aktu´aln´ım sloupcem s hodnotou v logick´e ”0”. Tento algoritmus byl nad´ale pouˇzit pro kontrolu ostatn´ıch sloupc˚u. Vˇzdy se tedy nastavila logick´a ”0”do jin´eho v´ystupn´ıho pinu.

Jestliˇze nenastal stisk kl´avesy, byla vr´acena defaultn´ı hodnota a celkov´y algoritmus se zaˇcal opakovat.

Obr´azek 6.4: Uk´azka konstrukce kl´avesnice

• Posuvn´y registr

Ctvrt´a poloˇzka pˇredv´ad´ı funkci LED bargrafu na tˇrech naprogramovan´ˇ ych

´

uloh´ach. Prvn´ı s n´azvem Blik´an´ı nar´az zap´ın´a a vyp´ın´a LED diody baru v kr´atk´em ˇcasov´em intervalu. Dalˇs´ı Knight Rider simuluje jeden z efekt˚u chytr´eho auta v popul´arn´ım americk´em seri´alu Knight Rider. Tato ´uloha postupnˇe zapne LED di-

(37)

rozsv´ıcen´e k prvn´ı. Posledn´ı s n´azvem Stˇr´ıd´an´ı zap´ın´a a vyp´ın´a jednotliv´e LED diody postupnˇe ob jednu.

Pˇri programov´an´ı tˇechto aplikac´ı byla nutn´a znalost funkce 8-bitov´ych po- suvn´ych registr˚u 74HC595 [10]. Dva totiˇz ovl´adaly vˇsech deset diod v bargrafu pomoc´ı pˇeti hlavn´ıch pin˚u, kter´e byly ˇr´ızeny MCU ATmega2560 (tab. 6.2). Cel´y algoritmus spoˇc´ıval ve spr´avn´em nastaven´ı a zobrazen´ı hodnot posuvn´eho registru.

Kaˇzd´a ´uloha nejprve zaˇc´ınala pˇr´ısluˇsn´ym n´apisem na LCD displej. Pot´e n´asledovalo vlastn´ı vykon´av´an´ı dan´eho algoritmu.

Sign´al Vysvˇetlen´ı

SER Hodnota pro dalˇs´ı posuv

SRCLK Pˇri pˇriveden´ı hodinov´eho sign´alu posune registr

RCLK Ve stavu logick´e ”1”zobraz´ı hodnoty registru na v´ystupy SRCLK Ve stavu logick´e ”0”vymaˇze posuvn´y registr

OH(Q7’) V´ystupn´ı hodnota pˇriveden´a do 2. regitru na pin SER Tabulka 6.2: Hlavn´ı piny posuvn´eho registru

• P´ısniˇcky

Pro pˇredveden´ı zvukov´eho efektu pˇr´ıpravku byla pouˇzita piezosir´enka. Ta umoˇz- ˇ

nuje pˇrehr´at dva druhy p´ısn´ı. Prvn´ı p´ısniˇcka Ovˇc´aci ˇctver´aci je definov´ana v dvouˇc´ar- kovan´e okt´avˇe tj. od c” (523,2 Hz) do h”.Druh´a Sk´akal pes byla naprogramov´ana v okt´avˇe jednoˇc´arkovan´e tzn. od c’ (261,5 Hz) do h’.

Pˇri programov´an´ı piezosir´enky neˇslo pouˇz´ıt v´ystup z ˇcasovaˇce, jelikoˇz to pin procesoru neumoˇzˇnoval. Vˇetˇsina takov´ychto pin˚u byla totiˇz pouˇzita pro PWM Ar- duino Shieldu. Pouˇzilo se tedy pˇreruˇsen´ı 8-bitov´eho ˇcasovaˇce pˇri CTC. V´ypoˇcet hod- noty jednotliv´ych t´on˚u byl proveden na internetov´em kalkul´atoru [22] (viz obr. 6.5, str. 37), kde se nastavily pˇr´ısluˇsn´e hodnoty ˇcasovaˇce i pˇrevr´acen´a hodnota frekvence t´onu podle zn´am´eho vztahu. Pˇr´ıklad v´ypoˇctu t´onu a1 (frekvence 440 Hz).

T = 1 f = 1

440

= 0, 00227 s. −1 (6.1)

Pˇri dosaˇzen´ı ˇcasovaˇce vypoˇc´ıtan´e hodnoty aktu´aln´ıho t´onu se invertoval logick´y stav pinu piezosir´enky. Frekvence t´onu byla tedy dvakr´at tak velik´a (t´on znˇel o okt´avu n´ıˇz). Proto se v´ysledn´a hodnota z internetov´eho kalkul´atoru musela dˇelit dvˇema.

(38)

Obr´azek 6.5: V´ypoˇcet t´onu a1

• Senzor svˇetla

• Senzor odrazu

• Potenciometr

Tyto tˇri m´ody maj´ı mnoho spoleˇcn´eho. Hodnota v´ystupu je analogov´a, takˇze byly pˇripojeny k pin˚um mikroˇcipu, kter´e umoˇzˇnovaly analogovˇe-digit´aln´ı pˇrevod. Inici- alizace a ostatn´ı nastaven´ı probˇehly v jedn´e funkci (viz obr´azek 6.6). V prvn´ım

Obr´azek 6.6: Funkce inicializace ADC

z tˇechto tˇr´ı m´od˚u byla mˇeˇrena intenzita dopadaj´ıc´ıho svˇetla pomoc´ı fototranzis- toru KP-2012P3C [17] na AVR modulu. Pˇri zvyˇsuj´ıc´ım se z´aˇren´ı doch´az´ı k otv´ır´an´ı pˇrechodu mezi b´az´ı a emitorem, a t´ım k pr˚uchodu proudu.

V druh´em m´odu byl pouˇzit optick´y senzor CNY70, kter´y fungoval na principu odrazu infraˇcerven´eho svˇetla od r˚uzn´ych pˇredmˇet˚u. V pouzdru tohoto ˇcidla jsou dvˇe souˇc´astky, a to infraˇcerven´a dioda a fototranzistor [18].

Posledn´ı analogov´y m´od sn´ımal hodnotu uhl´ıkov´eho mono potenciometru na

(39)

Hodnotu fototranzistoru a optick´eho ˇclenu bylo vhodn´e zobrazovat v pro- centech pro lepˇs´ı pˇredstavivost uˇzivatele. Proto tedy doˇslo k testov´an´ı maxim´aln´ı vyˇc´ıslen´e hodnoty. V pˇr´ıpadˇe fototranzistoru byla pouˇzita ˇz´arovka (40 W), u op- tick´eho ˇclenu byla pro tuto hodnotu pouˇzita deska ˇcern´e barvy. Maxim´aln´ı v´ysledn´a hodnota se pak povaˇzovala za stoprocentn´ı. Hodnota potenciometru byla jako jedin´a zobrazov´ana v desetibitov´e hodnotˇe.

• RGB led

Posledn´ı poloˇzka v menu patˇrila RGB LED diodˇe [16]. Pˇri zvolen´ı tohoto m´odu zaˇcal pˇrehled nˇekolika barev v tomto poˇrad´ı: ˇcerven´a, oranˇzov´a, ˇzlut´a, zelen´a, svˇetle modr´a, modr´a, r˚uˇzov´a. Tato speci´aln´ı dioda se skl´ad´a ze tˇr´ı LED diod: ˇcerven´e, zelen´e a modr´e, kter´e jsou dohromady um´ıstˇeny v jednom sklenˇen´em pouzdˇre.

Kaˇzd´a LED dioda byla programov´ana zvl´aˇst’ pomoc´ı pˇreruˇsen´ı pˇri CTC m´odu ˇcasovaˇce, obdobnˇe jako u piezosir´enky. V tomto pˇr´ıpadˇe se vˇsak jednalo o tˇri 16- bitov´e ˇcasovaˇce. Spr´avn´e hodnoty frekvence k vytvoˇren´ı poˇzadovan´e byly br´any z moˇznosti Upravit barvy v programu Malov´an´ı. V pˇr´ıpadˇe oranˇzov´e barvy (viz obr.

6.7) se ˇcasovaˇc s ˇcervenou LED diodou nastavil na maxim´aln´ı hodnotu tj. 65 535 a 32 768 pro hodnotu zelen´e barvy. Modr´a LED dioda z˚ustala vypnut´a. Obdobnˇe se takovou metodou d´a nastavit t´emˇeˇr jak´akoliv barva.

Obr´azek 6.7: Nastaven´ı oranˇzov´e barvy

Programov´an´ı mikrokontrol´eru ATmega2560

Pro naprogramov´an´ı MCU byl pouˇzit USB kabel, kter´y propojil USB konek- tor na AVR modulu a poˇc´ıtaˇc. Po obdobn´ych v´ypoˇctech propojek v internetov´em kalkul´atoru [21] (jako u MCU ATmega168 viz pˇr´ıloha B obr´azek 4), s extern´ım krys- talem 16 Mhz, doˇslo k nastaven´ı hodnot do softwaru AVRDUDE a v´ysledn´y k´od byl pˇripraven pro vloˇzen´ı do mikrokontrol´eru (viz pˇr´ıloha B obr´azek 5).

(40)

Komunikace po sbˇernici I2C

Tato sbˇernice pouˇz´ıv´a dva sign´alov´e vodiˇce. Prvn´ım je SDA, kter´y slouˇz´ı pro obousmˇern´y pˇrenos dat. Druh´y vodiˇc SCL slouˇz´ı k pos´ıl´an´ı hodinov´eho sign´alu. Tyto dva vodiˇce mus´ı b´yt nav´ıc pˇripojeny pˇres zvedac´ı rezistory k nap´ajec´ımu napˇet´ı. V pˇr´ıpadˇe, ˇze neprob´ıh´a ˇz´adn´a komunikace, je na obou sign´alech d´ıky tˇemto rezistor˚um logick´a ”1”v pozitivn´ı logice. Tento stav je normou stanoven´y klidov´y stav. Jak zaˇr´ızen´ı Master, tak zaˇr´ızen´ı Slave mus´ı b´yt pˇripojeny ke stejn´e zemi (sign´al GND).

Sbˇernice I2C komunikuje poloduplexnˇe. To znamen´a, ˇze v jeden okamˇzik vys´ıl´a pouze jedno zaˇr´ızen´ı a ostatn´ı naslouchaj´ı. V t´eto bakal´aˇrsk´e pr´aci byl pouˇzit jeden Master (ATmega2560) a jeden Slave (DS1338). Kaˇzd´y Slave m´a svoji danou adresu.

I2C vlastn´ı pˇresnˇe stanoven´y komunikaˇcn´ı protokol. Pˇri zah´ajen´ı komunikace nastav´ı Master na SDA logickou ”0”. SCL nech´a jeˇstˇe chv´ıli v logick´e ”1”(z´aleˇz´ı na nastaven´e pˇrenosov´e rychlosti). D´ale vybere jednu 7-bitovou adresu pˇr´ısluˇsn´eho zaˇr´ızen´ı typu Slave(obr. 6.8). N´asleduje jeden bit, kter´y urˇcuje, zda-li chce Master data ˇc´ıst nebo zapisovat. Kaˇzd´y pˇrenesen´y bajt je schv´alen potvrzovac´ım bitem ACK. Vˇse konˇc´ı vzestupnou hranou SDA za pˇredpokladu, ˇze SCL jiˇz setrv´av´a nˇejakou dobu v logick´e

”1”. V datasheetu firmy ATMEL nalezneme tuto komunikaci pod n´azvem TWI [5].

Obr´azek 6.8: Pˇrenos dat sbˇernice I2C

Pˇreruˇsen´ı

Pˇreruˇsen´ı (anglicky interrupt) je schopnost procesoru okamˇzitˇe pozastavit do- savadnˇe vykon´avan´y program za ´uˇcelem vykon´an´ı speci´aln´ı funkce. Zdroje pˇreruˇsen´ı se mohou d´ale dˇelit na vnitˇrn´ı a vnˇejˇs´ı. Mezi vnitˇrn´ı lze zaˇradit napˇr´ıklad pˇreteˇcen´ı ˇcasovaˇce, pˇr´ıjem informace po urˇcit´e sbˇernici, dokonˇcen´ı pˇrevodu A/D pˇrevodn´ıku.

Za vnˇejˇs´ı zdroj pˇreruˇsen´ı se povaˇzuje zmˇena stavu pinu procesoru.

U mikrokontrol´eru ATmega2560 bylo pouˇzito vnˇejˇs´ı pˇreruˇsen´ı na tlaˇc´ıtko pro n´avrat do menu, aby se nemuselo ˇcekat na dokonˇcen´ı jednotliv´ych m´od˚u. Dalˇs´ı pouˇzit´ı se nalezlo i pˇri pˇreteˇcen´ı nˇekolika ˇcasovaˇc˚u napˇr. pro piezosir´enku, kde bylo vyˇzadov´ano pˇresn´e generov´an´ı PWM sign´alu.

C´ıtaˇˇ ce ˇcasovaˇce

Casovaˇc slouˇz´ı k realizaci funkc´ı, u kter´ˇ ych je vyˇzadov´ano pˇresn´e generov´an´ı sign´alu. ˇC´ıtaˇc b´yv´a obvykle pouˇzit u opakuj´ıc´ıch se dˇej˚u, kde b´yv´a zkoum´ana jejich periodicita. Obvykle b´yvaj´ı sjednoceny. V datasheetu mikroˇcipu ATmega2560 lze napˇr´ıklad nal´ezt ozn´aˇcen´ı Timer/Counter0 [5]. Aˇz nastaven´ım pˇr´ısluˇsn´eho bitu v

(41)

6.3 Druh´ a ´ uloha

V nˇekter´ych v´yukov´ych pˇredmˇetech se vyskytovali studenti, kteˇr´ı tuto lekci absolvovali jen okrajovˇe a nemˇeli moc zkuˇsenost´ı s programov´an´ım. ˇSlo zejm´ena o studeny architektury. Pr´avˇe pro nˇe byla navrhnuta tato ˇc´ast s pouˇzit´ım platformy Arduino.

6.3.1 Arudino specifikace

Arduino je open-source platforma, kter´a pouˇz´ıv´a mikrokontrol´ery z rodiny ATmega. Tento projekt vznikl v It´alii v roce 2005 ve mˇestˇe Ivrea. Hlavn´ı zakla- datel´e Massimo Banzi a David Cuartielles dali n´azev tomuto projektu Arduino podle Arduina Ivrejsk´eho, kter´y patˇr´ı mezi v´yznamn´e historick´e postavy toho mˇesta.

V´ysledkem projektu mˇel b´yt prototyp platformy pro studenty.

Programovac´ı jazyk Arduina je zaloˇzen na jazyku Wiring. Nˇekdy se lze setkat s tvrzen´ım, ˇze je programov´ano pr´avˇe v tomto jazyku, coˇz nen´ı ´uplnˇe pravda, protoˇze mal´e odliˇsnosti se zde vykytuj´ı. V´yhoda programovac´ıho jazyku Arduina spoˇc´ıv´a v ˇsirok´e distribuci k´od˚u a knihoven na r˚uzn´ych internetov´ych str´ank´ach, a proto je velice vhodn´y pro zaˇc´ınaj´ıc´ı program´atory. Pro vytv´aˇren´ı knihoven se pouˇz´ıv´a programovac´ı jazyk C++.

Arduino software

Open-source software byl staˇzen z dom´ac´ı internetov´e str´anky [13] pod n´azvem Arduino 1.0.5. Tento program je multiplatformn´ı. Podporuje Windows, Linux i Mac OS X. Disponuje tak´e integrovan´ymi kompil´atory: avr-gcc a avr-g++. Obsahuje z´akladn´ı knihovny pro jednotliv´e Arduino Shieldy. D´ale disponuje kompletn´ı ˇradou bootloader˚u pro hlavn´ı Arduino desky (napˇr. Arduino Uno, Arduino Mega 2560 atd.). Nahr´at bootloader nebo samotn´y program umoˇzˇnuje pˇetice program´ator˚u, mezi kter´ymi je na v´ybˇer i USBasp. Program tak´e umoˇzˇnuje velice jednoduch´e pˇrid´an´ı a pouˇzit´ı nov´ych knihoven. Pro tento program je tak´e dostupn´a ˇceˇstina na internetov´ych str´ank´ach. V t´eto bakal´aˇrsk´e pr´aci vˇsak nebyla pouˇzita. V neposledn´ı ˇradˇe disponuje funkc´ı Serial Monitor. Pˇri propojen´ı USB portu mezi PC a libovolnou Arduino deskou dojde k vytvoˇren´ı s´eriov´e komunikace. Pouˇzit´ım pˇr´ısluˇsn´e knihovny se pak jednotliv´a hl´aˇsen´ı v k´odu mohou zobrazovat pˇr´ımo v poˇc´ıtaˇci a nen´ı potˇreba ˇz´adn´eho displeje.

Arduino Shield

Toto oznaˇcen´ı se pouˇz´ıv´a pro jak´ykoliv Arduino modul, kter´y je moˇzno zasu- nout do Ardunio Boardu (napˇr. Arduino Uno, Arduino Mega 2560). Na internetu lze nal´ezt celou ˇradu Arduino Shield˚u s nejr˚uznˇejˇs´ımi periferiemi. Kaˇzd´y modul vˇetˇsinou disponuje svoj´ı programovac´ı knihovnou.

Pˇri programov´an´ı uk´azkov´e ´ulohy byl pouˇzit Ethernet Arudino Shield [14].

Tento modul, jak se pouˇzito v n´azvu, umoˇzˇnuje internetov´e pˇripojen´ı pomoc´ı ko-

(42)

nektoru RJ45 (viz obr. 6.9). Vyveden je i slot pro microSD kartu. Jelikoˇz modul ob- sahuje nap´ajec´ı konektory, kter´e jsou propojeny s Arduino deskou, odeb´ır´a nap´ajec´ı napˇet´ı pˇr´ımo z n´ı, tedy +5 V. Disponuje ethernetov´ym ˇradiˇcem W5100 s intern´ı vy- rovn´avac´ı pamˇet´ı o hodnotˇe 16 kB. Rychlost pˇripojen´ı je 10/100 Mb/s. Komunikace s hlavn´ı deskou prob´ıh´a po sbˇernici SPI.

Obr´azek 6.9: Uk´azka Ethernet Arduino Shiledu

6.3.2 Funkce programu druh´ e ´ ulohy

V t´eto ´uloze doˇslo k vytvoˇren´ı webov´eho serveru, kter´y ukazuje aktu´aln´ı hod- notu potenciometru na pˇr´ıpravku v desetibitov´e hodnotˇe, tedy od 0 do 1023 (viz pˇr´ıloha B obr´azek 6). Tato hodnota je tak´e d´ale zobrazov´ana na displeji v´yukov´eho pˇr´ıpravku. Vˇsechny hodnoty se zapisuj´ı na microSD kartu v p˚ul vteˇrinov´em intervalu (viz pˇr´ıloha B obr´azek 7 a 11).

Pˇri programov´an´ı t´eto ´ulohy byl vyuˇzit pˇr´ıklad programu pro webov´y server.

N´asledovalo vloˇzen´ı knihovny pro ethernet komunikaci a nastaven´ı adresy MAC a IP. Arudino Ethernet Shiled nevlastn´ı pˇridˇelenou MAC adresu. Byla tedy pouˇzita adresa ze star´eho modemu, kter´y se jiˇz nepouˇz´ıv´a. IP adresa byla nastavena podle v´ypisu z pˇr´ıkazov´eho ˇr´adku (viz obr. 6.10, str.42). Posledn´ı tˇri ˇc´ısla IP adresy vˇsak byla zmˇenˇena na takov´e ˇc´ıslo, kter´e ˇz´adn´a adresa v dom´ac´ı s´ıti nemˇela. Hodnota HTTP protokolu z˚ustala implicitnˇe nastavena na hodnotu 80.

D´ale bylo tˇreba vloˇzit knihovnu pro displej a prov´est inicializaci. Pro spr´avnou funkˇcnost se musely vloˇzit piny, kter´e odpov´ıdali ˇctyˇrem datov´ym a tˇrem ˇr´ıd´ıc´ım vodiˇc˚um. V inicializaci se pak nastavil poˇcet znak˚u na jednom ˇr´adku displeje a cel- kov´y poˇcet ˇr´adk˚u (viz obr. 6.11, str. 42). N´asledovalo vloˇzen´ı posledn´ı knihovny, kter´a ovl´adala SD kartu a inicializace A/D pˇrevodn´ıku pro pin potenciometru. Pro rozpozn´an´ı SD karty byl vloˇzen k´od, kter´y pˇri spuˇstˇen´ı programu zjist´ı, o jak´y typ karty pˇresnˇe jde a jestli je karta pˇr´ıtomna v SD slotu. Jakmile nen´ı, program po- kraˇcuje bez moˇznosti z´apisu hodnoty na kartu a na displeji se objev´ı hl´aˇsen´ı chyba

(43)

Obr´azek 6.10: Zjiˇstˇen´ı IP adresy

Obr´azek 6.11: Nastaven´ı displeje v jazyku Wiring

adrese 192.168.2.150, kter´y pˇrij´ım´a klienty a zobrazuje v HTTP hlaviˇcce aktu´aln´ı hodnotu potenciometru.

6.3.3 Programovac´ı m´ ody

Obecnˇe jde jak´akoliv Arduino Board programovat dvˇema zp˚usoby. Prvn´ı moˇznost´ı je programovat MCU pomoc´ı program´atoru (v tomto pˇr´ıpadˇe USBasp), kter´y do nˇej nahraje mapu Arduino pin˚u pro pˇr´ısluˇsnou Arduino Board a vytvoˇren´y program.

N´avod (viz obr. 6.12, str. 43):

Druh´y zp˚usob vyuˇz´ıv´a tzv. bootloaderu, coˇz je v tomto pˇr´ıpadˇe aplikace, kter´a umoˇzˇnuje nahr´at vytvoˇren´y program po s´eriov´e lince. Pro nahr´an´ı zavadˇeˇce je na- staven´ı obdobn´e jako v prvn´ım zp˚usobu (obr. 6.12, str. 43), pouze dojde k vy- nech´an´ı tˇret´ıho bodu. M´ısto toho se zvol´ı poloˇzka Burn Bootloader v sekci Tools a dojde k nahr´av´an´ı pomocn´e aplikace do MCU. T´ımto procesem pˇrest´av´a progra- mov´an´ı pomoc´ı program´atoru a nast´av´a programov´an´ı pomoc´ı s´eriov´eho portu(v tomto konkr´etn´ım pˇr´ıpadˇe propojen´ı USB kabelu mezi poˇc´ıtaˇcem a USB konekto- rem pˇr´ıpravku). Koneˇcn´ym krokem je nastaven´ı spr´avn´eho portu v n´astroj´ıch Tools.

(44)

Obr´azek 6.12: Nastaven´ı pˇrenosu programu do mikrokontrol´eru

T´ımto krokem se otevˇre i funkce Serial Monitor (viz kapitola 6.3.1).

6.3.4 Nastaven´ı pin˚ u Arduino

Pˇri programov´an´ı mikrokontrol´eru ATmega2560 se spoleˇcnˇe s vytvoˇren´ym pro- gramem nahraje i rozloˇzen´ı Arduino pin˚u (viz pˇr´ıloha B obr´azek 11). Kaˇzd´y pin m´a sv´e ˇc´ıslo a je rozdˇelen na analogov´y nebo digit´aln´ı. Pˇri programov´an´ı byla pouˇzita mapa pin˚u desky Arduino Mega 2560. Ta nepouˇz´ıv´a veˇsker´e piny mikroˇcipu. Modul AVR vˇsak ano, takˇze bylo nezbytn´e zas´ahnout do adres´aˇre Arduino, zmˇenit knihovnu pins arduino.h a d˚uleˇzit´e piny doplnit. Dodateˇcnˇe vloˇzen´e piny pak fungovaly jako klasick´e digit´aln´ı piny.

References

Related documents

Hodnocen´ı navrhovan´e vedouc´ım bakal´aˇrsk´e pr´ace: velmi dobře minus Hodnocen´ı navrhovan´e oponentem bakal´aˇrsk´e pr´ace:?. Pr˚ ubˇ eh obhajoby bakal´ aˇrsk´

Student byl seznámen s posudky vedoucího a oponenta bakalářské práce, následně odpovídal na otázky položené v posudcích?.

Hodnocen´ı navrhovan´ e vedouc´ım bakal´ aˇ rsk´ e pr´ ace: výborně minus Hodnocen´ı navrhovan´ e oponentem bakal´ aˇ rsk´ e pr´ ace: výborně?. Pr˚ ubˇ eh obhajoby bakal´

Hodnocen´ı navrhovan´ e vedouc´ım bakal´ aˇ rsk´ e pr´ ace: výborně minus Hodnocen´ı navrhovan´ e oponentem bakal´ aˇ rsk´ e pr´ ace: výborně minus.. Pr˚ ubˇ eh

Seznámení s posudkem Reakce studenta na posudek odpovídala úrovni a odbornosti Diskuse komise a studenta k tematu BP. Student věcně a odborně odpovídal na dotazy jednotlivých

Které spotřební zvyklosti a módní trendy ovlivňují současnou poptávku po cestovním

Konkrétně studentka zjišťovala, jakou formou komunikují pedagogové mateřských škol s dětmi, jejichž úroveň verbální komunikace je na nedostatečné úrovni a jaké

Můžete uvést nějaké konkrétní důvody, proč některé nemocnice vedou zdravotnickou dokumentaci pouze v papírové podobě kvůli legislativě České republiky, viz kapitola 2.1.4,