edin mešanović

64
UNIVERZITET U TUZLI FAKULTET ELEKTROTEHNIKE ZAVRŠNI RAD PRVOG CIKLUSA STUDIJA Automatizirani nadzor višespratnog parking prostora STUDENT EDIN MEŠANOVIĆ TUZLA, JUNI 2015. GODINE

Upload: rrgggg

Post on 14-Apr-2016

60 views

Category:

Documents


3 download

DESCRIPTION

Automatizirani nadzor višespratnog parking prostora

TRANSCRIPT

Page 1: Edin Mešanović

UNIVERZITET U TUZLI

FAKULTET ELEKTROTEHNIKE

ZAVRŠNI RAD

PRVOG CIKLUSA STUDIJA

Automatizirani nadzor višespratnog parking

prostora

STUDENT

EDIN MEŠANOVIĆ

TUZLA, JUNI 2015. GODINE

Page 2: Edin Mešanović

2

Sažetak

Jedan od najbitnijih segmenata sistema u realnom vremenu su svakako ugrađeni sistemi.

Tehnologija real-time ugrađenih sistema je najbrži razvojni sektor u informacionim

tehnologijama današnjice, te je interesantno istražiti i vidjeti koje mogućnosti nam nude

mikrokontroleri u sklopu ugrađenih sistema. Automatizacija upravljanja parking

prostorom postaje sve veća i značajnija potreba, posebno u velikim naseljima sa naglim

porastom broja vozila. Iz razloga nedostatka prostora, neophodno je planirati višespratne

parking prostore. Cilj ovog završnog rada je monitoring raspoloživog prostora za parking,

korištenjem Atmel mikrokontrolera, uz prikaz stanja na LCD displeju i dizajniranom panel

modulu. Ovo rješenje nam omogućava povećavanje efikasnosti korištenja raspoloživih

parking prostora, a smanjuju probleme i troškove koji se pojavljuju u klasičnim

neautomatizovanim pristupima korištenja parkinga.

Page 3: Edin Mešanović

3

Abstract

One of the most important segments of systems in real time is embedded systems. The

technology of real-time embedded systems is the fastest development sector of information

technologies, and it is interesting to investigate and see which possibilities are offered by

microcontrollers in embedded systems. Automatization of controlling parking places is

becoming great and important need, especially in places where there is sudden increase in

number of cars. Due to the lack of parking places, it is necessary to plan multi-storey

parking places. The aim of this final work is representing controlling available parking

space using Atmel microcontrollers, and showing the state on LCD display and designed

panel modul. The solution of using microcontrollers will help in increasing the efficiency

of using the available parking places, and decrease problems and costs that occur in

classical unautomatized access to using parking place.

Page 4: Edin Mešanović

4

Sadržaj

Sažetak ................................................................................................................................... 2

Abstract .................................................................................................................................. 3

1. Automatizirani nadzor parkinga .................................................................................... 8

2. Ugrađeni sistemi .......................................................................................................... 11

2.1. Ugrađeni mikrokontroleri .................................................................................... 12

2.2. Pregled programabilnih struktura ........................................................................ 13

2.2.1. Diskretna rješenja ........................................................................................ 13

2.2.2. Namjenski integrirani krugovi (ASICs) ...................................................... 13

2.2.3. Programabilni logički uređaj – FPGA ......................................................... 13

2.3. Mikrokontroleri ................................................................................................... 15

2.4. Projektovanje ugrađenih sistema ......................................................................... 16

3. Osnovne karakteristike mikrokontrolera ..................................................................... 18

3.1. Osnove mikrokontrolera ...................................................................................... 18

3.2. Arhitekture mikrokontrolera ................................................................................ 19

4. ATMEL Mikrokontroleri ............................................................................................. 21

4.1. AVR Familija ...................................................................................................... 21

4.2. Građa ATMEL Mikrokontrolera ......................................................................... 22

4.3. Karakteristike Atmega32 mikrokontrolera .......................................................... 24

4.3.1. Objašnjenje pinova ...................................................................................... 27

5. Platforma KR-mega32-16 V2.3 ................................................................................... 29

5.1. Hardverski koncept .............................................................................................. 29

5.2. Softverski koncept ............................................................................................... 35

5.2.1. Opšti AVR Studio ........................................................................................ 35

5.2.2. Funkcionalnost KRmega32 platforme ......................................................... 37

Page 5: Edin Mešanović

5

6. Senzori i logička kola .................................................................................................. 41

6.1. Senzor prisutnosti ................................................................................................ 41

6.2. Logička kola ........................................................................................................ 42

6.2.1. Multiplekser ................................................................................................. 42

6.2.2. Registri ........................................................................................................ 45

7. Nadzor višespratnog parking prostora ......................................................................... 48

7.1. Uvod .................................................................................................................... 48

7.2. Senzori i multiplekseri ......................................................................................... 49

7.3. Spajanje logičkih kola na KR-mega ploču .......................................................... 51

7.4. Ispis i prikaz rezultata .......................................................................................... 56

Zaključak ............................................................................................................................. 58

Literatura ............................................................................................................................. 59

Dodatak ................................................................................................................................ 60

Page 6: Edin Mešanović

6

Popis slika

Slika 1.1 Problem parkiranja između dva vozila ................................................................... 8 Slika 1.2 Zauzimanje dva parking mjesta .............................................................................. 9 Slika 1.3 Primjer parking prostora ......................................................................................... 9 Slika 2.1 FPGA sa osiguračima ........................................................................................... 14 Slika 2.2 FPGA sa antiosiguračima ..................................................................................... 14

Slika 3.1 Opšta blok struktura mikrokontrolera .................................................................. 18 Slika 3.2 Harvardova i Von Neumannova arhitektura mikroračunara ................................ 19 Slika 4.1 Kratak pregled razvoja AVR mikrokontrolera ..................................................... 21 Slika 4.2 Opšta šema AVR mikrokontrolera ....................................................................... 23 Slika 4.3 Blok dijagram AVR CPU-a .................................................................................. 24 Slika 4.4 Šema ulazno-izlanog pina .................................................................................... 26

Slika 4.5 Atmega32 8-bitni mikrokontroler ........................................................................ 26 Slika 5.1 KR-mega32-16 platforma .................................................................................... 29

Slika 5.2 Šema priključaka .................................................................................................. 31 Slika 5.3 (a, b) Detaljni prikaz priključaka .......................................................................... 31 Slika 5.4 (a-d) Detaljni prikaz priključaka .......................................................................... 32 Slika 5.5 (a-d) Detaljni prikaz priključaka .......................................................................... 33

Slika 5.6 (a-c) Detaljni prikaz priključaka........................................................................... 34 Slika 5.7 Programmers Notepad .......................................................................................... 35

Slika 5.8 Podešavanje parametara programa ....................................................................... 36 Slika 5.9 PonyProg .............................................................................................................. 37 Slika 6.1 Konstrukcija i princip rada fotootpornika ............................................................ 41

Slika 6.2 Šema spajanja senzora .......................................................................................... 42 Slika 6.3 Unutrašnja struktura multipleksera i njegova šematska oznaka ........................... 42

Slika 6.4 Multiplekser 4/1 ................................................................................................... 43 Slika 6.5 Kaskadiranje multipleksera .................................................................................. 44

Slika 6.6 4-bitni registar ...................................................................................................... 45 Slika 6.7 Blok dijagram 4-bitnog pomjeračkog registra sa serijskim ulazom i pomjeranjem

podataka u lijevo .................................................................................................................. 46 Slika 6.8 Vremenski dijagram 4-bitnog pomjeračkog registra sa serijskim ulazom i

pomjeranjem podataka u lijevo ........................................................................................... 46 Slika 6.9 4-bitni pomični registar s paralelnim ulazom i pomjeranjem podataka u desno .. 47 Slika 7.1 Blok šema spajanja senzora, multipleksera, mikrokontrolera, registara i LED

dioda .................................................................................................................................... 48 Slika 7.2 Spajanje senzora na multiplekser (Blok1) ............................................................ 50

Slika 7.3 Vremenski dijagram ulaza i izlaza multipleksera................................................. 51 Slika 7.4 Dio programa mikrokontrolera ............................................................................. 53

Slika 7.5 Oznake analognih ulaza po kolonama .................................................................. 54 Slika 7.6 Vremenski dijagram ulaza i izlaza mikrokontrolera prvog sprata ....................... 54 Slika 7.7 Vremenski dijagram ulaza i izlaza mikrokontrolera drugog sprata ..................... 55 Slika 7.8 Prikaz registra ....................................................................................................... 55 Slika 7.9 Vremenski dijagram ulaza i izlaza registra .......................................................... 56

Slika 7.10 LCD displej ........................................................................................................ 56 Slika 7.11 Šema spajanja izlaza registra sa LED diodama .................................................. 57 Slika 7.12 Prikaz panela ...................................................................................................... 57

Page 7: Edin Mešanović

7

Popis tabela

Tabela 6.1 Funkcijska tablica multipleksera ....................................................................... 43 Tabela 7.1 Prikaz izlaza multipleksera ................................................................................ 51 Tabela 7.2 Raspored zauzimanja pinova KRmega ploče .................................................... 52

Page 8: Edin Mešanović

8

1. Automatizirani nadzor parkinga

Potrebe savremenog društva postaju sve veće i zahtijevnije sa povećanjem populacije.

Sve veće potrebe se javljaju i za prostorom koji je neophodan u svakodnevnim obavezama,

kao što su odlazak u školu, na posao, kupovinu ili bilo koji način kretanja ljudskog bića.

Danas je nezamisljivo kretanje bez nekog prevoznog sredstva koje je potrebno negdje

parkirati, ali se to treba odraditi da sve ostalo može da funkcioniše bez ometanja. Prevozna

sredstva koji vrše svakodnevni prevoz putnika zahtijevaju sve više prostora za bezbjedno i

sigurno parkiranje. U manjim gradovima, ako posmatramo teritoriju, parkiranje vozila ne

predstavljalja veliki problem jer je u tim gradovima manji broj vozila, međutim u većim

gradovima to predstavlja jedan od većih problema jer je veliki broj vozila na ulicama

svakog dana. Stanovnici ovih gradova najviše koriste lična vozila (automobile) da bi se

prevezli do svojih radnih mjesta, jer su neki poprilično udaljeni od radnog mjesta. Ta

vozila je neophodno negdje parkirati a da se dalji tok saobraćaja ne ometa. U većim

gradovima nije lako naći odgovarajuće mjesto za parkiranje vozila.

Na osnovu ovih činjenica može se zaključiti da potrebe društva za parkiranjem vozila

postaju sve veće. S obzirom da u saobraćaju učestvuje sve više vozača prosječnim psiho-

fizičkih sposobnosti i kada treba izvesti neki zahtjevniji manevar sa vozilom mnogi imaju

problem. Jedan od velikih problema je taj kada treba vozilo da se uparkira, između dva

vozila jer je pravilno parkiranje nemoguće (prikaz na slici 1.1). Za veliki broj vozača ovo

predstavlja poteškoće i oni zaobilaze ovakva mjesta za parkiranje.

Slika 1.1 Problem parkiranja između dva vozila

Page 9: Edin Mešanović

9

Također veliki problem predstavlja i neodgovorno ponašanje nekih vozača koji često

mogu da svojim parkiranjem zauzmu i po dva parking mjesta i time smanje kapacitet

određenog parkirališta (slika 1.2).

Slika 1.2 Zauzimanje dva parking mjesta

Promjena slike saobraćaja u svakom gradu, koja neminovno prati razvoj društva i

specifične okolnosti vezane za samu prirodu odvijanja života, dovodi, prije ili kasnije, do

problema nagomilavanja vozila, pogotovo u centralnim djelovima grada kao i na

lokacijama visokog stepena atraktivnosti. Povećavanjem stepena motorizacije i mobilnosti,

pojavljuje se problem uvećanog dinamičkog i stacionarnog saobraćaja, pa je rješavanje

problema parkiranja, kao jednog od podsistema transportnog sistema svakog grada, važno

pitanje. Saobraćajna slika jednog grada predstavlja integrisani sistem cjelokupnog

dinamičkog saobraćaja, javnog gradskog prevoza putnika i stacionarnog saobraćaja,

odnosno parkiranja.

Porast životnog standarda stanovnika, težnja za što većom pokretljivošću,

samostalnošću i udobnošću izazvalo je sve veću potrebu za korišćenjem individualnih

vozila, a porastom broja automobila stvaraju se problemi raspoloživog prostora za smještaj

vozila. Zbog pojave ovog problema automatizacija upravljanja parking prostorom postaje

sve veća i značajnija potreba, posebno u velikim naseljima sa naglim porastom broja

vozila. Rješenja i sistemi koji to omogućavaju povećavaju efikasnost korištenja

raspoloživih parking prostora, a smanjuju probleme i troškove koji se pojavljuju u

klasičnim neautomatizovanim pristupima korištenja parkinga. Izgradnjom

automatizovanog parking sistema problem parkiranja bi se sveo na minimum.

Slika 1.3 Primjer parking prostora

Page 10: Edin Mešanović

10

Potreba za automatizovanim parkinzima proizilazi iz dva faktora:

- potreba za parking mjestima

- nedostatak raspoloživog zemljišta

U budućnosti će senzori, ugrađeni u cestovne površine i automobile u prolazu,

automatski prepoznavati i izvještavati o slobodnim mjestima. Senzori prepoznaju je li

parkirno mjesto zauzeto ili ne, te dijele te informacije putem interneta. U budućnosti će čak

i automobili koji prolaze pokraj slobodnih parkirnih mjesta moći o njima izvještavati.

Budući da su mnoga vozila sada umrežena, ta se informacija može i prenijeti putem

interneta i prikazati na karti u stvarnom vremenu. Prenošenje ovih informacija u stvarnom

vremenu na pametne mobitele korisnika ili izravno na navigacijske uređaje u njihovim

automobilima može skratiti potragu za parking mjestima koja vozačima često zadaje muke.

Cilj ovog završnog rada je korištenjem Atmel mikrokontrolera, vršiti monitoring

raspoloživog prostora za parking, uz prikaz stanja na LCD displeju i dizajniranom panel

modulu.

Prikazano rješenje prvenstveno nam obezbjeđuje tačne podatke vezane za slobodna i

zauzeta parking mjesta. Signalizacijski panel pomoću LED dioda je sistem za davanje

informacija vozačima koji se po ulasku na parkiralište informišu o slobodnim i zauzetim

parking mjestima. Na svakom parking mjestu nalazi se po jedan senzor koji nam daje

informaciju o zauzetosti parking mjesta. Ovaj panel precizno uz pomoć mikrokontrolera i

logičkih kola čita podatke unesene od strane senzora prisutnosti. Pored panela nalazi se

LCD displej koji na pregledan način prikazuje informaciju o ukupnom broju slobodnih

mjesta parkinga na svakom spratu. Iz razloga nedostatka prostora, neophodno je planirati

višespratne parking prostore.

Page 11: Edin Mešanović

11

2. Ugrađeni sistemi

Opća definicija ugrađenih ili ugradbenih sistema (engl. embedded) jeste da su to sistemi

sa čvrsto uparenom hardverskom i softverskom integracijom, koja je dizajnirana da bi

obavljala tačno određenu funkciju.

Postoji više definicija embedded sistema, tri najkarakterističnije bi bile slijedeće:

Ugrađeni sistemi su računarski sistemi sa jako izraženom integracijom hardvera i

softvera, prije svega namjenjeni da obavljaju specifične funkcije.

Ugrađeni sistemi su računarsko bazirani sistemi ugrađeni u okviru drugog sistema,

za koga obezbjeđuju bolju funkcionalnost i performanse.

Ugrađeni sistemi su sistemi specijalne namjene kod kojih je računar u potpunosti

enkapsuliran od strane uređaja koga on kontroliše.

Ugrađeni sistemi imaju danas široku primjenu: od mobilnih telefona, digitalnih

fotoaparata, medicinskih uređaja, pa sve do upravljačkih sistema u automobilima,

avionima i satelitima. Ovi sistemi su u protekle tri decenije, od jednostavnih kontrolera sa

specifičnim softverom za određen upravljački zadatak prerasli u složene sisteme na kojima

se izvršava mnoštvo aplikacija, od kritičnih upravljačkih aplikacija do grafičkog

korisničkog interfejsa. Porast broja aplikacija koje se istovremeno izvršavaju neizbježno je

postavio zahtjev za operativnim sistemom u okviru ugrađenih sistema, koji bi to omogućio,

a da pri tome ne naruši stabilnost i odziv sistema za sve vremenski kritične zadatke. Za

ugrađene sisteme sa relativno jednostavnim hardverom i/ili sa malim brojem jednostavnih

funkcija najčešće nije potreban operativni sistem. S druge strane, sistemi na kojima se

izvršavaju relativno složene aplikacije zahtjevaju neku formu planera (engl. sheduler) i

samim tim zahtjevaju operativni sistem.

Hardver i softver kod ugrađenih sistema se razvijaju paralelno. Kod razvojnog modela,

nazvan hardver-softver ko-dizajn model, mora da postoji čvrsta uzajamna sprega u radu

između oba projektantska tima iz razloga što se embedded sistemi grade (realizuju) kako

od specijalizovanog hardvera, tako i specijalizovanog softvera.

Druga tipična karakteristika ugrađenih sistema se odnosi na metod razvoja softvera,

nazvan cross-platform razvoj. Standardno, softver za ugrađeni sistem se razvija na jednoj

platformi, a izvršava na drugoj. U tom kontekstu, platforma predstavlja kombinaciju

hardvera (kakva je, recimo struktura jednog mikroračunarskog sistema), operativnog

sistema i softverskih razvojnih sredstava. Host sistem je sistem na kome se embedded

softver razvija. Ciljni (engl. target) sistem je ugrađeni koji se razvija. U najvećem broju

slučajeva, host i ciljni sistem nisu bazirani na istom procesoru. Glavno softversko razvojno

sredstvo koje čini razvojnu kros-platformu mogućom predstavlja kros-kompajler. Kros-

kompajler je kompajler koji se izvršava na jednom tipu procesorske arhitekture, a generiše

objektni kôd za drugi, različit tip procesorske arhitekture. Kros-kompajler se koristi iz

prostog razloga što ciljni sistem ne može da "udomi" svoj sopstveni kompajler.

Page 12: Edin Mešanović

12

Jedna od bitnih karakteristika sistema u realnom vremenu pored njihove hardverske

strukture, jeste svakako i njihov specifični način programiranja. Moguća je sljedeća

klasifikacija programa:

- sekvencijalni programi (akcije striktno poredane u jednom vremenskom

redoslijedu (sekvenci)),

- multitasking programi (neke operacije se izvode paralelno, mada je i dalje u

nekim vremenskim periodima zastupljeno slijedno programiranje, pri čemu procesi

ili taskovi mogu komunicirati preko djeljenih varijabli i signala),

- programi realnog vremena (akcije vremenski ne slijede nužno jedna drugu,

sekvenca nekih akcija nije određena od strane projektanta, već od događaja koji se

dešavaju u realnom vremenu

Kod klasičnih (sekvencijalnih) programa, operacije se izvode u predefinisanom

rasporedu (sekvenci). S druge strane, kod multitasking programiranja, neke operacije se

izvode paralelno, mada je i dalje u nekim vremenskim periodima zastupljeno slijedno

programiranje. Pri tome, procesi ili taskovi mogu komunicirati preko djeljenih varijabli i

signala. Pri dizajniranju i implementaciji računarskih programa koji sadrže u sebi taskove

realnog vremena, moramo voditi računa koje su to neophodne forme koje ovakvi programi

zahjtevaju. Iskustveno da se pokazati da realizacija programa realnog vremena je znatno

teža od projektovanja sekvencijalnog softvera. Nezaobilazni faktor čine operacije reakcije

na događaje iz okruženja, tj. na događaje koji se dešavaju u realnom vremenu.

Ugrađeni sistem ćemo uzimati kao sistem koji:

- predstavlja kombinaciju hardvera i softvera da bi izvršio određenu zadaću

- je dio većeg sistema za kojeg nije neophodno da bude računar

- radi u reakciji sa okolinom gdje vremenska ograničenja mogu biti bitna

- ima softver koji obezbjeđuje osobine, pogodnosti i felksibilnost

- ima hardver (procesori, ASIC, FPGA, memorije...) koji obezbjeđuju performanse

(ponekad i bezbjednost)

2.1. Ugrađeni mikrokontroleri

Ovo je trenutno jedna od onih oblasti koja predstavlja kamen spoticanja kada je u

pitanju i samo definisanje pojma ugrađeni, ugradbeni mikrokontroleri. No, bez obzira na

definiciona razmimoilaženja sama oblast se izrazito brzo razvija i obično se baš na nju i

misli kada se kaže da je računar ušao u sve pore života. Sve što vrijedi za mikrokontrolere,

važi i za ugrađene mikrokontrolere. Ipak, i u literaturi i na tržištu se često sreće pojam

ugrađeni mikrokontroler, implicirajući distinkciju. Proizvođači često daju ugrađene

mikrokontrolere kao zasebnu klasu proizvoda, ali generalno, primjena i zahtjevi trebaju da

postavljaju uslove korištenja konkretnog mikrokontrolera, te je u općem slučaju moguće

korištenje i jednih i drugih. Distinkcija u pojmovima ugrađeni sistem i mikrokontrolerski

sistem je posljedica činjenice da su mikrokontroleri jedan on načina realizacije ugrađenih

sistema.

Page 13: Edin Mešanović

13

Pored mikrokontrolera, za realizaciju ugrađenih sistema se koriste:

- Diskretna rješenja

- ASIC (Application Specific Integrated Circuits)

- FPGA (Field Programmable Gate Arrays).

To implicira da se mikrokontrolerski sistemi mogu uzeti kao podskup ugrađenih

sistema u kojima se kao realizaciona tehnologija koriste odgovarajući mikrokontroleri.

2.2. Pregled programabilnih struktura

Mikrokontroleri kao komponente sa korisničkog stanovišta, možemo posmatrati kao

jednu od programabilnih strukutra, koje se koriste za rješavanje niza sličnih problema. Da

bi se imao uvidu kompletnu sliku, te poziciju mikrokontrolera, ovdje će se prvo napraviti

pregled strukutura koje se u općem slučaju mogu koristiti umjesto mikrokontrolerskih

sistema [5].

2.2.1. Diskretna rješenja

Diskretna rješenja ovdje navodimo samo zbog sveobuhvatnosti, a pod njima

podrazumijevamo cjelokupna rješenja sa tranzistorskom logikom, SSI (engl. small scale

integration) i MSI (engl.medium scale integration). Pogodni su za realizacije jako malih i

jednostavnih sistema, ali se za većinu drugih primjena u startu isključuju zbog ograničenja

na dimenzije i troškove [5].

2.2.2. Namjenski integrirani krugovi (ASICs)

Namjenski integrirani krugovi (engl. Application Specific Integrated Circuits - ASICs)

predstavljaju (najjeftinija) rješenja u situacijama kada se očekuje velika serija jednog čipa.

Uključuju relativno velike troškove inžinjeringa, a skoro nikakve mogućnosti promjene

napravljenog dizajna (bez dodatnih velikih troškova dorade maski). Kao proizvod ima se

čip koji je napravljen uz najbolju procesnu tehnologiju i koji tačno odgovara zahtjevima.

To obično daje odlične performanse, nisku potrošnju energije i malo zauzimanje prostora.

Treba istaći da i pored masovnosti proizvodnje ovih čipova, svaki čip je specifičan i radi se

samo za određenog (jednog) naručioca (najčešće je to firma koja je i dizajnirala čip).

Proces dobijanja namjenskih integriranih krugova se sastoji iz projektovanja u matičnoj

firmi, a potom slijedi izrada prototipa i proizvodnja u nekoj od fabrika specijalizovanih za

ovu namjenu. Projektovanje se danas obično radi uz pomoc CAD alata, odnosno u nekom

od HDL jezika (engl. Hardware Description Language) i može se reći da dosta liči na

programiranje. U domenu jezika za opisivanje hardvera su VHDL što je skraćenica VHSIC

(Very High Speed Integrated Circuit), Hardware Description Language i Verilog [5].

2.2.3. Programabilni logički uređaj – FPGA

FPGA (engl. Field Programmable Gate Arrays) krugovi predstavljaju digitalne

integrirane krugove koji sadrže konfigurabilne (programabilne) logičke blokove,

međusobno vezane konfigurabilnim vezama. Projektanti konfigurišu (programiraju) te

Page 14: Edin Mešanović

14

veze i time dobijaju uređaje sposobne da obavljaju izrazito širok spektar zadataka. Kako

se programiraju to su dostupni širem skupu korisnika i imaju određenu mjeru

univerzalnosti. Mnogo se koriste u projektovanju ugradbenih sistema. Zavisno od

proizvođača nazivaju se još i LCA (engl. logic-cell arrays), PAL (engl. programmed array

of logic), te CPDL (engl. complex programmable logic devices). Naravno, postoje

određene razlike između FPGA od jednog proizvođača i CPDL od drugog, ali generalno

među njima je mnogo više sličnosti nego razlika.

Ovi programabilni hardverski krugovi implementiraju kombinacionu i sekvencijalnu

logiku, koja se može konfigurisati učitavanjem podataka iz lokalne memorije koji onda

određuju međuveze logičkih blokova. Isporučuju se kao čipovi koji se programiraju u

jednom od HDL jezika (obično VHDL ili Verilog).

Programiranje se svodi na "pregaranje" osigurača-međuveza ili na njihovo kreiranje, u

zavisnosti od korištenog kola. Primjeri blokova sa osiguračima i antiosiguračima u FPGA

čipu su dati na slikama 2.1 i 2.2. Ovaj proces konfiguracije je reverzibilan i u praksi se

konfiguracija često uzima iz memorijskog kruga (tipično EEPROM), što daje veliku

fleksibilnost, laganu nadogradnju, uz zadržavanje svih pozitivnih osobina sekvencijalne

logike.

Slika 2.1 FPGA sa osiguračima

Slika 2.2 FPGA sa antiosiguračima

Page 15: Edin Mešanović

15

Neke od prednosti FPGA nad mikrontrolerima u projektovanju i gradnji ugradbenih

sistema su [5]:

- Implementacija stvarnog namjenskog projektovanja. Interni resursi kod FPGA se

mogu konfigurirati tačno prema zahtjevima primjene. Kod mikrokontrolera,

aplikacija se mora prilagoditi resursima koji stoje na raspolaganju, a u velikom

broju slučajeva se ne koriste svi resursi.

- Štampana ploča za FPGA krugove može biti jednostavnija nego za ekvivalentnu

ploču mikrokontrolerskog rješenja. Ovo je posljedica mogućnosti integriranja

eksternih hardverskih komponenti u jedan uređaj (FPGA).

- Nivo performansi koji se dobija sa FPGA je obično veći, čak i kada se koristi ista

brzina takta, a to je posljedica paralelne prirode hardverskih algoritama.

- Glavni nedostaci FPGA krugova su njihova visoka cijena, te ograničenja koja

postavljaju alati za sintezu, a koji se koriste za razvoj sistema sa visokim nivoom

apstrakcije.

2.3. Mikrokontroleri

Mikrokontroler je elektronički uređaj koji, slično kao i računar, ima zadaću da zamjeni

čovjeka u kontroli dijela proizvodnog procesa ili gotovo cijelog proizvodnog procesa [5].

Mikrokontroleri su uglavnom dizajnirani za specifične zadaće, vrlo raznolike od slučaja do

slučaja. U osnovi, pod mikrokontrolerom se može smatrati uređaj koji u sebi integrira

određene komponente mikroprocesorskog sistema u jednom jedinom čipu.

Mikrokontroleri se mogu proučavati iz više uglova: tehnološkog, računarskog i

korisničkog. Prva dva stanovišta su od interesa za inženjere mikroelektronike, te za

projektante hardvera, dok je za stručnjake, koji rade u području upravljanja sistemima i

gradnje ugrađenih sistema, mikrokontroler interesantan sa korisničkog stanovišta kao

komponenta ili procesor informacija koji treba da bude u stanju obaviti odgovarajuće

funkcije u nekom sistemu. Primjena ima mnogo, od jednostavne regulacije osvjetljenja,

alarmnih sistema, pa do upravljanja robotima u industrijskim pogonima. Prosječni

automobil danas, posjeduje na primjer oko 20-tak ugrađenih mikrokontrolera, (Mercedes S

klase iz 1999 godine posjedovao je 63 mikrokontrolera a automobil marke BMW iz iste

godine 65) dok je tipično srednje elektrificirano domaćinstvo opremljeno sa više od 50-tak

mikrokontrolera ugrađenih u različite električne i elektronske uređaje. Američka

kompanija Texas Instruments proizvela je prvi mikrokontroler serije TMS1000 sa dovoljno

RAM, ROM memorije i I/O hardverom koji je ugrađivan u mikrotalasne pećnice,

industrijske tajmere i kalkulatore. Mikrokontroleri, kao elementi nude opštija i za male

serije jeftina rješenja, jako širok izbor dobavljača i još širi izbor tehnoloških opcija.

Program ugrađen u mikrokontroler može biti jednostavno izmijenjen, čak i u toku same

proizvodnje.

Page 16: Edin Mešanović

16

2.4. Projektovanje ugrađenih sistema

Dizajn i projektovanje ugrađenih sistema se često bazira na faktorima koji se uopće ne

razmatraju kod projektovanja jakih desktop sistema. Opći zahtjevi koji se postavljaju pred

većinu projektanata ugrađenih sistema su:

- Niska cijena: Najveći dio ugrađenih proizvoda se radi za tržišta gdje krajnji

korisnik nije voljan da potroši nešto više novca za neznatno bolje performanse ili

nekoliko dodatnih pogodnosti. Stoga su projektanti prisiljeni da dizajniraju

proizvode sa optimalnim odnosom cijena/performansa, te da tražene performanse

izvuku za najmanju cijenu (ponekad i maksimalne performanse u okviru određenog

budžeta). To je i logično, jer se hardver isporučuje zajedno sa softverom, za razliku

od desktop sistema, gdje je softver u pravilu zaseban proizvod. Rezultat ovoga je da

su resursi, koji se nalaze na raspolaganju projektantu, minimalni.

- Napajanje: Potrošnja je još jedan kritičan faktor pri dizajnu ovih sistema. Ovo je

uglavnom zbog toga što veliki broj ovih sistema radi napajanje baterijskim

izvorom, a od njih se očekuje da rade i budu aktivni čak i u dužim periodima

vremena. Kao primjer, mogu se navesti mobilni telefoni, pejsmejkeri, senzori.

Digitalni senzori, na primjer, često rade u teškim i nekontrolisanim uslovima i

okolinama. Njihova veličina često isključuje upotrebu rashladnih sistema, a

smanjivanjem cijene ide se na plastična umjesto keramičkih pakovanja (opći trend

kod mikrokontrolera) što predstavlja samo još jednu nepovoljnost kada je u pitanju

hlađenje. Stoga, niska potrošnja je često obavezna.

- Predvidivost: Zbog čestih realno-vremenskih (engl. real-time) zahtjeva na sisteme,

a u kojima ugrađeni sistemi obično imaju svoju ulogu, predvidivost je esencijalna.

To bi značilo da se ponašanje sistema mora moći predvidjeti pod svim mogućim

uslovima i događajima. U ovim sistemima hardverska podloga mora garantirati da

će svaki kod koji se izvršava na njemu imati isti trošak/višak izvršavanja (engl.

executive overhead) prilikom svakog izvršavanja. Softver se često projektuje za

scenario najgoreg slučaja i to tako da je trošak/višak izvršavanja deterministički.

- Odziv: Ugrađeni sistemi poput upravljačkih i regulacionih sistema su određeni

događajima te stoga na njih moraju odgovarati dovoljno brzo. Takvi sistemi se

mnogo oslanjaju na prekide. Zbog toga moraju biti dizajnirani tako da imaju

dovoljno brze odzive na prekide, a takodjer i mali trošak/višak zbog obrade prekida.

- Vremenska tačnost: Distribuirani ugrađeni sistemi koji upravljaju udaljenim

bazama podataka i mrežni uređaji zahtjevaju preciznu vremensku granulaciju.

Rezolucija i tačnost koji se očekuju, za većinu ovih primjena, su reda mikrosekundi.

Većina ugrađenih aplikacija je ekstremno specijalizovana, odnosno visoko optimizirana.

Tipična projektna procedura ide kroz nekoliko koraka:

- Projektna specifikacija

- Hardver/ Softver razdvajanje

- Paralelni razvoj hardvera i softvera

- Integracija sistema i testiranje

Svaki od ovih koraka se čvrsto oslanja na iskustvo projektanta. Zadaci koji se stavljaju

pred projektanta su takve prirode da ostavljaju jako malo prostora za greške. Takva

Page 17: Edin Mešanović

17

nefleksibilnost dizajna čini da su svi troškovi, i korekcije grešaka u dizajnu i dodatnih

modifikacija, izrazito visoki. Dodatno, mogućnost ponovnog korištenja jednom napisanih

softverskih modula, kao i dodatnih portova su veoma male. Čak i nove verzije proizvoda

mogu zahtjevati ili kompletno projektovanje iznova ili značajan rad na inkorporaciji novih

osobina. Nadalje, stalno povećanje broja igrača na tržištu razvoja ugrađenih sistema, stvara

konstantan pritisak da se reducira vrijeme izlaska na tržiste (engl. time-to-market) kao i

broj odbačenih projekata. To uzrokuje da se projektanti okreću razvijanju generičkih i

fleksibilnih sistema. Bira se hardver koji je više generički, programira se u jezicima višeg

nivoa, te koliko je to moguće koriste se objektno orjentirani dizajn softvera.

Proizvođači hardvera se, također, nastoje uklopiti u ove trendove, tako da se

ugrađenom hardveru mogu sresti rješenja koja su "očerupani" desktop sistemi. Tako se i

kod procesora, namjenski razvijenih za "ugrađeno" tržište, javljaju hardverske strukture

poput keša (engl. cache) i jedinica za upravljanje memorijom (skr. engl. MMU- Memory

management unit). Kao primjer se uzimaju ARM i Hitchi SH7750 arhitekture. Neki

proizvođači su izašli i sa strategijama poboljšanja gustine koda. Ove strategije se baziraju

na kompresiji 32-bitnih instrukcija u 16-bitne i njihovu dekompresiju u toku rada.

Page 18: Edin Mešanović

18

3. Osnovne karakteristike mikrokontrolera

3.1. Osnove mikrokontrolera

Osnovu mikrokontrolera čini CPU jezgro i na osnovu njegove unutrašnje strukture

govorimo o 4-bitnim, 8-bitnim, 16-bitnim mikrokontrolerima. Većina današnjih

mikrokontrolera ima određenu količinu memorije integrirane na čip, a koja je podijeljena

na ROM za smještaj programa i RAM (radna memorija) za smještaj podataka i upravljanje

stekom (engl. stack). Kod PIC familije mikrokontrolera, RAM se koristi i za smještaj

registarskog steka. Familije mikrokontrolera označavaju dostupnost više različitih

mikrokontrolera sa istim osnovnim centralnim jezgrom, ali različitim periferalima,

pakovanjem, opcijama po pitanju radne brzine itd. Ulazi u mikrokontroler mogu biti

analogne i digitalne prirode i u suštini informacije o stanju objekta će slati neki mjerni

pretvarač (senzor). Izlazi iz mikrokontrolera također mogu biti analogne i/ili digitalne

prirode. Od namjene mikrokontrolera ovisiti će njegov izbor, te će jedni imati više I/O

port-ova, neki više ROM-a, a neki manje i sl.

Većina mikrokontrolera također ima i druge komponente kao što su:

- Tajmerski modul

- Ulazno/izlazne portove

- Konvertore signala (npr. A/D i D/A)

Ulazi u mikrokontroler mogu biti analogne i digitalne prirode i u suštini informacije o

stanju objekta će slati neki mjerni pretvarač (senzor). Izlazi iz mikrokontrolera također

mogu biti analogne i/ili digitalne prirode. Od namjene mikrokontrolera ovisiti će njegov

izbor, te će jedni imati više I/O port-ova, neki više ROM-a, a neki manje i sl. Osnovna

struktura mikrokontrolera prikazana je na slici 3.1.

Slika 3.1 Opšta blok struktura mikrokontrolera

Page 19: Edin Mešanović

19

Veliki broj mikrokontrolera različitih proizvođača, različitih arhitektura i performansi,

raspoloživ je danas na tržištu. Neki od njih podesni su za partikularne aplikacije dok su

drugi sasvim nepodesni za određenu klasu aplikacija. Prije bilo kakve komparacije

interesantno je za primjetiti da se u toku protekle dekade desila jedna masivna migracija sa

4-bitnih mikrokontrolera na 8-bitne, gdje je vjerovatno ključnu ulogu odigrala odluka

Intela da arhitekturu svog 8051 ostavi otvorenom, te je uslijedila njegova masovna

proizvodnja od strane velikog broja kompanija. Takva jedna dominantna arhitektura nije

nikada ostvarena na polju 16-bitnih uređaja, koje se uglavnom sastoji iz jezgri koje je

svaka kompanija razvijala ponaosob. Pošto periferali i memorija, na samom čipu

zauzimaju relativno mnogo (obično najviše) silicijskog prostora, sama cijena jezgre

praktično je mala stavka u ukupnom budžetu. Tako se desilo da se za većinu aplikacija

zbog velike razlike u cijeni, prelaz s 4-bitnih na 16-bitne mikrokontrolere čak nije ni

razmatran.

3.2. Arhitekture mikrokontrolera

U konstrukciji mikrokontrolera prisutne su dvije osnovne arhitekture [5]:

- Von Neumannova

- Harvardova

Na slici 3.2 prikazani su principi organizacije pomenutih arhitektura mikrokontrolera.

Slika 3.2 Harvardova i Von Neumannova arhitektura mikroračunara

Kao što se sa slike 3.2 može vidjeti, konvencionalna Von-Neumann arhitektura

mikrokontrolera posjeduje jednu internu magistralu koja povezuje CPU sa programskom

(ROM) i memorijom podataka (RAM). Ovakav koncept povezuje kompletan memorijski

prostor sa CPU jednom magistralom tako da podaci i instrukcije koriste istu magistralu.

Harvard arhitektura je noviji koncept u odnosu na Von-Neumannovu. Harvard

arhitektura mikroračunara bazira na principu fizičkog razdvajanja internih magistrala za

programsku memoriju (ROM) i memoriju podataka (RAM). Time je, zbog konkurentnog

pristupa programskoj memoriji i memoriji podataka, ukupan protok podataka kroz CPU

ubrzan. To ima za posljedicu razdvajanje internih sabirnica na čak 6 grupa:

- adresna sabirnica za program;

Page 20: Edin Mešanović

20

- adresna sabirnica za čitanje podataka iz memorije;

- adresna sabirnica za upisivanje podataka u memoriju;

- sabirnica za kod instrukcije;

- sabirnica za podatke koji se čitaju;

- sabirnica za podatke koji se upisuju;

Rezolucija magistrale podataka osmobitnog mikrokontrolera Harvard arhitekture je

osmobitna dok je rezolucija instrukcijske riječi (rezolucija programske magistrale)

uobičajeno veća od osam bitova (tipično 12, 14 ili 16). Instrukcije i podaci dobavljaju se

jednovremeno i izvršavaju u jednom instrukcijskom ciklusu. Tipično za Harvard

arhitekturu je da posjeduje manje raspoloživih instrukcija nego Von-Neumann-ova, i da se

većina instrukcija izvršava u jednom instrukcijskom ciklusu. Izuzetak su jedino instrukcije

koje mijenjaju status programskog brojača (PC1), a to su instrukcije grananja i instrukcije

skokova.

Mikrokontroleri Harvard arhitekture nazivaju se uopšteno RISC mikrokontrolerima (Re

duced Instruction Set Computer) i predstavljaju popularnu arhitekturu modernih procesora.

Jedan 8-bitni mokrokontroler ove arhitekture uobičajeno poseduje do nekoliko desetina

instrukcija.

Mikrokontroleri Von-Neumann-ove arhitekture nazivaju se CISC mikrokontrolerima

(Complex Instruction Set Computer). Magistrala podataka i programska magistrala su iste

rezolucije, npr. osmobitna, međutim, zbog zauzimanja zajedničke magistrale podaci i

instrukcijene mogu biti dobavljeni istovremeno. Tipični osmobitni mikrokontroleri Von-

Neuman arhitekture posjeduju preko dvije stotine instrukcija.

Page 21: Edin Mešanović

21

4. ATMEL Mikrokontroleri

4.1. AVR Familija

Familija mikrokontrolera AVR je uvedena na tržiste tokom 1997 god. od strane Atmel-

a. U osnovi Atmel AVR (nose oznaku AT90) familije se nalazi 8-bitni RISC

mikroprocesor koji sadrži 32 registra opće namjene, ali i relativno bogat set instrukcija.

Kao posljedica korištenja interne Flash programske memorije, koju je moguće veoma

jednostavno programirati ISP (engl. In-System Programming) metodom i veoma povoljnog

odnosa cijene i performansi ova Atmel-ova familija se dosta koristi.

AVR mikroprocesore odlikuje velika brzina izvršavanja do 16 MIPS, što je oko 12

puta više nego kod standardnih 8-bitnih mikroprocesora, dok su sa druge strane i

memorijske performanse znatno poboljšane kombinovanim korišćenjem Flash memorije

(trenutno veličine do 128KB) i EEPROM memorije. AVR mikrokontroleri nude povoljan

odnos brzine izvršavanja instrukcija i potrošnje (MIPS/mW) na tržištu 8-bitnih

mikrokontrolera. AVR RISC familija mikrokontrolera se proizvodi u Atmelovoj CMOS

tehnologiji koju karakterizira smanjena potrošnja - npr. AVR sa brzinom izvršavanja 10

MIPS ima potrošnju oko 40mW. Na slici 4.1 prikazan je trend razvoja AVR familije.

Slika 4.1 Kratak pregled razvoja AVR mikrokontrolera

Page 22: Edin Mešanović

22

Neki od najčešće korištenih Atmelovih procesora sa nekim svojim osobinama koje su

karakteristične za njih su: [7]

- AVR (Classic) predstavlja osnovnu familiju AVR mikrokontrolera. Tipičan

predstavnik je čip AT90S8515 koji posjeduje solidan broj mogućnosti.

- MEGA AVR familija mikrokontrolera ima jedinstvenu memoriju sa mogućnošću

samoprogramiranja (Self-Programming Memory), kao i mogućnost čitanja iz

memorije tokom upisa (Read while Write). Mikrokontroleri iz ove familije se mogu

naći u varijantama sa 8-12K Flash memorijom, do 4K EEPROM-a i do 4K RAM-a

i dolaze u 32-64 pinskom pakovanju. Usmjereni su na specijalizovane segmente

tržišta i često se koriste kao komponente u prenosivim uređajima, bežičnoj

komunikaciji, bezbjednosti, itd.

- LCD AVR pored standardnih mogućnosti posjeduju 4x25 segmentni LCD drajver,

kao i JTAG interfejs za on-chip debugging.

- RF AVR mikrokontroleri predstavljaju kombinaciju AVR mikrokontrolera i RF

transmitera visokih performansi, koji radi na frekvenciji 250-460MHz. Koriste se

na tržištima koja imaju potrebu za bežičnom daljinskom kontrolom po pristupačnoj

cijeni.

- SECURE AVR u mikrokontroleru su integrisani generator slučajnih brojeva,

kripto procesor i on-chip security. Upotreba: omogućuju dizajn embedded sistema

koji imaju potrebu za sigurnošću i kriptovanjem podataka kao što je to slučaj kod

Internet transakcija, pretplata na TV kanale, bankarstva.

- USB AVR posjeduje konfigurabilni low/high speed USB kontroler koji podrzava 5

end pointa i ima integrisan 12-kanalni 10-bitni AD konvertor. Koriste se kod

kontrolera za video igrice, uređaja za akviziciju podataka, senzora...

To su samo neki, najčešće korišteni mikrokontroleri iz porodice AVR mikrokontrolera.

4.2. Arhitektura ATMEL Mikrokontrolera

AVR mikrokontroleri imaju identično jezgro (engl. core), set instrukcija i organizaciju

memorije, a razlike koje postoje među raznim familijama AVR mikrokontrolera odnose se

na dodatne specifične mogućnosti koje su ugrađene u svaku od njih, kapacitet memorije,

radni napon napajanja, način pakovanja (broj pinova) itd. Ovo ima za posljedicu

jednostavnije programiranje u slučaju promjene mikrokontrolera u toku faze projektovanja

(nema potrebe za izmjenom napisanog koda,već se piše samo dodatni kod za rad sa

specifičnim komponentama novog mikrokontrolera).

Oznake različitih familija mikrokontrolera, kao sto su tinyAVR, AVR (Classic AVR) i

megaAVR se ne odnose na performanse, već predstavljaju naznaku kompleksnosti. Dok je

spektar mogućnosti kod megaAVR veoma širok, tako je kod TinyAVR ograničen i

predstavlja podskup mogućnosti AVR familije. Svaka od ovih klasa je pravljena za

specifičnu namjenu i proizašla je kao potreba tržišta za takvim tipom mikrokontrolera.

U cilju optimizacije veličine koda, performansi i potrošnje, arhitektura AVR

mikroprocesora objedinjuje veliki registarski fajl sa kratkim vremenom pristupa i brze

instrukcije koje se izvršavaju u samo jednom ciklusu. Brzo pristupni registarski fajl se

sastoji od 32 8-bitna radna registra opće namjene. Dok klasične arhitekture bazirane na

Page 23: Edin Mešanović

23

upotrebi akumulatora zahtjevaju veliku količinu programskog koda za prenos podataka

između akumulatora i memorije, kod AVR mikrokontrolera su ovi transferi podataka

eliminisani korišćenjem 32 radna registra, od kojih je svaki moguće koristiti kao

akumulator. U Atmelu se kaže da je AVR arhitektura razvijana imajući za cilj da se

efikasno programira kako u asembleru, tako i u C, naročito uzimajući u obzir korištenje

pointera, kao jednu od glavnih odlika programiranja u C. Na slici 4.2 prikazana je opšta

šema AVR mikrokontrolera.

Slika 4.2 Opšta šema AVR mikrokontrolera

Svi registri su direktno povezani sa aritmetičko logičkom jedinicom (ALU) čime je

omogućen pristup do dva nezavisna registra u toku izvršavanja jedne instrukcije. ALU

operacije se dijele u tri osnovne kategorije: aritmetičke, logičke i operacije nad bitima.

AVR koristi koncept Harvardske arhitekture – postoje posebne memorije i magistrale za

programski kod i podatke, koja predstavlja arhitekturu najpopularnijeg pocesora Classic

AVR familije. Programska memorija se izvršava sa dvostepenim pipeline-om. Paralelno sa

izvršavanjem tekuće instrukcije AVR dohvata narednu instrukciju i zatim je izvršava u

slijedećem ciklusu takta. Ovaj koncept omogućava da jedna instrukcija bude izvršena u

svakom taktu. Kod drugih CISC i RISC arhitektura, eksterni takt oscilatora se dijeli (do 12

puta) i na taj način se dobija interni izvršni takt. Mora se podvući da je to jedna od glavnih

prednosti AVR mikrokontrolera sa poboljšanom RISC arhitekturom - na AVR

mikroprocesoru od 8MHz izvrši se 8 miliona instrukcija u sekundi (MIPS), što je daleko

bolje od PIC mikroprocesora na 20MHz koji daje samo 3-4MIPS. Memorijski prostor

Page 24: Edin Mešanović

24

uređaja sadrži 64 adrese za periferijske funkcije kao što su kontrolni registri, tajmeri-

brojači, A/D konvertori, itd. I/O uređajima se pristupa direktno ili preko područja

podataka, budući da se oni takođe mapiraju u adresni prostor SRAM memorije [7]. Na slici

4.3 prikazan je blok dijagram AVR CPU-a.

Slika 4.3 Blok dijagram AVR CPU-a

4.3. Karakteristike Atmega32 mikrokontrolera

AVR® 8-bit Mikrokontroler visokih performansi i niske potrošnje [4]

Napredna RISC Arhitektura

• 131 Instrukcija – Većina se izvršava u jednom taktu

• 32 x 8 Registra opšte namjene

• Potpuno statičke operacije

• Do 16 MIPS pri 16 MHz

Page 25: Edin Mešanović

25

• dvociklični multiplikator u čipu

Neizbrisivi segmenti memorije visoke izdržljivosti

• 32K Bytes Flash memorije sa mogućnosti samoprogramiranja (In-System Self-

programmable)

• 1024 Bytes EEPROM

• 2K Byte Internog SRAM

• Ciklus Čitanja/Pisanja: 10.000 Flash/100.000 EEPROM

• Očuvanje podataka: 20 god. pri 85°C/100 god. pri 25°C

• Opcionalna Boot Code Sekcija sa nezavisnim bitovima zaključavanja (Lock

Bits)

• Programsko zaključavanje za sigurnost softvera

JTAG (IEEE std. 1149.1) Interfejs

• Podrška za debagiranje u čipu

• Programiranje Flash-a, EEPROM-a i bitova zaključavanja kroz JTAG Interfejs

Periferne mogućnosti

• Dva 8-bitna Tajmera/Brojača sa zasebnim preskalerima i modovima

uspoređivanja

• Jedan 16-bitni Tajmer/Brojač sa zasebnim preskalerom i modom uspoređivanja

• Brojači u realnom vremenu sa zasebnim oscilatorom

• Četiri PWM kanala

• 10-bitni ADC sa 8 kanala

• Bajtno orjentisan serijski interfejs

• Programabilni serijski USART

• Master/Slave SPI serijski interfejs

• Programabilni Watchdog Tajmer sa zasebnim oscilatorom u čipu

• Analogni komparator u čipu

Specijalne osobine mikrokontrolera

• Power-on Reset i Programabilna Brown-out detekcija

• Interno kalibrirani RC Oscilator

• Eksterni i interni izvor interapta

• Šest Sleep modova: Idle, ADC Noise Reduction, Power-save, Power-down,

Standby

• i Extended Standby

I/O i pakovanje

• 32 Programabilne I/O linije

• 40-pin PDIP, 44-lead TQFP, and 44-pad QFN/MLF

Radni naponi

• 2.7 - 5.5V za ATmega32L

• 4.5 - 5.5V ua ATmega32

Brzine

• 0 - 8 MHz za ATmega32L

• 0 - 16 MHz za ATmega32

Potrošnja energije pri 1 MHz, 3V, 25C za ATmega32L

• Aktivno: 1.1 mA

• U praznom hodu: 0.35 mA

Svi AVR portovi imaju funkcije čitanja, modifikovanja i pisanja kada se koriste kao

digitalni ulazno-izlazni portovi. Ovo podrazumijeva da se smjer porta može mijenjati. Svi

Page 26: Edin Mešanović

26

pinovi portova imaju zasebne pull-up otpornike sa konstantnom otpornošću. Na slici 4.4

prikazana je šema ulazno-izlaznog pina.

Slika 4.4 Šema ulazno-izlanog pina

Registri i reference bitova su pisani u generalnoj formi. Slovo “x” u indeksu određuje

koji se port koristi a broj “n“ broj bita. Ipak, kada koristimo registar ili definišemo bitove u

toku programa, precizna forma mora se koristiti, na primjer, PORTB3 za bit broj 3 u Portu

B.

Svaki port koristi tri ulazno – izlazne memorijske adresne lokacije:

- PORTx – Registar podatka (Data Register)

- DDRx – Registar smjera podatka (Data Direction Register)

- PINx – Ulazni pin porta (Port Input Pins)

Na slici 4.5 prikazan je Atmega32 mikrokontroler.

Slika 4.5 Atmega32 8-bitni mikrokontroler

Page 27: Edin Mešanović

27

4.3.1. Objašnjenje pinova

Port A(PA7..PA0) predstavlja analogni ulaz na A/D konvertor. Također služi i kao 8-

bitni bidirekcioni I/O port, ako se A/D konvertor ne koristi. Pinovi porta mogu obezbijediti

interni pull-up otpornik.

Port B(PB7..PB0) služi kao 8 bitni bidirekcioni I/O port sa interni pull up otpornicima

(selektabilno za svaki bit). Alternativne funkcije porta B su objašnjene u nastavku:

- Bit 7 – SCK: Master taktni izlazni, Slave taktni ulazni pin za SPI kanal. Kada je

SPI uključen kao Slave, ovaj pin je konfigurisan kao ulaz bez obzira koja je

vrijednost DDB7. Kada je SPI uključen kao Master, smjer podatka ovog pina

kontroliše DDB7.

- Bit 6 – MISO: (Master Input Slave Output) Master ulazni, Slave izlazni pin

podatka za SPI kanal. Kada je SPI uljučen kao Master, ovaj pin je konfigurisan kao

ulazni bez obzira koja je vrijednost DDB6. Kada je SPI uključen kao Slave, smjer

kontroliše DDB6.

- Bit 5 – MOSI: (Master Output Slave Input) SPI Master izlazni, Slave ulazni pin

podatka za SPI kanal. Kada je SPI uključen kao Slave, ovaj pin je konfigurisan kao

ulazni bez obzira koja je vrijednost DDB5. Kada je SPI uključen kao Master, smjer

kontroliše DDB5.

- Bit 4 – SS : (Slave Select) Kada je SPI uljučen kao Slave, ovaj pin je konfigurisan

kao ulazni bez obzira koja je vrijednost DDB4. Kada je SPI uključen kao Master,

smjer kontroliše DDB4.

- Bit 3 – AIN1/OC0:

o AIN1, negativni ulaz analognog komparatora.

o OC0: pin PB3 može da služi kao eksterni izlaz za vrijednost sa kojom se

upoređuje Timer/Counter0. Pin PB3 mora biti konfigurisan kao izlaz da bi

podržao funkciju.

- Bit 2 – AIN0/INT2:

o AIN0, pozitivni ulaz analognog komparatora.

o INT2: eksterni spoljašnji vanjski izvor prekida 2.

- Bit 1 – T1: brojački izvor za Timer/Counter1

- Bit 0 – TO/XCK:

o T0, brojački izvor za Timer/Counter0

o XCK:USART-ov eksterni takt. Pin XCK je aktivan samo kada USART radi

u sinhronom režimu

Port C je 8 bitni bidirekcioni I/O port sa interni pull up otpornicima (selektabilno za svaki

bit). Ako je JTAG interfejs uključen, pull - up otpornici na pinovima PC5, PC3 i PC2 biće

aktivirani čak i ako se resetuje sistem. Alternativne funkcije porta C su objašnjene u

nastavku:

- Bit 7 – TOSC2 (Timer Oscillator pin 2): Kada je bit AS2 u ASSR setovan,

omogućava asinhrono taktovanje Timer/Counter-a 2, pin PC7 je otkačen sa porta i

Page 28: Edin Mešanović

28

postaje ulaz invertujućeg pojačavača oscilatora. Ovaj režim se koristi kada je

kristalni oscilator povezan na ovaj pin i pin se ne može koristiti kao ulazno-izlazni.

- Bit 6 – TOSC1 (Timer Oscillator pin 1): Kada je bit AS2 u ASSR setovan,

omogućava asinhrono taktovanje Timer/Counter-a 2, pin PC6 je otkačen sa porta i

postaje ulaz invertujućeg pojačavača oscilatora. U ovom režimu, kristalni oscilator

je povezan na ovaj pin i pin se ne može koristiti kao ulazno – izlazni.

- Bit 5 – TDI (JTAG Test Data In): Serijski izlaz podatka pomjera u Instruction

Register ili Data Register.

- Bit 4 – TDO (JTAG Test Data Out): Serijski izlaz podatka pomjera iz Instruction

Registra ili Data Registra.

- Bit 3 – TMS (JTAG Test Mode Select): Ovaj pin se koristi za upravljanje state –

mašinom TAP kontrolera.

- Bit 2 – TCK (JTAG Test Clock): rad JTAG-a je sinhronizovan sa TCK.

- Bit 1 – SDA (Two Wire Serial Interface Data): Kada je bit TWEN u TWCR

setovan omogućava se Two Wire serijski interfejs. Tada je pin PC1 diskonektovan

sa porta i postaje Serial Data I/O pin za Two Wire Serial Interface.

- Bit 0 – SCL (Two wire Serial Interface Clock): Kada je bit TWEN u TWCR

setovan omogućava se Two Wire serijski interfejs. Tada je pin PC0 diskonektovan

sa porta i postaje Serial Clock I/O pin za Two Wire Serial Interface.

Port D ima osnovne funkcije kao i ostali portovi sa mogućnošću izbora alternativnih

funkcija kao što su:

- Bit 7 – OC2 (Timer/Counter2 Output Compare Match): Pin PD7 može da služi kao

eksterni izlaz za Timer/Counter2 Output Compare. Pin mora biti konfigurisan kao

izlazni.

- Bit 6 – ICP1 (Input Capture pin): Pin PD6 može da se ponaša kao Input Capture

pin za Timer/Counter1.

- Bit 5 – OC1A (Output Compare Match A): Pin PD5 može da služi kao eksterni

izlaz za Timer/Counter1 Output Compare A. Pin mora biti konfigurisan kao izlazni.

- Bit 4 – OC1B (Output Compare Match B): Pin PD4 može da služi kao eksterni

izlaz za Timer/Counter1 Output Compare B. Pin mora biti konfigurisan kao izlazni.

- Bit 3 – INT1 (External Interrupt Source 1): Pin PD3 može da služi kao eksterni

izvor prekida.

- Bit 2 – INT0 (External Interrupt Source 0): Pin PD2 može da služi kao eksterni

izvor prekida

- Bit 1 – TXD (Transmit Data): Izlazni pin podatka USART-a. Kada je uključen,

ovaj pin je izlazni.

- Bit 0 – RXD (Receive Data): Ulazni pin podatka USART-a. Kada je uključen, ovaj

pin je ulazni.

Page 29: Edin Mešanović

29

5. Platforma KR-mega32-16 V2.3

5.1. Hardverski koncept

KR-mega32-16 platforma je idealna za razvoj upravljačke elektronike i robotike.

Platforma je temeljena na razvojnoj pločici s ulazno/izlaznim konektorima i besplatnom

programskom podrškom. Glavna namjena cijelog sistema je komuniciranje s različitim

hardverom koji je na njega priključen. Na slici 5.1 prikazan je izgled platforme.

Slika 5.1 KR-mega32-16 platforma

Platforma KR-mega32-16 V2.3 raspolaže sljedećim karakteristikama: [3]

- Priključak za baterije (9,6 Volt)

- Zaštita priključka za baterije od pogrešne polarizacije

- Razdvojeno osigurane strujne krugove

- Automatske osigurače koji se sami vraćaju u slučaju iskakanja

- LCD-Display, opcionalno sa pozadinskim osvjetljenjem

- Opcionalno osvjetljenje se može jumperom postaviti na ON (konstantno svijetli),

OFF ili OUT21 (upravljano svijetli)

Page 30: Edin Mešanović

30

- 2 priključka za motore (za motore do 600mA, kod većih motora potreban eksterni

H-most)

- 2 priključka za servo motore

- I²C-priključak na koji se mogu priključiti dva uređaja. Jednostavna ekspanzija za

više uređaja.

- SPI-priključak koji se može koristiti kao Slave. Na ovaj priključak se također mogu

priključiti dva uređaja.

- RS232 Interface preko kojeg platforma može komunicirati sa računarom ili drugim

uređajima.

- RS232 Interface preko kojeg platforma može komunicirati sa računarom ili drugim

uređajima

- Selekcija RS232 načina rada (PC-RS232 ili TTL-RS232) vrši se jumperom.

- Posebno izdvojen UART priključak, preko kojeg je moguće uspostaviti nekoliko

različitih komunikacijskih protokola.

- Integrisan programator. Nije potreban poseban adapter za programiranje.

- 13 digitalnih ulaza/izlaza

- 8 analognih ulaza koji se također mogu koristiti kao digitalni ulazi/izlazi

- 3 eksterna Interapta (Interrupts)

- Dugme za reset

- 32 KByte memorije

- 16 MHz frekvencija

Page 31: Edin Mešanović

31

Slika 5.2 Šema priključaka

Priključci za motore

Platforma posjeduje mogućnost direktne

kontrole 2 DC motora. Motori se mogu

kontrolisati u smislu smjera i brzine vrtnje.

Izlazni signal je pulsno širinska modulacija

(PWM) [3]

Priključci za servo motore

Platforma posjeduje mogućnost direktne

kontrole nad 2 analogna servo motora.

Radni napon iznosi +5 V. [3]

a)

b)

Slika 5.3 (a, b) Detaljni prikaz priključaka

Page 32: Edin Mešanović

32

Priključci za serijski I2C bus

Platforma posjeduje mogućnost

priključivanja 2 serijske I2C linije. Oba

priključka su spojena paralelno. Radni

napon od +5 V se može koristiti za

napajanje dodatnih uređaja (npr. Senzora).

Preporučeno je da se ploča koristi kao

Master. Ako se ploča koristi kao Slave,

moraju se ukloniti otpori R6 i R7 [3].

Priključci za serijski SPI bus

Platforma posjeduje mogućnost

priključivanja 2 serijske SPI linije. Oba

priključka su spojena paralelno. Radni

napon od +5 V se može koristiti za

napajanje dodatnih uređaja (npr. Senzora)

[3].

Reset sistem

Platforma posjeduje mogućnost

priključivanja eksternog Reset signala.

Reset se može okidati pomoću npr.

kontakta ili tranzistora. Signal je LOW-

active. Taster je priključen paralelno

eksternom izvoru [3].

Interapt sistem

Platforma posjeduje mogućnost

priključivanja do tri eksterna interapt

signala. Int0, Int1 i Int2 se ispitivaju

softverski. Ispod interapt linije se nalazi

mogućnost napajanja +5 V i masa za

eventualne eksterne interapt izvore [3].

a)

b)

c)

d)

Slika 5.4 (a-d) Detaljni prikaz priključaka

Page 33: Edin Mešanović

33

Digitalni portovi – Tip I

Platforma posjeduje mogućnost

priključivanja osam digitalnih portova

(port 9-16). Ovi portovi su priključeni

direktno na mikrokontroler, pa time brži

nego digitalni portovi tipa II. U zavisnosti

od korištenja softvera, ovi portovi se mogu

koristiti kao ulaz ili izlaz. Ispod Interrupt

linije se nalazi mogućnost napajanja +5 V i

masa za eventualne eksterne senzore,

aktuatore, i sl. [3].

Digitalni portovi – Tip II

Platforma posjeduje mogućnost

priključivanja pet digitalnih portova (port

17-21). Ovi portovi su priključeni preko

I2C busa, tako da su ovi portovi sporiji

nego digitalni portovi tipa I. U zavisnosti

od korištenja softvera, ovi portovi se mogu

koristiti kao ulaz ili izlaz. Ispod portova se

nalazi mogućnost napajanja +5 V i masa za

eventualne eksterne senzore, aktuatore, i sl.

[3].

Analogni portovi

Platforma posjeduje mogućnost

priključivanja osam analognih portova

(port 1-8). Ovi portovi su priključeni

direktno na mikrokontroler. U zavisnosti

od korištenja softvera, ovi portovi se mogu

koristiti kao ulaz ili izlaz. Ispod portova se

nalazi mogućnost napajanja +5 V i masa za

eventualne eksterne senzore, aktuatore, i sl.

[3].

Kontrola baterije

Platforma posjeduje mogućnost

softverskog nadziranja baterije.

Setovanjem prekidača se napon baterije

preusmjerava na analogni port 01 i tu se

može softverski ispitati. Tačna vrijednost

za „prazne baterije“ se mora odrediti

eksperimentalno [3].

a)

b)

c)

d)

Slika 5.5 (a-d) Detaljni prikaz priključaka

Page 34: Edin Mešanović

34

RS-232 Interfejs za podatke

Standardni RS 232 interfejs je izveden na 9

pol. SUBD utičnicu. Raspored priključaka

je ekvalentan modemu. Na taj način se za

komunikaciju može koristiti standardni RS

232 kabal. Isti interfejs se može koristiti i

kao 5 V TTL signal za priključak na

periferni uređaj (npr.CMU CAM II).

Otvaranjem zatvorenog prekidača

aktiviramo komunikaciju preko 3-polnog

priključka. Uvijek smije biti aktivan samo

jedan interfejs inače može doći do smetnji

u protokolu, ili oštećenja hardvera u

najgorem slučaju [3].

RS-232 Interfejs za programiranje

Standardni RS 232 interfejs je izveden na 9

pol. SUBD utičnicu. Raspored priključaka

je ekvalentan modemu. Na taj način se za

programiranje može koristiti standardni RS

232 kabal. Za vrijeme programiranja se

procesor zaustavlja i resetuje [3].

a)

b)

c)

Slika 5.6 (a-c) Detaljni prikaz priključaka

Page 35: Edin Mešanović

35

5.2. Softverski koncept

5.2.1. Opšti AVR Studio

AVR Studio je Development Environment Integrated (IDE) za razvijanje 8-bit AVR

aplikacija na Windows NT/2000/XP/Vista/7 platformi. AVR Studio pruža sve potrebno za

razvijanje uključujući moćan debugger, pregled registara, memorije, I/O i sl. Neke bitne

osobine AVR Studia:

integrisan assembler

integrisan simulator

integriše GCC kompajler plug-in

podrška za sve Atmel alate koji podržavaju 8-bitnu AVR arhitekturu, uključujući

AVR ONE!, JTAGICE mkI, JTAGICE mkII, AVR Dragon, AVRISP, AVR ISPmkII,

AVR Butterfly, STK500 i STK600

AVR RTOS plug-in podrška

podrška za AT90PWM1 and ATtiny40

Cijeli postupak pisanja, kompajliranja i debagovanja C koda se obavlja u programu pod

nazivom Programmers Notepad [WinAVR] koji je prikazan na slici 5.7.

Slika 5.7 Programmers Notepad

Page 36: Edin Mešanović

36

Kako bismo bili u mogućnosti da pošaljemo program u mikrokontroler, potreban nam

je softver za računar.Program iskompajliran pomoću Programmers Notepad-a i WinAVR-a

treba ubaciti u program PonyProg koji će izvršiti programiranje priključene ploče datim

programom.

Ponyprog prije upotrebe treba kalibrirati i izvršiti setup konekcije. Ulaskom u podmeni

Setup, koji se nalazi u meniju Options, ostvaruje se podešavanje hardverskih parametara

programa PonyProg, što je ilustrovano na slici 5.8.

Slika 5.8 Podešavanje parametara programa

U Ponyprog-u možemo da izaberemo jedan od dva, za nas interesantna, tipa ponuđena

načina komunikacije:

SI Prog I/O

SI Prog API

SI Prog I/O je brži od API-a, i njega trebamo izabrati ukoliko na matičnoj ploči imamo

nativni RS-232 kontroler. Ukoliko nemamo nativni RS-232 kontroler, imamo mogućnost

korištenja nekog konvertora (USB->RS232, PCMCIA, i sl.). U tom slučaju je konekcija do

nekoliko puta sporija, a kao način komunikacije u tom slučaju moramo izabrati SI Prog

API. Na slici 5.9 prikazan je izgled PonyProg-a.

Page 37: Edin Mešanović

37

Slika 5.9 PonyProg

5.2.2. Funkcionalnost KRmega32 platforme

KRmega32 platforma dolazi sa vlastitom bibliotekom za programski jezik C, koja

ubrzava i u mnogim situacijama olakšava razvoj na Atmega32 mikrokontroleru. Da bi se

kompajler upoznao sa funkcijama KRmega biblioteke, mora se u datoteka.c uvezati

KRmega biblioteka. Jednostavnim #include "kr-mega32v23.h", ovaj zadatak je obavljen, i

kompajler je spreman za rad sa KRmega bibliotekom [3].

Funkcionalnost

Biblioteka sadrži sve funkcije za pristup periferiji ploče. Funkcije su podjeljenje na

sljedeća područja:

Pristup portovima

I2C Bus

Ispisne funkcije

UART

LCD

Servo rutine

Motor PWM

Enkoder

Page 38: Edin Mešanović

38

SPI Interfejs

Ostalo

Pristup portovima

Krmega32 ploča raspolaže sa 21 portom, na koja imamo direktni pristup. Portovi su

numerisani od 1 do 21. Svi portovi mogu služiti kao digitalni ulazi/izlazi. Portovi od 1 do

8, mogu služiti i kao analogni ulazi.

Da bi se sve portne funkcije mogle koristiti potrebno ih je aktivirati. Sve

funkcionalnosti portova se uključuju na sljedeći način: [3]

i2cInit(); - za pristup portovima od 17 – 21

a2dInit(); - za pristup portovima 1 – 8 kao analogni ulazi

Funkcijama nisu potrebni parametri.

Za korištenje portova kao digitalni izlaz postoje dvije fukcije. Kao argument se koristi

broj porta. Za slučaj digitalnog izlaza, taj broj se kreće 1-21.

setDigitalOut(int port); - postavljanje porta 'port' na HIGH (+5V)

clearDigitalOut(int port); - postavljanje porta 'port' na LOW (0V)

Za korištenje portova kao digitalni ulaz postoji jedna funkcija. Kao argument se koristi

broj porta.

int digital(int port); - vraća integer vrijednost porta

Za korištenje portova kao analogni ulaz postoji jedna funkcija. Kao argument se koristi

broj porta. Za slučaj analognog ulaza, taj broj se kreće 1-8.

int analog(int port); - vraća integer vrijednost porta

Gornja funkcija vraća integer vrijednost (0-255), koja je proporcionalna naponu na portu.

Ukoliko je na portu 0V, gornja funkcija vraća 0. Ukoliko je na portu +5V, gornja funkcija

vraća 255.

I2C Bus

Krmega32 ploča raspolaže sa jednim I²C busem, preko kojeg se mogu priključiti

dodatni senzori i aktuatori na Krmega32 platformu. Za I²C-Bus na raspolaganju su

slijedeće funkcije: [3]

void i2cInit(void); - inicijalizira I²C-Bus.

Ukoliko se inicijalizira LCD, incijalizira se automatski i I²C-Bus.

void i2cSetBitrate(u16 bitrateKHz); - postavlja brzinu busa

Gornja funkcija kontroliše brzinu kompletnog I²C-Busa. Vrijednost se daje u kHz.

Maksimalna brzina koju ova ploča podržava iznosi 500 kHz. Treba obratiti pažnju na

maksimalnu brzinu prenosa svih uređaja priključenih na bus. Brzina cjelokupnug I²C-Busa

smije biti onolika, kolika je najviša brzina najsporijeg uređaja na I²C-Busu [3].

void i2cMasterSend(u08 deviceAddr, u08 length, u08 *data); - Šalje podatke iz

niza data uređaju na adresi deviceAddr. Šalje se onoliko bajta, koliko je određeno sa

length.

Page 39: Edin Mešanović

39

void i2cMasterReceive(u08 deviceAddr, u08 length, u08* data); - Prima onoliko

bajta, koliko određeno sa length, od uređaja na adresi deviceAddr.

Ispisne funkcije

Za ispis se koristi sljedeća funkcija:

void rprintf(String);- Ispis se može preusmjeriti na LCD, ili na serijski interfejs.

UART

UART-Interfejs je u ovoj biblioteci najmešten na asinhroni prenos podataka na računar.

Taj se prenos bez većih problema može preusmjeriti prema drugoj KRmega ploči, ili

nekom drugom uređaju za akviziciju podataka [3].

Bazna funkcionalnost se postiže sljedećim funkcijama:

void uartInit(void); - Inicijalizira serijski interfejs.

void uartSetBaudRate(u32 baudrate); - Postavlja Baudrate sa kojom UART treba

da radi. Standard je 9600.

void uartSendByte(u08 data); - Šalje jedan bajt preko serijskog interfejsa.

int uartGetByte(&data); - Prima jedan bajt sa serijskog interfejsa i snima ga u

variablu data

rprintfInit(uartSendByte); - Preusmjerava izlaz rprintf rutine na serijski interfejs.

LCD

Uz KRmega platformu standardno dolazi 2x16 displej. Bez većih problema se mogu

priključiti i displeji drugih formata [3].

void lcdInit(void); - Inicijalizira displej. Sa LCD-om se automatski inicijalizira i

I²C-Bus, jer je LCD priključen preko I²C-Busa.

void lcdHome(void); - Postavlja kursor na početnu lokaciju (gore lijevo).

void lcdClear(void); - Briše sadržaj displeja.

void lcdGotoXY(u08 row, u08 col); - Postavlja kursor na datu poziciju.

void lcdDataWrite(u08 data); - Šalje jedan znak na displej.

rprintfInit(lcdDataWrite); - Preusmjerava izlaz rprintf rutine na LCD.

Servo rutine

Krmega32 ploča raspolaže sa dva priključka za servo motore [3].

void servoInit(void); - Inicijalizira Servo rutine.

void servoOff(void); - Oslobađa rutine.

void servoSetPosition(u08 channel, u08 position); - Postavlja poziciju servo motor

pri čemu je channel broj servo motora (0 ili 1) i position pozicija servo motora. Prima

vrijednost od 0 do 255.

Motor PWM

Krmega32 ploča raspolaže sa dva priključka za motore (do 600mA). Motori mogu primiti

od 0 Volti, do napona baterija. Motori se mogu kretati u dva smjera [3].

Page 40: Edin Mešanović

40

void motorInit(void); - Inicijalizacija PWM upravljanja za motore. Za motore se

koriti Timer0.

void motor(int port, int power); - Postavlja brzinu obrtanja motora, pri čemu je port

broj motora (1 ili 2) i power brzina motora. Prima vrijednosti od -100 do 100. Negativne

vrijednosti vrte motor unazad.

void motorStop(int port); - Zaustavlja motor na portu.

Enkoder

Krmega32 ploča raspolaže sa tri direktna priključka za enkodere. Preko tih priključaka

se enkoderi mogu direktno ispitivati. Većina enkodera ima dva kanala. Tako je moguće

odrediti smjer obrtanja točka. Kanal A se priključuje na jedan interrupt, a kanal B na jedan

digitalni port 14 do 16 [3].

Raspored portova enkodera 0:

Kanal A na interrupt 0

Kanal B na digitalni port 16

Raspored portova enkodera 1:

Kanal A na interrupt 1

Kanal B na digitalni port 15

Raspored portova enkodera 2:

Kanal A na interrupt 2

Kanal B na digitalni port 14

void encoderInit(void); - Inicijalizacija enkodera.

u32 encoderGetPosition(int port) - Vraća poziciju enkodera na portu port.

SPI Interfejs

SPI Interfejs je komunikacioni bus, preko kojeg se mogu priključiti dodatni kontroleri

ili dodatna periferija na KRmega platformu. Biblioteka stavlja sljedeće funkcije na

raspolaganje: [3]

void spiInit(void); - Inicijalizacija interfejsa.

void spiSendByte(u08 data); - Slanje jednog bajta (8 Bit). Ova funkcija čeka da se

oslobodi bus, i zatim šalje jedan bajt. Pri tome se ništa ne prima.

u08 spiTransferByte(u08 data); - Razmjena podataka sa jednim bajtom (8 Bit). Ova

funkcija šalje jedan bajt kad se oslobodi bus, a zatim prima jedan bajt sa busa.

u16 spiTransferWord(u16 data); - Razmjena podataka sa jednim Wordom(16 Bit).

Ova funkcija šalje jedan word kad se oslobodi bus, a zatim prima jedan word sa busa.

Ostalo

void timerPause(int msec); - Ova funkcija čeka u milisekundama [3].

Page 41: Edin Mešanović

41

6. Senzori i logička kola

6.1. Senzor prisutnosti

Osnovni element za izradu senzora prisutnosti je fotootpornik. Njegov otpor se mijenja

pod uticajem svjetlosti koja pada na njega. Kod fotoprovodnih elemenata se vrši apsorpcija

fotona svjetlosti u poluprovodniku što povećava koncentraciju njegovih slobodnih

nosilaca i mijenja električnu provodnost. Ako se na fotokondukti-van elemenat priključi

napon, onda se kroz njega uspostavlja struja, čija jačina zavisi od intenziteta svjetlosti. Na

tom principu je zasnovan rad fotootpornika. Konstrukcija fotootpornika i princip rada

prikazan je na slici 6.1.

Slika 6.1 Konstrukcija i princip rada fotootpornika

Na keramičkoj pločici je postavljen tanak sloj poluprovodnika jednog tipa, na primjer

N, na čijim su krajevima vezane metalne elektrode kao spoljni izvodi. Kućište ima stakleni

prozor ili sočivo za prolazak svjetlosti do poluprovodnika. Otpornost fotootpornika je

najveća u mraku, i u kolu na slici 3.1 teče malu struja. Ako se osvijetli svjetlošću čija

talasna dužina daje energiju fotona veću od energetskog procjepa poluprovodnika, broj

slobodnih nosilaca elektriciteta se povećava, tako da otpornost poluprovodnika opada.

Vanjski izvor (baterija) jednosmjernog napona uzrokuje elektrostatičko polje u

fotootporniku, tako da sile tog polja spriječavaju ponovnu rekombinaciju elektrona i

šupljina. Elektroni odlaze ka pozitivnom polu izvora a šupljine prema negativnom polu

izvora, što dovodi do porasta struje u vanjskom kolu. To znači da se usljed djelovanja

svjetlosti jedan njen dio pretvorio u električni signal.

Otpornost fotootpomika zavisi i od temperature jer njen porast povećava sopstvenu

koncentraciju slobodnih nosilca. Ovaj efekat treba svesti na najmanju mjeru kod foto-

provodnih elemenata da bi se postigla zavisnost koncentracije slobodnih nosilaca elek-

triciteta samo od svjetlosti. To je moguće izvesti biranjem poluprovodnika sa većim

energetskim procjepom, a to dovodi do smanjenja sopstvene koncentracije u polu-

provodniku a time i do smanjenja značaja njene promjene sa temperaturom.

Page 42: Edin Mešanović

42

Na osnovu vrijednosti otpora fotootpornika mi možemo zaključiti da li je neko tijelo

prisutno na njemu. Raspon otpora kod fotootpornika je od 200 KOhma (mrak) do 10

KOhma (svjetlost jačine 10 luxa), a osjetljiv je na svjetlo talasnih dužina od 400 [nm]

(ljubičasto) do 600 [nm] (narandžasto). Pored fotootpornika za izradu ovog senzora

potreban nam je otpornik. Spajanje je jednostavno, fotootpornik se spaja na način da mu

jednu nožicu spojimo na analogni gnd, a drugu na otpornik. Drugu nožicu otpornika

spojimo na 5 [V]. Kako bi dobili informaciju o stanju otpora na fotootporniku, analogni pin

spajamo na čvor koji spaja fotootpornik i otpornik. Šema spajanja je prikazana na slici 6.2.

Slika 6.2 Šema spajanja senzora

6.2. Logička kola

6.2.1. Multiplekser

Multiplekser je sklop koji informaciju prisutnu na jednome od ulaza bira odnosno

selektira između informacija prusutnih na drugim ulazima i šalje je na jedan izlaz.

Multiplekser se zato još zove i selektor podataka. Proslijeđivanje željenog podatka sa ulaza

ka izlazu se kontroliše sa SELECT ulazom (nekada se naziva adresni ulaz). Slika 6.3

pokazuje uopšteni multiplekser.

Slika 6.3 Unutrašnja struktura multipleksera i njegova šematska oznaka

Funkcija multipleksera je ekvivalentna funkciji koju obavlja neka višepoložajna

sklopka. Upravljačkim ili selektirajućim ulazima S0 do Sn-1 bira se jedan od ulaza Di i šalje

Page 43: Edin Mešanović

43

na izlaz Y. Postoje mnogi integrisani multiplekseri sa različitim brojem ulaza za podatke i

ulaza za selektovanje. Pošto je osnovni način rada isti za sve njih, posmatraćemo samo

jedan karakterističan primjer (slika 6.4). To je četveroulazni, 2-bitni multiplekser.

Slika 6.4 Multiplekser 4/1

U tabeli 6.1 prikazana je funkcijska tablica, tj. tablica kombinacija koja definiše logičku

funkciju sklopa. Ako je aktivirajući ulaz E u stanju 0, na izlazu je 0 bez obzira na stanje

ulaza. Ako je sklop aktiviran (E=1), onda se selektirajućim varijablama S1 i S0 bira jedan

od ulaza (D0 do D3) i šalje na izlaz. Za multiplekser sa n selekcionih ulaza, izlaz Y je dat sa

: Y=m0D0 + m1D1 + m2D2 + ..... + m2n

-1D2n

-1

Tabela 6.1 Funkcijska tablica multipleksera

E S1 S0 Y

0

1

1

1

1

X X

0 0

0 1

1 0

1 1

0

D1

D2

D3

D4

Kaskadiranje multipleksera

Kaskadiranje multipleksera omogućuje da sa nekoliko standardnih multipleksera

manjeg opsega od potrebnoga izgradi multiplekser sa traženim brojem ulaznih bitova. Na

slici 6.5 na taj način pomoću pet multipleksera 4/1 napravljen multiplekser 16/1. Dvije

Page 44: Edin Mešanović

44

najmanje značajne cifre S0 i S1 priključene su paralelno na upravljajuće ulaze multipleksera

prvog nivoa, a njihovim mijenjanjem od 00 do 11 iz svakog će se multipleksera izabrati

jedan od ulaza i uputiti na izlaze Y0 do Y3. Koji će od tih izlaza iz prvog nivoa biti izabran

i upućen na izlaz Y, ovisi o druga dva bita za selekciju što ih čine S2 i S3. Može se

upotrijebiti i drugi raspored selektirajućih bitova, samo što će njihovim kombinacijama biti

pridruženi ulazni podaci po nekom drugom redu [2].

Slika 6.5 Kaskadiranje multipleksera

Ostvarivanje logičkih funkcija i prenos podataka multipleksiranjem

Za ostvarivanje logičke funkcije kao sume minterma potpuno je dovoljan sklop

multipleksera. Treba samo izabrati one minterme koji čine funkciju, što će se učiniti tako

da se odgovarajući ulaz D postavi na stanje 1. Mintermi koji ne sudjeluju u funkciji

isključuju se tako da se na odgovarajući D-član dovede 0. Na taj se način može realizirati

bilo koja logička funkcija. Ulazne varijable dolaze pri tome na selektirajući ulaz

multipleksera. Multiplekser se za tu svrhu može i efikasnije iskoristiti ako se na ulaze D

dovodi osim 0 i 1, još jedna, dodatna ulazna varijabla. Podaci koji se istovremeno, tj.

paralelno nalaze na ulazima multipleksera mogu se serijski odaslati na izlaz ako se

selektirajući bitovi sukcesivno, npr. pod uticajem taktnog impulsa, mjenjaju od najniže do

najviše vrijednosti. Takva paralelno-serijska transformacija podataka posebno je

interesantna kad se želi izvršiti prenos na veće daljine i kada bi, stoga, veći broj prenosnih

linija bio preskup. Naravno na prijemnoj strani treba serijske podatke obično opet

pretvoriti u paralelne. To je inverzna opercija i predstavlja serijsko-paralelnu

transformaciju, a obavlja se inverznim sklopom, tj. demultiplekserom [2].

Page 45: Edin Mešanović

45

6.2.2. Registri

Registar je najjednostavnija komponenta za memorisanje koju čini skup od n flip-

flopova (n≥1). S obzirom da je svaki flip-flop u stanju da pamti jednobitnu informaciju (n-

bitni registar čini n flip-flopova) za ovakav registar kažemo da memoriše n-bitnu binarnu

informaciju. Najjednostavniji registar je registar koji sadrži samo flip-flopove bez spoljnih

kola. Tipičan registar prikazan je na slici 6.6, sastavljen od četiri bistabila, koji kod pojave

okidnog signala s pozitivnom ivicom prenosi podatake s ulaza D3, D2, D1 i D0 na izlaze Q3,

Q2, Q1, i Q0.

Slika 6.6 4-bitni registar

Registar služi za uzimanje binarnih podataka i njihovo zadržavanje (engl. sample and

hold). Kod velikog broja rješenja podatak treba da ostane zapamćen tokom perioda od

nekoliko taktnih intervala prije nego što upiše novi. Iz ovog razloga poželjno je raspolagati

dodatnim upravljačkim ulazom čije stanje određuje kada je upis u registar dozvojen, a kada

ne. Kod najvećeg broja kola ovaj upravljački signal se naziva punjenje (engl. load ) ili

dozvola (engl. enable) i on omogućava punjenje podataka u registar. Ovakav tip registra

poznat je kao registar sa paralelnim punjenjem (engl. parallel load register). Registri se

općenito izvode kao integrirani krugovi srednjeg stepena integracije.

Pomjerački registri

Registar koji je u stanju lateralno da pomjera memorisane bitove u oba smijera naziva

se pomjerački registar (engl. shift register). Logička konfiguracija pomjeračkog registra se

realizuje kao lanac kaskadno povezanih flip-flopova, pri čemu je izlaz jednog flip-flopa

povezan kao ulaz narednog flip-flopa. Binarni podatak se prenosi bit po bit sa izlaza

tekućeg bistabila na ulaz sljedećeg bistabila. Svi flip-flopovi primaju zajednički takt koji

aktivira pomjeranje sa jednog stepena prema narednom. Slika 6.7 prikazuje 4-bitni serijski

pomjerački registar za izvođenje operacije pomjeranja binarnih podataka u lijevu stranu,

izveden korištenjem D bistabila. Krajnji bistabil na desnoj strani registra prima stanje

izlaza krajnjeg bistabila na lijevoj strani registra, u ritmu takt impulsa na svom ulazu

istovremeno kada predaje bit sa svoga izlaza bistabilu D1. Slično tome, drugi bistabil s

desne strane registra prima stanje izlaza od Q0 dok sam predaje stanje svoga izlaza

bistabilu D2. Tok operacije je prikazan na vremenskom dijagramu, na slici 6.8.

Page 46: Edin Mešanović

46

Slika 6.7 Blok dijagram 4-bitnog pomjeračkog registra sa serijskim ulazom i pomjeranjem

podataka u lijevo

Slika 6.8 Vremenski dijagram 4-bitnog pomjeračkog registra sa serijskim ulazom i pomjeranjem

podataka u lijevo

Uz jednostavne izmjene u načinu povezivanja flip-flopova prethodno opisani

pomjerački registar može služiti za izvođenje operacije pomaka u desnu stranu, a uz

dodatna osnovna logička vrata može služiti za izvođenje operacija pomaka binarnih

podataka u lijevu ili u desnu stranu. Čest slučaj primjene pomjeračkog registra sa serijskim

ulazom je shodan potrebi serijsko-paralelne transformacije podataka kod razmjene

podataka između računala.

Page 47: Edin Mešanović

47

Pomjerački registar s paralelnim ulazom

Pomjerački registar s paralelnim ulazom omogućava paralelno-serijsku transformaciju

podataka. Slika 6.9 prikazuje blok dijagram 4-bitnog pomjeračkog registra s paralelnim

ulazom koji izvodi operaciju pomaka podataka u desnu stranu. Kada se upravljački signal

nalazi u stanju logičke jedinice, aktivna je operacija puni, vrijednosti na

ulazima od U0 do U3 biti će prenesena na izlaze od Q0 do Q3, u skladu sa signalom takta.

Međutim, kada se upravljački signal nalazi u stanju logičke nule, aktivna

je operacija pomjeranja, pri svakoj pojavi signala takta, izvodi se operacija pomjeranja

podataka u desnu stranu. Vrijednost sljedećeg bita najveće težine se prenosi na izlaz Q3,

vrijednost sa izlaza Q3 se prenosi na Q2, vrijednost s Q2 na Q1, a vrijednost Q1 na Q0.

Slika 6.9 4-bitni pomični registar s paralelnim ulazom i pomjeranjem podataka u desno

Najčešće operacije koje se izvode pomičnim registrima su operacije pomaka u lijevu

stranu, pomaka u desnu stranu, paralelnog ulaza i operacije zadržavanja postojećeg stanja

izlaza. Registri navedenih svojstava se nazivaju univerzalnim registrima. Primjer

univerzalnog registra predstavlja integrisani krug 74LS178.

Page 48: Edin Mešanović

48

7. Nadzor višespratnog parking prostora

7.1. Uvod

Nedovoljan broj ulaza i izlaza mikrokontrolera je jedan od glavnih problema nadzora

parking prostora. U ovom radu opisan je parking prostor koji se sastoji od dva sprata, pri

čemu svaki sprat sadrži po dvanaest parking mjesta. Na svakom parking mjestu postavljen

je senzor prisutnosti, pri čemu je potrebno svaki izlaz senzora spojiti na analogni ulaz

mikrokontrolera. Na slici 7.1 prikazana je blok šema spajanja senzora, multipleksera,

mikrokontrolera, registara i LED dioda.

Slika 7.1 Blok šema spajanja senzora, multipleksera, mikrokontrolera, registara i LED dioda

Blokovi (Blok1, Blok2, Blok3…) na slici 7.1 predstavljaju kombinaciju multipleksera

spojenog sa četiri senzora. Na selekcione ulaze multipleksera dovedeni su digitalni izlazi

mikrokontrolera, dok su izlazi iz multipleksera spojeni na anlogne ulaze mikrokontrolera.

Također digitalni izlazi mikrokontrolera spojeni su na ulaze 8-bitnih registara (Registar1,

Page 49: Edin Mešanović

49

Registar2, Registar3 i Registar4), pri čemu se koristi prvih šest ulaza registra. Izlazi iz

registara dovedeni su na D blokove (D1, D2, D3...). Svaki D blok predstavlja jedno

parking mjesto na LED panelu (prikazano sa jednom crvenom i jednom zelenom LED

diodom).

Ukupan broj senzora je veći od broja analognih ulaza mikrokontrolera, pa zbog toga

moramo koristiti analogne multipleksere. Analogni multiplekser, u zavisnosti od

kombinacije selekcionih ulaza, bira informaciju prisutnu na jednome od ulaza i šalje je na

izlaz. Na osnovu vrijednosti informacije prisutne na analognom ulazu mikrokontrolera,

mikrokontroler mora odlučiti da li je parking mjesto zauzeto ili slobodno. U ovom radu

korištena je KR-mega ploča koja sadrži LCD displej. Na displeju je moguće prikazati

ukupan broj slobodnih mjesta na svakom spratu. Pored prikaza na LCD displeju, svako

parking mjesto moguće je prikazati i na LED panelu. Zbog nedovoljnog broja izlaza

mikrokontrolera primorani smo koristiti dodatna logička kola. Svi multiplekseri su spojeni

na iste selekcione ulaze, što znači da svi multiplekseri istovremeno selektiraju sljedeći

ulaz. Prilikom selektiranja sljedećeg ulaza multipleksera prethodne ulaze je potrebno

memorisati. Memorisanje prethodnih ulaza multipleksera smo izveli primjenom registara.

Izlaze iz registara smo doveli na LED diode panela i na taj način smo prikazali stanje

svakog parking mjesto. U ovom poglavlju detaljnije ćemo objasniti način spajanja i rada

svih komponenti parkinga.

7.2. Senzori i multiplekseri

Na svako parking mjesto postavljen je po jedan senzor prisutnosti. U našem slučaju

imamo 24 senzora koja je potrebno spojiti na 6 analognih ulaza KR-mega ploče. Jedini

način spajanja svih senzora na analogne ulaze KRmega ploče je pomoću analognih

multipleksera. Postoje različite izvedbe spajanja senzora, multipleksera i analognih ulaza

KRmega ploče. Parking prostor se sastoji od dva sprata, pri čemu svaki sprat sadrži tri reda

i četiri kolone parking mjesta. Svaki red senzora parking mjesta potrebno je spojiti na

pojedinačni multiplekser. Jedan od načina je korištenje šest analognih multipleksera 4/1.

Da bih multiplekseri obavljali svoju funkciju potrebno mu je dovesti selekcione ulaze sa

digitalnih izlaza KR-mega ploče. U našem slučaju potrebna su dva selekciona ulaza i oni

se spojaju paralelno na sve multipleksere. Zbog nemogućnosti nabavke multipleksera 4/1,

korišten je 16/1 multiplekser. Da bih multiplekser 16/1 radio na isti način kao 4/1

multiplekser potrebno je na selekcione ulaze C i D dovesti logičku 0. Primjer spajanja

jednog reda senzora na multiplekser ( na slici 7.1 predstavljeno sa Blok1, Blok2,Blok3…)

prikazan je na slici 7.2.

Page 50: Edin Mešanović

50

Slika 7.2 Spajanje senzora na multiplekser (Blok1)

Prilikom dolaska automobila na parking mjesto, vrijednost otpora fototpornika se

povećava. Povećavanjem otpora dolazi do povećanja napona na fotootporniku. Taj napon

jednak je: 𝑈𝑓 =𝑈

𝑅+𝑅𝑓𝑅𝑓 , pri čemu je Rf vrijednost otpora fotootpornika, R =22 kΩ

vrijednost otpora spojenog serijski sa fotootpornikom, U = 5 V napon napajanja senzora.

Kada je parking mjesto slobodno napon Uf iznosi manje od 1V, dok prilikom zauzimanja

parking mjesta taj napon iznosi više od 4V. Napon Uf se dovodi na jedan od četiri ulaza

multipleksera. Važno je napone senzora Uf dovesti na ulaze multipleksera istim

redoslijedom kao što se senzori nalaze na parking mjestima. Za ispravan rad multipleksera

potrebno je dovesti selekcione ulaze A i B. Ti ulaze se dovode sa digitalnih izlaza KRmega

ploče. U nastavku prikazana je tabela izlaza multipleksera u zavisnosti od selekcionih

ulaza i vremenski dijagram ulaza i izlaza multipleksera.

Page 51: Edin Mešanović

51

Tabela 7.1 Prikaz izlaza multipleksera

A B izlaz

0

1

0

1

0

0

1

1

Uf1

Uf2

Uf3

Uf4

Slika 7.3 Vremenski dijagram ulaza i izlaza multipleksera

Sa vremenskog dijagrama vidimo da senzor1 i senzor4 imaju mnogo manju vrijednost

napona od senzor2 i senzor3. Kada su selekcioni ulazi AB=00 , multiplekser na izlaz šalje

vrijednost napona prvog senzora. Vrijednost tog napona je vrlo mala, pa možemo zaključiti

da je to parking mjesto slobodno. Za vrijednost selekcionih ulaza AB=10 i AB=01, na

izlazu imamo veliku vrijednost napona, što znači da su parking mjesta zauzeta. Za AB=11

parking mjesto je slobodno.

7.3. Spajanje logičkih kola na KR-mega ploču

Krmega32 ploča raspolaže sa 21 portom, pri čemu svi portovi mogu služiti kao

digitalni ulazi/izlazi. Portovi od 1 do 8, mogu služiti i kao analogni ulazi. Prije korištenja

ovih portova potrebno ih je aktivirati. Sve funkcionalnosti analognih portova se uključuju

na sljedeći način: [3]

a2dInit(); // za pristup portovima 1 – 8 kao analogni ulazi

Na analogne ulaze KR-mega ploče potrebno je dovesti izlaze iz analognih

multipleksera. U našem slučaju potrebno je dovesti izlaze iz multipleksera na prvih šest

analognih ulaza. Da bismo pristupili vrijednosti analognog ulaza moramo koristiti sljedeću

funkciju: int analog(int port); //vraća integer vrijednost porta

Page 52: Edin Mešanović

52

Kao argument se koristi broj porta i ova funkcija vraća integer vrijednost (0-255),

koja je proporcionalna naponu na portu. Ukoliko je na portu 0 V, gornja funkcija vraća 0.

Ukoliko je na portu +5 V, gornja funkcija vraća 255. U tabeli 7.2 prikazan je raspored

priključenih logičkih kola na KR-mega ploču.

Tabela 7.2 Raspored zauzimanja pinova KRmega ploče

Analogni ulazi Zauzimanje porta

1 prvi multiplekser

2 drugi multiplekser

3 treći multiplekser

4 četvrti multiplekser

5 peti multiplekser

6 šesti multiplekser

7 slobodan

8 slobodan

Digitalni ulazi/izlazi brzi Zauzimanje porta

9 prvi ulaz u registre

10 drugi ulaz u registre

11 treći ulaz u registre

12 četvrti ulaz u registre

13 peti ulaz u registre

14 šesti ulaz u registre

15 selekcioni ulaz A

16 selekcioni ulaz B

Digitalni ulazi/izlazi spori Zauzimanje porta

17 enable ulaz prvog registra

18 enable ulaz drugog registra

19 enable ulaz trećeg registra

20 enable ulaz četvrtog registra

21 slobodan

Page 53: Edin Mešanović

53

Nakon pristupa vrijednostima analognih ulaza potrebno je odrediti granicu napona

senzora između slobodnog i zauzetog mjesta. Granicu napona treba odabrati tako da nije

manja od maksimalne vrijednosti napona senzora kada je parking mjesto slobodno,

odnosno da nije veća od minmalne vrijednosti napona senzora kada je parking mjesto

zauzeto. Mi smo uzeli da ta granica iznosi 100, što odgovara naponu od 2 V. Nakon

određivanja granice potrebno je ispitati svaki senzor, odnosno uporediti napon senzora sa

granicom i zaključiti da li je parking mjesto slobodno ili zauzeto. Upoređivanje napona

senzora sa granicom vrši mikrokontroler. U nastavku prikazan je prvi dio programa

mikrokontrolera koji upoređuje senzore sa granicom.

Slika 7.4 Dio programa mikrokontrolera

U prvom dijelu programa selekcioni ulazi iznose AB=00. Analogni ulazi 1, 2 i 3

KRmega ploče predstavljaju prvu kolonu senzora prvog sprata, dok analogni ulazi 4,5 i 6

predstavljaju prvu kolonu senzora drugog sprata. Pomoću if naredbe ispitujemo svaki

analogni ulaz da li je veći od granice. Ukoliko jeste postavljamo odgovarajući izlaz na

logičku jedinicu i smanjujemo broj slobodnih mjesta. Ukoliko nije postavljamo

odgovrajući izlaz na logičku nulu. Nakon provjere prve kolone senzora, potrebno je

provjeriti i ostale kolone. Prije toga moramo zapamtiti prethodne izlaze koji su korišteni za

prikaz slobodnih i zauzetih mjesta, jer se isti izlazi koriste za ispis prilikom provjere

ostalih kolona senzora. Na slici 7.5 prikazana je matrica oznaka analognih ulaza po

kolonama.

Page 54: Edin Mešanović

54

Slika 7.5 Oznake analognih ulaza po kolonama

Vrijednosti analognih ulaza se upisuju u određenu kolonu matricu u zavisnosti od

selekcionih ulaza A i B. Setovanjem upravljačkog ulaza registra u određenim trenucima

vršimo upis podataka. Nakon upisa podataka u prvi 8-bitni registar, selekcioni ulazi se

postavljaju na vrijednost AB=10. Postupak ispitivanja analognih ulaza i upis podataka u

drugi registar se ponavlja. Isti postupak se ponavlja za vrijednosti selekcionih ulaza AB=01

i AB=11. Na slikama 7.6 i 7.7 predstavljeni su vremenski dijagrami ulaza i izlaza KRmega

ploče.

Slika 7.6 Vremenski dijagram ulaza i izlaza mikrokontrolera prvog sprata

Page 55: Edin Mešanović

55

Slika 7.7 Vremenski dijagram ulaza i izlaza mikrokontrolera drugog sprata

Za memorisanje izlaza koristili smo 8-bitne registre. Izlazi za prikaz slobodnih i

zauzetih mjesta spajaju se direktno na prvih šest ulaza registra. Primjer spajanja izlaza

KRmega ploče sa registrom prikazan je na slici 7.8.

Slika 7.8 Prikaz registra

Svi podaci za upis u registre se dovode paralelno sa izlaza KRmega ploče. Upis

podataka u registar vrši se dovođenjem logičke jedinice na upravljački ulaz. Dovođenjem

logičke nule na E1, prethodni podaci ostaju na izlazu. U praktičnom dijelu završnog rada

korišteno je četiri 8-bitna registra. Prva tri izlaza iz registara predstavljaju prvi sprat

parking prostora, dok ostala korištena tri izlaza predstavljaju drugi sprat.

Na dijagramu 7.9 vidimo da izlazi registra imaju vrijednost ulaza kada se upravljačkom

ulazu E1 dovede logička jedinica.

Page 56: Edin Mešanović

56

Slika 7.9 Vremenski dijagram ulaza i izlaza registra

7.4. Ispis i prikaz rezultata

Nakon ispitivanja svih kolona senzora i memorisanje odgovarajućih izlaza potrebno je

ispisati broj slobodnih mjesta prvog i drugog sprata na LCD displeju. Prije ispisa podataka

LCD displej mora se inicijalizirati. Inicijalizacija displeja se vrši pozivom funkcije:

void lcdInit(void);

Sa LCD-om se automatski inicijalizira i I²C-Bus, jer je LCD priključen preko I²C-Busa.

Nakon inicijalizacije potrebno je pozvati funkciju rprintfInit(lcdDataWrite) i time smo

preusmjerili izlaz rprintf rutine na LCD. Na slici 7.10 prikazan je LCD displej na kome je

ispisan broj slobodnih mjesta prvog i drugog sprata.

Slika 7.10 LCD displej

Sve izlaze iz registara potrebno je spojiti na LED panel. Na panelu svako parking

mjesto predstavljeno je pomoću jedne crvene i jedne zelene LED diode, pri čemu treba

dozvoliti da radi samo jedna dioda. Kada je parking mjesto zauzeto, napon na izlazu

registra iznosi 3 V. Za spajanje dvije LED diode na jedan izlaz registra moramo koristiti

dodatno napajanje sa KRmega ploče. Na slici 7.11 je prikazano spajanje jednog izlaza

registra sa led diodama ( na slici 7.1 predstavljeno sa blokovima D1, D2, D3...).

Page 57: Edin Mešanović

57

Slika 7.11 Šema spajanja izlaza registra sa LED diodama

Dovedeni napon KR-mega ploče smo podijelili pomoću otpornog djelitelja napona na

vrijednosti od 3 V i 2 V . To smo postigli spajanjem napona ploče sa serijskom vezom dva

otpornika. Odnos između ta dva otpornika mora biti R2/R1 =1,5. Napon sa otpornika R2

potrebno je dovesti na svaki par LED dioda kao što je prikazano na slici 7.12 . Napon

između tačke 1 i 3 iznosi: U13 =𝑉1

𝑅1+𝑅2𝑅2 .

Kada je izlaz registra jednak nuli ( parking mjesto slobodno), napon između tačke 1 i 2

bit će jednak U12=3V. Tada je zelena LED dioda direktno polarizovana, dok je crvena

dioda inverzno polarizovana. U slučaju kada je napon na izlazu registra jednak 3 V (

parking mjesto zauzeto), napon između tačke 2 i 3 bit će jednak U23=3V. Tada je zelena

LED dioda inverzno polarizovana, dok je crvena direktno polarizovana. Na slici 7.12

prikazan je konačan izgleda panela.

Slika 7.12 Prikaz panela

Page 58: Edin Mešanović

58

Zaključak

Mikrokontroleri, kao dijelovi elektronskih uređaja i sistema doživljavaju ekspanziju i

pojavljuju se u gotovo svim oblastima i djelatnostima. Od dječijih igračaka i ukrašavanja

izloga u najzabačenijim dijelovima svijeta, preko industrije do upravljačkih mehanizama

aviona i svemirskih brodova. Mikrokontroleri se mogu proučavati iz više uglova:

tehnološkog, računarskog i korisničkog. Prva dva stanovišta su od interesa za inženjere

mikroelektronike, te za projektante hardvera, dok je za stručnjake, koji rade u području

upravljanja sistemima i gradnje ugrađenih sistema, mikrokontroler interesantan sa

korisničkog stanovišta kao komponenta ili procesor informacija koji treba da bude u stanju

obaviti odgovarajuće funkcije u nekom sistemu.

Atmel-ova porodica mikrokontrolera AVR izazvala je malu revoluciju svojom

pristupačnom cijenom, visokim performansama naspram konkurencije i moćnom

bibliotekom za C jezik, koja programeru omogućava izradu kompleksnih aplikacija u

kratkom vremenskom roku poznavajući samo C programski jezik osnove mikrokontrolera.

Primjer primjene ugrađene real-time strukture je automatizacija višespratnog parking

prostora, koja je prikazana u sklopu ovog završnog rada. U praktičnom dijelu završnog

rada koristili smo KRmega32 ploču koja sadrži LCD displej. LCD displej nam prikazuje

informaciju o ukupnom broju slobodnih mjesta parkinga na svakom spratu. Na svako

parking mjesto postavljen je po jedan senzor i na osnovu njega zaključujemo da li je

parking mjesto slobodno. Problem nedovoljnog broja ulaza i izlaza KRmega ploče riješili

smo korištenjem multipleksera i registara. Pored LCD displeja, informaciju o slobodnim

mjestima prikazuje nam LED panel. Na panelu nalazi se za svako parking mjesto po jedna

crvena i zelena LED diode.

Ovo rješenje omogućava povećanje efikasnosti korištenja raspoloživih parking

prostora, a smanjuje probleme i troškove koji se pojavljuju u klasičnim neautomatizovanim

pristupima korištenja parkinga. Opisani postupak praktične realizacije daje relativno

jednostavno i jeftino, a uglavnom univerzalno rješenje.

Page 59: Edin Mešanović

59

Literatura

1. Dr.Sc.Lejla Banjanović - Mehmedović: “Sistemi u realnom vremenu”, Predavanja,

Univerzitet u Tuzli, Fakultet Elektrotehnike, Tuzla, 2009

2. Prof.dr. Uroš Peruško: “Digitalna elektronika”, Školska knjiga, Fakultet

elektrotehnike i računarstva u Zagrebu, 1996.

3. Produktinformation, KR-mega32-16 V2.3, KR Robotics

4. Atmel ATMega32 Product Informations, http://www.atmel.com

5. Senad Huseinbegovic,dipl.ing.el.: “Mikrokontroleri”, Predavanja, Univerzitet u

Sarajevu, Elektrotehnički fakultet Sarajevo

6. S.S. Ge, F.L. Lewis: „Autonomous Mobile Robots, Sensing, Control, Decision

Making, Applications“, 2006.

7. Ana Balević, Gvozden Marinković, “Atmel AVR mikrokontroleri”, Predavanja,

Univerzitet u Beogradu, Elektrotehnički fakultet Beograd

8. Milan Verie: “Pic mikrokontroleri”, Mikroelektronika, Beograd, 2008

9. Nayab Suhail Hamirani, Imdad Ali Ismaili, Asad Ali Shaikh, Faheem Ahmed,

Azhar Ali ShahPassword Based Rotational Multistory Car Parking System, Journal

of Emerging Trends in Computing and Information Sciences, VOL. 2, NO. 12,

December 2011

10. Richard Arnott, John Rowse: Downtown parking in auto city, Regional

Science and Urban Economics, Volume 39, Issue 1, January 2009.

11. Darmin Blažević: Navigacija mobilnog robota KRmega 32-16 V2.3 baziranog na

ATMEGA32 mikrokontroleru, diplomski rad, Fakultet elektrotehnike Univerzitet u

Tuzli, 2010.

12. J. K. Peckol: „ Embedded Systems, A Contemporary Design Tool“, J. Wiley &

Sons Inc., 2007.

Page 60: Edin Mešanović

60

Dodatak

Izvorni kod mikrokontrolera:

#include "kr-mega32v25.h"

#define GRANICA 100

int main(void)

//Inicijalizacija portova 1-8 za analogni pristup

a2dInit();

//Inicijalizacija portova 17 – 21

i2cInit();

//Inicijalizacija LCD displeja

lcdInit();

while (1)

//Ukupan broj slobodnih parking mjesta

int prvi_sprat=12;

int drugi_sprat=12;

int i;

//onemugućen upis u registre

clearDigitalOut(17);

clearDigitalOut(18);

clearDigitalOut(19);

clearDigitalOut(20);

// selekcioni ulaz A

clearDigitalOut(15);

// selekcioni ulaz B

clearDigitalOut(16);

Page 61: Edin Mešanović

61

for (i=1;i<=6;i++)

int j=i+8;

// prvojera prvih analognih ulaza na muxevima

if((analog(i)> GRANICA)&&(i < 4))

// postavljanje izlaza prvog sprata na 1 (zauzeto)

setDigitalOut(j);

prvi_sprat--;

else if((analog(i)> GRANICA)&&(i >= 4))

// postavljanje izlaza drugog sprata na 1 (zauzeto)

setDigitalOut(j);

drugi_sprat--;

else

clearDigitalOut(j);

// dozvoljen upis podataka na prvi registar

setDigitalOut(17);

clearDigitalOut(17);

// selekcioni ulazi

clearDigitalOut(15);

setDigitalOut(16);

for (i=1;i<=6;i++)

int j=i+8;

// prvojera drugih analognih ulaza na muxevima

if((analog(i)> GRANICA)&&(i < 4))

Page 62: Edin Mešanović

62

// postavljanje izlaza prvog sprata na 1 (zauzeto)

setDigitalOut(j);

prvi_sprat--;

else if((analog(i)> GRANICA)&&(i >= 4))

// postavljanje izlaza drugog sprata na 1 (zauzeto)

setDigitalOut(j);

drugi_sprat--;

else

clearDigitalOut(j);

// dozvoljen upis podataka na drugom registru

setDigitalOut(18);

clearDigitalOut(18);

// selekcioni ulazi

setDigitalOut(15);

clearDigitalOut(16);

for (i=1;i<=6;i++)

int j=i+8;

// prvojera trećih analognih ulaza na muxu

if((analog(i)> GRANICA)&&(i < 4))

// postavljanje izlaza prvog sprata na 1 (zauzeto)

setDigitalOut(j);

prvi_sprat--;

else if((analog(i)> GRANICA)&&(i >= 4))

Page 63: Edin Mešanović

63

// postavljanje izlaza drugog sprata na 1 (zauzeto)

setDigitalOut(j);

drugi_sprat--;

else

clearDigitalOut(j);

// dozvoljen upis podataka na trećem registru

setDigitalOut(19);

clearDigitalOut(19);

// selekcioni ulazi

setDigitalOut(15);

setDigitalOut(16);

for (i=1;i<=6;i++)

int j=i+8;

// prvojera četvrtih analognih ulaza na muxu

if((analog(i)> GRANICA)&&(i < 4))

// postavljanje izlaza prvog sprata na 1 (zauzeto)

setDigitalOut(j);

prvi_sprat--;

else if((analog(i)> GRANICA)&&(i >= 4))

// postavljanje izlaza drugog sprata na 1 (zauzeto)

setDigitalOut(j);

drugi_sprat--;

else

clearDigitalOut(j);

Page 64: Edin Mešanović

64

// dozvoljen upis podataka na četvrtom registru

setDigitalOut(20);

clearDigitalOut(20);

lcdHome();

//Preusmjeravanje ispisa na LCD displej

rprintfInit(lcdDataWrite);

rprintf("PRVI SPRAT: %d",prvi_sprat);

lcdGotoXY( 0, 1);

rprintf("DRUGI SPRAT: %d",drugi_sprat);

return 0;