You are on page 1of 63

Elektronski Fakultet Niš

Seminarski rad:
Master-slave komunikacija realizovana korišćenjem
RS485 interfejsa

Niš, April 2008. Sanja Tomić 11338


Stevan Marinković 11197

1
Sadržaj
1. Uvod
2. Teorijska postavka
2.1 Šta su mikrokontroleri?
2.2 Mikrokontroleri: tipovi arhitektura i blok šema
2.3 Mikrokontroleri u odnosu na mikroprocesore
2.4 Struktura mikroprocesora
2.5 Struktura mikrokontrolera
2.6 Razlike između mikroprocesora i mikrokontrolera
2.7 Prenos podataka
2.8 Paralelni i serijski prenos
2.9 Asinhroni prenos podataka
2.10 Sinhroni prenos podataka
2.11 RS- 485
2.12 Provera tačnosti - Čeksuma
2.13 Čeksuma: karakter provere
2.13.1 Čeksuma: jednostruka preciznost
2.13.2 Čeksuma duple preciznosti
2.13.3 Honeywell čeksuma
2.13.4 Čeksuma ostatak
3. Opis sistema
3.1 Blok šema sistema
3.2 Princip rada
3.2.1 Slanje podataka jednom uređaju
3.2.2 Slanje podataka svim uređajima – Broadcast
3.3 Električna šema jednog bloka
3.4 Formati poruka
3.5 Napajanje
4. Software
4.1 Funkcije za čekanje:
4.1.1 wait 1 ms – WAIT1
4.1.2 wait 10 ms – WAIT10
4.2 Funkcije za konverziju podataka:
4.2.1 ascii u hex – ATOHEX
4.2.2 hex u ascii – HEXTOA
4.3 Funkcije za upravljanje displejom
4.3.1 inicijalizacija displeja – DISPINI
4.3.2 pošalji komandu – DCOMW
4.3.3 pošalji karakter – DDATAW
4.3.4 pošalji niz karaktera – DSTRW
4.3.5 ispitavanje da li je slobodan displej – WTBUSY
4.3.6 kreiranje simbola – CHAR_SET
4.4 Funkcije za slanje i primanje podataka:
4.4.1 inicijalizacija serijskog porta – SERINI
4.4.2 primi podatke – GETDATA
4.4.3 pošalji podatke – INITTI
4.5 Funkcije za generisanje nasumičnih vrednosti
4.5.1 random init – RANDOM_INIT
4.5.2 random - RANDOM

2
4.6 Master
4.6.1 definisanje parametara i mesta u memoriji
4.6.2 inicijalizaciona sekvenca – INIT
4.6.3 Glavna petlja – MAIN
4.6.4 Obada tastera ENTER - OBR_ENT
4.6.5 Obrada tastera SELECT - OBR_SEL
4.7 Slave
4.7.1 definisanje parametara i mesta u memoriji
4.7.2 inicijalizaciona sekvenca – INIT
4.7.3 Glavna petlja – MAIN
5. Programiranje mikrokontrolera
6. Laboratorijska vežba
6.1 Uputstvo za setovanje
6.2 Slanje podataka i primanje odgovora
6.3 Slanje podataka i ne primanje odgovora
6.4 Broadcast
7. Zaključak
8. Literatura
9. Dodatak

3
1 Uvod
Nagli razvoj elektronike je omogućio njenu primenu u svakodnevnom životu. Nije
moguće zamisliti ni jedan trenutak života bez “mnoštva” izuma. Računari, kao primer
pružaju pomoć u smislu informisanosti, mobilnosti, rešavanja matematičkih
problema, projektovanja elektronskih kola, nadzora, kontrole procesa, obrade signala.
Računari na čipu – mikrokontroleri se odlikuju kompaktnošću. Pomoću
mikrokontrolera, možemo da utičemo, po sopstvenoj zamisli, na ono na šta želimo.
Precizno upravljanje elektro motora, elektronskih kola, kontrola raznih displeja,
rasvete. Mogućnosti su velike.
Ovim projektom je pokazan način komunikacije među kontrolerima. Korišćenjem
RS485 interfejsa ostvarena je master-slave komunikacija između 3 uređaja na
zajedničkoj magistrali.

4
2 Teorijska postavka
Najvažniji faktor koji je imao dominantni uticaj na masovno korišćenje računara u
industriji predstavlja razvoj mikroprocesora. Mikroprocesor je u suštini računar na čipu.
Da bi obavili koristan zadatak, sistemi zasnovani na mikroprocesorima prve generacije
zahtevali su ugradnju velikog broja dodatnih komponenata (oscilatore, adresne lečeve, lečeve
za podatke i druga LSI kola relativno male složenosti). Kasnije, napredak na polju VLSI
tehnologije doveo je do proizvodnje mikroračunarskih sistema kod kojih su sva neophodna
kola bila ugrađena (embedded) u relativno mali broj pratećih integrisanih kola (tipično su to
bili integrisane CPU jedinice relativno velike složenosti, kontroleri prekida, DMA kontroleri,
tajmeri, UART-i, programibilni paralelni periferni interfejsi (PIA), i dr.). Kao plod dalje
integracije nastaju jedno-čipni mikrokontroleri koji u sebi imaju ugrađeno analogni i digitalni
ulazno-izlazni podsistem, tajmere i brojače, LCD drajvere i druge logike.Time su ova kola,
takoreči bez dodatnog hardvera, sada bila u stanju da obavljaju relativno složene upravljačke
funkcije koje se odnose na rad sistema u realnom vremenu. Primeri ovakvih tipova
mikrokontrolera su Intel 8051 i 8096, Motorola MCH 68HC11, Microchip PIC 18F1x20, i dr.
Ovi čipovi su pre svega razvijeni za potrebe automobilske industrije, procesne industrije,
elektromedicine, telekomunikacija, robe široke potrošnje, i td.
Mikrokontrolere delimo na 4-, 8-, 16-, i 32-bitne. Ilustracije radi, 4-bitni mikrokontroleri
uglavnom se koriste u automatima za igru, 8-bitni kao programatori u veš mašinama, 16-bitne
srećemo u sistemima za upravljanje klimom u kolima, a 32-bitni se primenjuju da obave
složene telekomunikacione funkcije u mobilnim bežičnim uređajima.
Osnovne karakteristika mikrokontrolera su:
usađeni (built-in) ROM- najčešće kapaciteta 4 kB na samom čipu u kome se čuva
upravljački program,
usađeni RAM- najčešće kapaciteta 128 B, koji se koristi za čuvanje privremeno
promenljivih,
CPU koji je, zbog efikasnijeg korišćenja ograničene programske memorije, u stanju da
izvršava instrukcije koje manipulišu sa jediničnim bitovima,
veliki broj mikrokontrolera ima usađeno koprocesor Boole-ovog tipa. Ovaj koprocesor
zajedno sa CPU-om ima mogućnost da pojednostavljeno implementira Boole-ove izraze koji
se veoma često javljaju u upravljačkim aplikacijama,
mikrokontroleri imaju usađene ulazno-izlazne portove koji se koriste za efikasno
upravljanje, kao i jednostavnu i laku interakciju sa spoljnim uređajima.

U daljem tekstu ukazaćemo na osnovne karakteristike mikrokontrolera bez ulaženja u


detalje koji se odnose na specifičnosti njihovih realizacija.

5
2.1 Šta su mikrokontroleri?
Svi današnji računari su realizovani od istih gradivnih blokova. To su centralni procesor ili
CPU, memorijski podsistem, ulazno-izlazni podsistem, generatora taktne pobude, i sistemska
magistrala koja međusobno povezuje pomenute gradivne blokove. Sistemska magistrala se
sastoji od adresne magistrale, magistrale podataka, i upravljačke magistrale.
Najveći broj standardnih računara, kakav je na primer PC mašina, se smešta u jedistveno
kučište. Periferije kakvi su štampač, displej, skener, tastatura, miš, i druge se povezuju na
računarski sistem preko konektora koji su montirani na kučištu. Druge sistemske komponente
kakvi su diskovi, memorije proširenja, mrežne kartice i dr., su locirane u samom kučištu ili
pak na osnovnoj ploči (motherboard) računara.
Mikroprocesor je integrisano kolo ili čip lociran na osnovnoj ploči koje u suštini
predstavlja CPU računarskog sistema. Uglavnom svet PC mašina je taj koji je bio glavni
pokretač razvoja sistema baziranih na mikroprocesorima. Imajući u vidu ovakve zahteve za
mikroprocesore kažemo da su u novije vreme postali relativno specijalozovane komponente,
posebno pogodne (prilagođene) za veoma brzo manipulisanje podacima.
No kod određenih aplikacija veoma često je neophodno ugraditi određeni iznos lokalnog
procesiranja na licu mesta procesa. Tako na primer, automat za izdavanje karata na
autobuskim stanicama treba da ima određeni nivo autonomnosti u radu (pameti) tako da za
unete podatke preko lokalne tastature sam izračuna cenu karte i izda je. Zbog ovakvog načina
rada računarske mašine opšte namene ne predstavljaju dobro rešenje (izbor) za ovakav tip
aplikacije, prvenstveno zbog velikog gabarita (dimenzije) mašine, a takođe i zbog visoke
cene. Upravo su ovo idealne aplikacije za mikrokontrolere. Nasuprot mikroprocesorima,
mikrokontroleri su više orijentisani ka postizanju superiornijih performansi kod aplikacija
namemjenih upravljanju, bezbednosti i pouzdanosti u radu. Imajući u vidu da je cena uređaja
baziranih na mikrokontrolerima od izuzetne važnosti za krajnjeg korisnika, mikrokontroleri
su integrisali na čipu veliki broj standardnih periferala, kontrolere raznih tipova uređaja, kao i
memoriju. Na osnovu prethodnog mogli bi da kažemo sledeće: Mikrokontroler je računar
na čipu. On sadrži skoro sve osnovne gradivne blokove računarskog sistema (CPU, ROM,
RAM, U/I periferije tipa AD i DA konvertore, serijske komunikacione interfejse (UART),
paralelne interfejs portove (PIA), tajmere/brojače, LCD drajvere, i dr.) koje se mogu
integrisati na jedinstvenom čipu. Danas su mikrokontroleri najviše prodavan tip procesora.
Ne bez razloga projektanti sistema relativno male složenosti kažu da su to čipovi upravo
projektovani po njihovoj meri, tj. čipove o kojima sanjaju.
Nasuprot mikroprocesorima, cena mikrokontrolera je veoma niska (do nekoliko dolara u
odnosu na cenu od stotinu dolara kakva je cena mikroprocesora). Za određene aplikacije
niska cena mikrokontrolera je idealno rešenje.
Taktna frekvencija na kojoj rade, obim adresibilne memorije, i obim podataka sa kojima
manipulišu varira od jednog mikrokontrolera do drugog, šta više i kod jednog istog
proizvođača, tako da je posao projektanta da izabere najbolji mikrokontroler za datu
aplikaciju.
Drugi važan razlog korišćenja mikrokontrolera, u odnosu na PC mašinu, predstavlja
njegova kompaktnost koja se može iskazati konstatacijom: Računar na jednom čipu. Svi
mikrokontroleri imaju usađenu memoriju na čipu kao i veći broj ulazno-izlaznih interfejs
linija. Veliki broj mikrokontrolera poseduje AD i DA konvertore, impulsno-širinski
modulisane (PWM) generatore, sofisticirani sistem prekida, veći broj seriskih i paralelnih
ulazno-izlaznih portova, fleksibilni sistem tajmer-brojač događaja, LCD drajver, i dr.
Mikrokontroleri se danas koriste u embedded sistemima za upravljanje raznim funkcijama
koje sistem treba da obavi. Na primer, u današnjim automobilima ugrađuje se veliki broj
(reda 100) mikrokontrolera koji se koriste za upravljanje radom kočionog sistema,

6
ubrizgavanjem goriva, klima sistemom za grejanje-hlađenje, prikazom informacije na
pokaznoj tabli, i td. Drugim rečima, jedno-čipni računar omogućava projektantima da ugrade
računar u bilo kom uređaju koji postavlja makar i minimalne zahteve za određenim iznosom
izračunavanja.
Mikrokontroleri se veoma često koriste i u situacijama kada treba da se veoma brzo
reaguje na spoljne signale- posebno ako se takvi sistemi koriste za rad u realnom vremenu- pa
zbog toga koriste procesiranje bazirano na obradu prekida. Mikrokontroleri mogu takođe da
rade po nadzorom operativnih sistema za rad u realnom vremenu (RTOS) čiji je obim manji,
pri čemu ovakvi sistemi bolje reaguju (za kraće vreme) na odzive sistema koji se odnose na
rad u realnom vremenu, nego što je to slučaj sa operativnim sistemima opšte namene koji se
instaliraju na večim mašinama kakve su recimo PC mašine.

2.2 Mikrokontroleri: tipovi arhitektura i blok šema


Arhitekture mikrokontrolera se mogu podeliti na sledeća dva tipa:

1. Harvard tip- karakteriše se razdvojenim memorijama za program i podatke. Svaki tip


memorije ima svoj sopstveni fizički adresni prostor i koristi sopstvenu internu adresnu
magistralu. Prednost ove arhitekture je ta što se pristup programskoj memoriji i
memoriji za podatke ostvaruje konkurentno. Obvakvim pristupom se skraćuje ukupno
vreme izvršenja programa. Proizvođači mikrokontrolera Microchip, Zilog, National
Semiconductor i Cypress zasnivaju svoje proizvode na Harvard arhitekturi, mada
postoje neke neznatne ali važne razlike u pristupima kako ove kompanije
implementiraju arhitekturu. Arhitekture ovih mikrokontrolera su tipične za RISC
pristup.
2. Princeton tip (tzv. von Neumann)- programska memorija i memorija za podatke dele
isti adresni prostor. To znači da se instrukcioni kôd može izvršavati kako iz
programske tako i iz memorije za podatke. Poznati proizvođači ovih tipova
mikrokontrolera su Intel, Atmel, Motorola i dr. Ključna osobina ovih proizvoda je
povećan broj instrukcija i adresnih načina rada koji u kombinaciji sa relokatibilnim
softverskim magacinom (stack) omogućavaju efikasno korišćenje programskog jezika
visokog nivoa C. Arhitekture ovih mikrokontrolera su tipične za CISC pristup.

Mikrokontroleri i digitalni signal procesori (DSP) su poznati tipovi aplikaciono


integrisanih procesora (ASIP). U suštini mikrokontroler je mikroprocesor koji je optimiziran
za embedded upravljačke aplikacije. Kod ovakvih aplikacija se obično nadgledaju
(monitorišu) i postavljaju brojni jedno-bitni upravljački (control) signali, a pri tome se ne
obavlja neko intenzivno izračunavanje nad podacima. Zbog ovoga mikrokontroleri imaju
jednostavne staze podataka (datapaths) koje su prilagođene za brzo izvršenje operacija na
nivou-bita (bit manipulation) kao i operacija čitanja i upis sadržaja bitova sa spoljnih pinova
čipa.
Pored jednostavne CPU, na istom čipu, mikrokontroleri imaju inkorporirano nekoliko
periferalnih komponenata tipične za upravljačke aplikacije, kakve su serijske komunikacione
periferije, tajmere/brojače događaja, PWM generatore, AD i DA konvertore, i dr. Pored
ostalog programska memorija i memorija za podatke su takođe inkorporirane na samom
čipu.
Inkorporiranjem periferala i memorije na istom integrisanom kolu smanjuje se broj
dodatnih integrisanih kola koje treba ugraditi u sistem, što rezultira kompaktijoj
implementaciji i globalno posmatrano smanjenoj potrošnji, tj rešenje postaje tipa low-power.

7
Činjenica da se programskim putem može direktno pristupati spoljnim pinovima čipa
omogućava da program može lako da monitoriše stanje senzora, postavlja u definisano stanje
aktuatore, i vrši prenos podataka ka/iz drugih uređaja.
Veliki broj proizvođača naziva mikrokontrolere embedded procesore. Razlika između
embedded procesora i mikrokontrolera često nije jasna, mada se u stručnoj literaturi termin
embedded procesor najčešće koristi za veće (32-bitne) procesore, a termin mikrokontroler za
manje (4-, 8-, i 16-bitne) procesore.
Opšti blok dijagram mikrokontrolera je prikazan na slici 1.

slika 1. Blok dijagram mikrokontrolera

2.3 Mikrokontroleri u odnosu na mikroprocesore


Da bi ukazali na to kakva razlika postoji između mikroprocesora i mikrokontrolera
analiziraćemo sliku 2 koja predstavlja jedan detaljan blok dijagram mikroracunarskog
sistema.
Dok je mikroprocesor (CPU) integrisana komponenta na jedinstvenom čipu, sam
mikrokontroler,na jedinstvenom cipu ima integrisano CPU, RAM i ROM memoriju i ostale
ulazno-izlazno orijentisane gradivne blokove (paralelni i serijski interfejsi, tajmeri, logika za
prihvatanje prekida, A/D i D/A konvertore i dr.).

8
slika 2. Detaljni blok dijagram mikroračunarskog sistema

2.4 Struktura mikroprocesora


Na slici 3 prikazan je blok dijagram mikroprocesora.CPU čine sledeći blokovi:ALU, PC,
SP, određeni broj radnih registara, kola za taktovanje i sinhronizaciju i kola koja se koriste za
prihvatanje zahteva za prekid.

ALU

Akumulator
Radni registri

PC SP

kola za
kola za taktovanje
prihvatanje
i sinhronizaciju
prekida

slika 3. Blok dijagram mikroprocesora(CPU-a)

9
Da bi se kompletirao mikroračunarski sistem pored mikroprocesora potrebno je dodati
ROM, RAM memorijske dekodere, oscilator, određeni broj ulazno-izlaznih uređaja kakvi su
paralelni i serijski portovi za podatke, A/D i D/A konvertore i drugo. Pored ulazno-izlaznih
uređaja specijalne namene, često se javlja i potreba da se ugrade i kontroleri prekida, DMA
kontroleri, kao i brojaci/tajmeri čiji je zadatak da oslobode CPU-a od obavljanja U/I
aktivnosti. Kada se u sistem instaliraju i uređaji za masovno memorisanje (hard disk, CD
drajver), kao i tastatura, mis i CRT displej, tada se taj ''mali racunar'' moze koristiti za
razlicite aplikacije opste namene.
Osnovna namena CPU-a je da pribavlja podatke, obavlja izračunavanja nad podacima i
memorise rezultate izračunavanja na disku, kao i da za potrebe korisnika prikaže te rezultate
na displeju (CRT, TFT, LED i dr.). Programi koje koristi mikroprocesor memorisani su na
disku odakle se čitaju i smeštaju u RAM. Deo programa, najčešće malog obima, se obično
smešta i u ROM-u.

2.5 Struktura mikrokontrolera


Blok dijagram mikrokontrolera prikazan je na slici 4. Mikrokontroler je u suštini pravi
''mali računar'' na čipu, koji sadrzi sve gradivne blokove CPU-a (ALU, PC, SP, registre i dr.),
ali takođe i RAM, ROM, paralelne i serijske U/I portove, generatore takta i dr.
Kao i mikroprocesor, i mikrokontroler je uređaj opšte namene, koji pribavlja podatke,
obavlja ograničenu obradu nad tim podacima, i upravlja svojim okruženjem na osnovu
rezultata izračunavanja. Mikrokontroler u toku svog rada koristi fiksni program koji je
smešten u ROM-u i koji se ne menja u toku životnog veka sistema.

slika 4. Blok dijagram mikrokontrolera

10
Mikrokontroler koristi ograničen skup jedno- ili dvo-bajtnih instrukcija koje se koriste za
pribavljanje programa i podataka iz interne memorije. Veliki broj ulazno-izlaznih pinova
mikrokontrolera se može koristiti za više namena, što se softverski definiše.
Mikrokontroler komunicira sa spoljnim svetom (pribavlja i predaje podatke) preko svojih
pinova, pri čemu je arihitektura i skup instrukcija projektovan za manipulisanje sa podacima
obima bajt ili bit.

2.6 Razlike između mikroprocesora i mikrokontrolera


Razlike su brojne ali one koje su najvaznije su sledeće:
Mikroprocesori najcešće CISC tipa za kopiranje podataka iz spoljne memorije u CPU
koriste veći broj op-kôdova, dok mikrokontroleri jedan ili dva.
Za manipulisanje sa podacima tipa bit mikroprocesori koriste jedan ili dva tipa instrukcija,
dok kod mikrokontrolera taj broj je veći.
Mikroprocesori su projektovani za brzi prenos podataka iz programa sa spoljno adresiranih
lokacija u čip, dok se kod mikrokontrolera brzi prenos bitova obavlja u okviru čipa.
Mikrokontroler moze da funkcioniše kao računar bez dodataka spoljnih gradivnih blokova
(memorije i U/I uređaja), dok operativnost mikroprocesora bez spoljne memorije i U/I
podsistema nije moguća.

2.7 Prenos podataka


Bilo koji komunikacioni sistem za prenos podataka čine, u najrudimentiranijem obliku,
predajnik, prijemnik i neki oblik komunikacionog kanala. Predajnik generiše niz podataka pri
čemu je tajming svakog bita pod kontrolom taktnih impulsa.

Razlikujemo tri načina prenosa


a) simpleks (simplex)- signali se prenose (predaju) samo u jednom smeru; jedna stanica je
predajnik, a druga prijemnik.
b) polu-dupleks (half-duplex) - obe stanice mogu vršiti predaju/prijem po istom kanalu,
ali ne istovremeno, (kada je jedna predajnik druga je prijemnik i obratno).
c) potpuni dupleks (full-duplex) - obe stanice mogu istovremeno vršiti predaju koristeći
posebne kanale po jedan za svaki smer prenosa.

slika 5. Načini prenosa signala: a) simpleks; b) polu- dupleks; c) potpuni-dupleks

11
Signal koji se prenosi duž prenosnog puta funkcija je kako vremena tako i frekvencije.
Zbog toga je neophodno poznavati oba domena, frekventni i vremenski, da bi se vršilo
procesiranje signala.

2.8 Paralelni i serijski prenos


Računarski sistemi memorišu i procesiraju podatke u formi bitova koji su uredjeni kao reči
fiksnog obima. Memoriju računara čini niz lokacija pri čemu svaka ima svoju jedinstvenu
adresu.
Računarski sistemi mogu manipulisati sa rečima obima 8-, 16-, 32-, 64- bita, itd. U okviru
velikog broja gradivnih blokova računarskog sistema podaci se prenose u paralelnoj formi,
što znači da je svakom bitu u okviru reči dodeljen po jedan prenosni put. Primer paralelnog
prenosa podataka uobičajeno se sreće kod hardverskih interfejs ploča za pobudu štampača,
kao i interfejs ploča za spregu sa diskom. Kod paralelnih interfejsa, kakva je recimo sprega
računara sa štampačem, potrebno je uvesti neki vid signalizacije koji će na odredjeni način, sa
jedne strane, ukazati kada su podaci na izlazu računarskog sistema raspoloživi/validni, a sa
druge strane, kada je (da li je) štampač spreman da prihvati novi podatak. Glavni razlog
uvodjenja signalizacije predstavlja velika razlika u brzini rada uredjaja koji se medjusobno
povezuju. Konkretnije, računar može da generiše nove podatke svakih 100 n s (taktne
frekvencije kod savremenih računara su reda nekoliko stotina MHz ), dok štampač može da
štampa podatke brzinom reda 100 znakova u minuti (postoje i štampači koji mogu štampati
do 30000 znakova u minuti). Da bi se na jedan regularan način ostvarila korektna razmena
podataka izmedju uredjaja koriste se posebni signali poznati kao handshake signali.
Procedura kojom se reguliše način razmene podataka i tajming naziva se handshake
procedura.

2.9 Asinhroni prenos podataka


Sistem kod koga predajnik može u bilo kom trenutku generisati bitove kažemo da koristi
asinhroni prenos. Ključne karakteristike asinhronog prenosa su te da predajnik ne predaje
prijemniku bilo kakvu informaciju o lokalnom taktnom impulsu ili tajming bit. Zadatak
prijemnika je da interpretira dolazeće signale i da korektno interpretira svaki dolazeći bit. U
suštini asinhroni prijemnik ne regeneriše takt na osnovu dolazećeg signala. Naime, predajnik
i prijemnik koriste posebne taktne impulse čije su frekvencije veoma bliske jedna drugoj. Sa
ciljem da se odredi korektni početak rada prijema koristi se metod rada poznat kao start-stop
(vidi sliku 5).

slika 6. Start-stop operacija

12
Kada se podaci ne predaju linija se nalazi u pasivnom (idle) stanju. Podatku prethodi start-
bit koji je trajanje jednog bitskog intervala i suprotnog je polariteta u odnosu na pasivno
stanje. Nakon toga sledenekoliko bitova podataka (obično je osam). Na kraju se pridružuje
stop-bit koji je istog polariteta kao i pasivno stanje. (Trajanje pasivnog stanja može biti
proizvoljno). Stop bit se uvodi sa ciljem da se jasno razgraniči zadnji bit prenetog znaka.
Kada prijemnik detektuje prednju ivicu start-bita on aktivira generisanje prijemnog takta.
Prva pojava taktnog impulsa je tako podešena da se javi na sredini, ili oko sredine, prvog bita
podataka i koristi se za strobovanje bita u registar ili leč. Sa narednim taktnim impulsima, za
ostale bitove podataka, proces se ponavlja. U suštini, ako je taktna frekvencija prijemnika i
predajnika identična, strobovanje će se uvek javljati (dešavati) na sredini trajanja bitskog
intervala. Zbog različitih frekvencija predajnika i prijemnika ipak dolazi do "klizanja" tako
da, ako se broj bitova povećava, koincidencija taktnih impulsa i princip strobovanja podataka
na sredini bitskog intervala se narušava. Imajući ovo u vidu, a iz razloga pouzdane detekcije,
obim (trajanje) asinhronog signala ograničen je na 12 bitova (misli se na prenos jedinstvenog
karaktera (znaka) jer je se sinhronizacija kod ovog prenosa ostvaruje na nivou jednog znaka).

2.10 Sinhroni prenos podataka


Daleko efikasniji način za održavanje sinhronizacije kod komunikacione veze je onaj koji
se zasniva na sinhronom prenosu (synchronous transmission). Podaci koji se sinhrono
predaju dolaze do prijemnika kao kontinualni niz u regularnim vremenski definisanim
bitskim intervalima. Predajnik i prijemnik mora da rade sinhrono, a to se ostvaruje
korišćenjem sinhronizacionih signala na nivou takta. Predajnik generiše taktni signal koji
mora biti prenet do prijemnika bilo preko posebnog kanala ili direktno regenerisan od strane
prijemnika iz dolazećeg signala. Zbog toga, u predajnoj poruci mora biti emitovana i
informacija o sinhronizaciji. Princip regenerisanja takta kod ovog načina prenosa prikazan je
na slici 7.

slika 7. Sinhroni prijemnik

Uobičajeno podaci se predaju kao okviri, tj. ramovi (frame) fiksnog obima pri čemu svaku
informaciju na početku i kraju prate specijalni bit oblici nazvani preambule (preamble). Svrha
preambule je da ostvari sinhronizaciju predajnog i prijemnog oscilatora pre početka prijema
informacionih bitova.

13
2.11 RS- 485
RS-485 je standard koji se bavi električnim osobinama interfejsa. On propisuje
diferencijalne linijske predajnike i prijemnike za dvosmerni (poludupleks) multipoint
interfejs. Ovaj standard ne propisuje protokol, kodovanje, mehaničke osobine priključaka ni
raspored njegovih kontakata. Interfejs RS-485 je u širokoj primjeni i jedinstven je po tome
što omogućuje dvosmjernu komunikaciju većeg broja uređaja vezanih na jedan vod. Ova
osobina se zove multipoint. U svom najjednostavnijem obliku, RS-485 može da se svede na
upredenu paricu, na čijim su krajevima dva uređaja koji sadrže po jedan linijski predajnik i
prijemnik. Podaci mogu da se šalju u oba smjera, ali ne istovremeno. Dok jedan uređaj
emituje signal, drugi mora da bude u stanju prijema, kada je njegov linijski predajnik u stanju
visoke impedanse. Kao što je već rečeno RS-485 omogućuje da se ostvari komunikacija
između većeg broja uređaja, koji su povezani na jedan vod (paricu). Ovde parica ima ulogu
serijske magistrale. Pošto niz priključenih uređaja može da se posmatra kao paralelna veza
njihovih ulaznih impedansi, jasno je da postoji ograničenje ukupnog broja uređaja.
Standardom je propisano ograničenje u vidu maksimalnog broja "jediničnih opterećenja", a
taj broj je 32. Pojam "jedinično opterećenje" u praksi se najčešće svodi na jedan par linijskih
predajnika i prijemnika. U najgorem slučaju, jedinično opterećenje ima otpornost od 10,56
kΩ. Da bi neki uređaj predstavljao jedinično opterećenje on mora da se nalazi u okviru
osjenčene oblasti na dijagramu, koji je prikazan na slici 8

slika 8. Oblast u kojoj se nalazi jedinično opterećenje

S obzirom da standard TIA/EIA-485-A propisuje samo električne parametre, tačnije,


karakteristike koje linijski predajnik ima na svom izlazu i koje linijski prijemnik ima na svom
ulazu. Dakle, medijum za prenos nije propisan. Iako postoje različite vrste dvožičnih (i
višežičnih) vodova, koji bi mogli da se koriste za interfejs RS-485, obično se za tu svrhu
uzimaju upredene parice. Karakteristična impedansa ovakvog voda treba da bude od
Zc=100Ω do Zc=120Ω. Prednost upredene parice u odnosu na neupredene (ravne) kablove je
u daleko manjoj osjetljivosti na elektromagnetske smetnje iz okruženja. Komponente napona,
koje nastaju usljed indukcije u šumnoj sredini, u slučaju upredene parice imaju približno
jednake vrijednosti na oba provodnika. Zbog toga ih diferencijalni linijski prijemnik
odbacuje.
RS-485 predstavlja poboljšanu verziju standarda RS-422 i koristi se kod sistema gdje
postoji potreba za ugradnjom više od jednog predajnika. RS-485 je najviši komunikacioni

14
standard u industriji. Svi drugi standardi kao što su Modbus, Profibus, Interbus, Bitbus,
Optomux Data Highway, Mesurment Bus (DIN 66348), P-Net itd, su samo njegova
softverska nadgradnja i u rijetkim slučajevima mala hardverska iteracija (Siemens je proizveo
i patentirao programsku nadgradnju poznatu kao Profibus-Fieldbus,svjetski standard za
industriju) . Mada ova rješenja, bez sumnje, imaju svoje prednosti a i nedostatke, osnovni
RS-485 je najjeftiniji i najjednostavniji interfejs koji korisnika oslobađa plaćanja softvera i
licenci i daje mu svu softversku slobodu pa čak i pisanje sopstvenog softverskog protokola.
Povećanjem pobudne sposobnosti predajnika i ulazne impedanse prijemnika, moguće je
povezati na zajedničkoj prenosnoj vezi do 32 predajna stepena i 32 prijemnika. RS-485
omogućava da do 32 uređaja (opciono 256) komunicira u polu-dupleksu ili dupleks režimu
preko jednog ili dva para provodnika (parica), plus uzemljenje (koje nije uvjek neophodno)
na rastojanjima do 1200 metara. Dužina mreže i broj uređaja se mogu povećati korišćenjem
ripitera. Par predajnik-prijemnik uobičajeno se zove primopredajnik (transceiver). Na slici 9
prikazan je jedan tipičan polu-dupleks RS485 sistem za prenos podataka. Treba uočiti sa slike
9 da su oba kraja linije završena karakterističnom impedansom. Aktiviranje izlaza predajnog
driver-a vrši se signalom kontrola.

slika 9. Polu-dupleks RS-485

Kod diferencijalnog (balansiranog) prenosa koriste se dva provodnika za jedan prenošeni


signal, ali tako da nijedan od tih provodnika nije na potencijalu mase (nije uzemljen). Logički
nivoi signala predstavljeni su razlikom potencijala između dva provodnika, koji čine dvožični
vod, tj. paricu. Provodnik za masu/uzemljenje može da postoji, ali ne učestvuje u prenosu
signala. Diferencijalni prenos je zbog toga otporan na smetnje visokog intenziteta, koje
postoje u industrijskom okruženju. On omogućuje velike prednosti binarnog protoka i
pouzdanu komunikaciju na velikim rastojanjima. Zbog diferencijalnog prenosa, linijski
predajnik ima dva izlaza, koji se najčešće označavaju sa A i B, a linijski prijemnik ima dva
odgovarajuća ulaza. Šematski simboli linijskog predajnika i prijemnika su prikazani na slici
10 dok su signali na izlazu linijskog predajnika prikazani na slici 11, a realni oblici signala na
slici12.

15
slika 10. Linijski predajnik (D) i linijski prijemnik (R)

slika 11. Signali na izlazima A i B linijskog predajnika

slika 12. Realni oblik signala A i B sa superponiranim smetnjama na vodu (gore) i rezultujući
diferencijalni signal (dole).

16
Električne karakteristike linijskog predajnika i prijemnika prikazane su u sledećoj
tabeli:

Podaci se šalju diferencijalno preko para upredenih provodnika ("upredene


parice"). Logički nivoi se određuju naponskom razlikom između tih parica. Logička
“0” ako je naponska razlika manja od 200 mV. Logička “1” ako je naponska razlika
veća od 200 mV. Osobine diferencijalnih signala omogućavaju visok imunitet na šum
i komunikaciju na velikim rastojanjima. RS-485 mreža može biti dvožična ili
četvorožična.U dvožičnim mrežama i predajnik i prijemnik svakog uređaja su
povezani na istu upredenu paricu. Četvorožične mreže (duplex) imaju jedan glavni
(master) uređaj čiji je predajnik povezan preko jedne upredene parice na prijemnike
svih ostalih (slave) uređaja. Oni svoje predajnike preko druge upredene parice
povezuju na prijemnik glavnog uređaja. U oba slučaja je potrebno da softver dodjeli
adrese uređajima kako bi se sa svakim uređajem ostvarila zasebna komunikacija. U
RS-485 mreži samo jedan uređaj može da ima aktivan predajnik u jednom trenutku,
dok ostali predajnici u mreži moraju da budu u stanju visoke impedanse dok ne budu
u upotrebi. U drugim slučajevima RS-485 softver mora da koristi kontrolne linije da
upravlja predajnikom (ukoliko se uređaj kontroliše preko RS-232 porta ovo se radi
pomoću RTS kontrolne linije). Posledica postavljanja predajnika u stanje visoke
impedanse je kašnjenje između završetka slanja podataka i postavljanja predajnika u
visoku impedansu. Ovo je važno za dvožične mreže, jer za to vrijeme ne smije biti
slanja podataka od strane nekog drugog uređaja (što nije slučaj u četvorožičnim
mrežama). Idealna dužina kašnjenja je za veličinu jednog karaktera na trenutnoj brzini
komunikacije (npr. 1ms na 9600 baud-a).Dvožična 485 mreža pored niže cijene ima
prednost što bilo koja dva uređaja mogu da komuniciraju između sebe direktno. Loša
strana je ograničenje na polu-dupleks i zahtev za preciznim kašnjenjem prilikom
isključenja predajnika. Četvorožična mreža omogućava puni dupleks, ali je
ograničena na master – slave situaciju (npr. master zahtjeva podatke od svakog slave
uređaja posebno). Slave uređaji ne mogu da komuniciraju međusobno. Prilikom
nabavke kabla dvožična mreža može da zahtjeva trožilni kabl (dodatni provodnik za
masu), a četvorožična mreža možda petožilni kabl (4+masa). Softver za 485
kontroliše adresiranje i vodi računa o kašnjenju, a može čak i da isključi predajnik.
Treba obratiti pažnju na to da će preveliko ili premalo vrijeme kašnjenja
prouzrokovati komunikacione probleme, a da je kašnjenje zavisno od brzine prenosa,
pa je najbolje koristiti hardversku kontrolu. EIA RS-485 specifikacije označavaju
priključke za prenos podataka sa A i B, ali mnogi proizvođači ih označavaju sa + i -.
Obrnuto povezivanje neće oštetiti RS-485 uređaj, ali komunikacija neće biti
uspostavljena. Inače, povezivanje je jednostavno: uvjek se poveže A na A i B na B.
Diferencijalni signal ne zahtjeva masu za komunikaciju, ali ona često ima veoma

17
važnu svrhu. Na razdaljinama od nekoliko kilometara, može doći do razlike između
potencijala masa. RS-485 mreža komunicira sa naponima od -7V do +12V i ukoliko
je razlika potencijala veća od toga, komunikacija će biti otežana ili nemoguća, a može
doći i do oštećenja uređaja. Linija za masu omogućava da se izjednači potencijal
masa, tako što se mase oba uređaja povežu direktno provodnikom. Ukoliko je
međutim, razlika potencijala prevelika, potrebna su druga rješenja. Jedno od najboljih
je galvanska izolacija uređaja na obje strane. Posredstvom interfejsa RS-485 mogu da
se prenose podaci na rastojanju do 1200 m (4000 ft).
Binarni protok kod ovog interfejsa može da iznosi do 10 Mb/s. Pri maksimalnoj
dužini voda nije moguće postići maksimalnu vrijednost binarnog protoka, jer što je
vod duži, to je binarni protok manji. Razlog za to su izobličenja signala, koji nastaju
na vodu. U zavisnosti od usvojenog kriterijuma za potreban kvalitet signala, može da
se nacrta kriva, koja pokazuje zavisnost maksimalne dozvoljene dužine kabla od
binarnog protoka.
U većini primjena interfejsa RS-485 potrebno je da se na krajeve korišćenog voda
postave adekvatne završne impedanse. Taj postupak se zove terminacija, a za završnu
impedansu se koristi naziv terminator. Potreba za terminacijom postoji zbog toga što
prilikom prenosa podataka nastaju veoma brze promjene napona, tako da do izražaja
dolaze efekti prostiranja talasa. Na svim diskontinuitetima na vodu nastaje refleksija,
koja je utoliko izraženija ukoliko je diskontinuitet veći. Refleksija se takođe prostire
duž voda, dolazi u interakciju sa korisnim signalom, ponovo se reflektuje itd, čime
može da značajno pokvari talasni oblik korisnog signala i ugrozi njegov ispravan
prijem. Jasno je da su krajevi voda kritični, jer su to najveći diskontinuiteti. Zato na
tim krajevima treba da budu postavljene završne impedanse, čija vrijednost približno
odgovara karakterističnoj impedansi voda. Time će, u velikoj mjeri, biti spriječene
refleksije od krajeva voda. Pošto interfejs RS-485 omogućuje korišćenje većeg broja
uređaja na istom vodu, važno je znati da se terminacija vrši samo na krajevima voda,
gdje su obično priključeni krajnji uređaji. Takođe zbog efekata prostiranja talasa duž
voda, poželjno je da serijska magistrala bude praktično realizovana kao jedan vod, sa
što manjom dužinom ogranaka kojim se priključuju uređaji koji nisu krajnji. Pošto se
za interfejs RS-485 najčešće koristi vod čija je karakteristična impedansa oko 120Ω,
logično je da završna impedansa bude otpornik od 120Ω. Ovo rješenje se koristi u
praksi ali ima jedan nedostatak, a to je potrošnja energije. Linijski predajnik, koji je
priključen na vod i emituje signal, "vidi" dva ovakva otpornika u paralelnoj vezi, a
takođe i ulazne otpornosti svih linijskih prijemnika (12 kΩ). Zbog toga, u slučaju da
je na terminisani vod priključen predviđeni maksimum od 32 jedinična opterećenja,
linijski predajnik mora da obezbjedi jačinu struje od približno 60 mA. Da bi se ova
vrijednost smanjila, često se dodaje kondenzator, u rednoj vezi sa pomenutim
otpornikom od 120Ω.
Kapacitivnost ovog kondenzatora se dobija na osnovu sledeće dvije nejednakosti:

18
Gdje su: L=dužina voda
c=brzina prostiranja talasa na vodu
Zc=karakteristična impedansa voda
R=otpornost terminatora
Tb=trajanje jednog bita

Osim refleksija na vodu, koje se otklanjaju terminacijom na opisani način, kod


interfejsa RS-485 postoji i jedan specifičan problem. Pošto je način korišćenja
medijuma za prenos u ovom slučaju poludupleks, kao što je već pomenuto,
neophodno je da linijski predajnik bude u stanju visoke impedanse onda kada ne
emituje signal. Time se omogućuje linijskim predajnicima drugih uređaja na vodu da
emituju svoje signale. Međutim u periodima kada nijedan uređaj na vodu ne šalje
podatke, svi linijski predajnici su u stanju visoke impedanse (stanje off), tako da
napon na vodu ima neodređenu vrijednost. Ako je napon između dva provodnika
voda, tj. između dvije žice parice, u opsegu od –200mV do +200mV, tada je logičko
stanje na izlazu linijskog prijemnika neodređeno. Ovo je veoma nepovoljno, jer neka
smetnja na vodu tada lako može da bude primljena kao niz bita korisnog signala. Da
bi se ovo spriječilo i time povećala pouzdanost sistema, koristi se polarizacija. Ona se
ostvaruje postavljanjem dva otpornika, od kojih je jedan između provodnika A i
pozitivnog kraja napajanja (obično +5V), a drugi je između provodnika B i mase
(0V). Dejstvo polarizacije prikazano je dijagramom na slici 13.

slika 13. Dejstvo polarizacije.


Terminacija i polarizacija se najčešće realizuju kao jedinstven uređaj, koji se onda
postavlja tamo gdje se i inače postavlja terminator. Takav uređaj se svodi na serijsku
vezu tri otpornika i obično se postavlja samo na jedan kraj voda, dok je na drugom
kraju običan terminator. Pregled često korišćenih rješenja za terminaciju i polarizaciju
dat je u tabeli na slici 14. Tu je, kao četvrto, dato upravo rješenje sa serijskom vezom
tri otpornika Ra, Rb i Rc. Ra i Rc su otpornici za polarizaciju, a Rb predstavlja
završnu impedansu voda. Karakteristična impedansa vodova, koji se koriste za
interfejs RS-485, najčešće je oko 120Ω. U tom slučaju preporučljive vrijednosti
otpornika su:
Ra,Rc ≤ 750Ω otpornici za polarizaciju
Rb = 120Ω otpornik za terminaciju voda
Rd = 120Ω otpornik za terminaciju na suprotnom kraju voda

19
slika 14. Tabela vrste terminatora voda, koji se često koriste kod interfejsa RS-485 i pregled
njihovih važnijih osobina

slika 15. Pregled važnijih osobina interfejsa RS 485

U ovom projektu, korišćen je RS485 interfejs koji je poovezan tako da je ostvarena


serijska asinhrona komunikacija sa polu-dupleksom.
Komponenta koja je korišćena u konkretnom primeru je SN75176B RS485 drajver.
SN75176B je integrisano kolo koje služi za obostranu komunikaciju na multipoint
bus transmission linijama, koje je kombinacija 3-state line drajvera i diferencijalnog
pojačavača na ulazu (reciever). Napon napajanja je 5V. Drajver i reciever imaju
active-high i active-low signal dozvole, respektivno, koji mogu da budu na
zajedničkoj liniji koja tada služi kao direkciona kontrola.
Potrošnja drajvera je do 60mA. Postoji ograničenje struje u oba smera, kao i
termalni prekidač, koji isključuje drajver na temperaturi od oko 150°C. najmanja
ulazna otpornost drajvera je 12k, ulazna osetljivost od ±200 mV i tipični ulazni
histerezis od 50 mV.

slika 16. Funkcionalna Šema drajvera SN75176B

20
slika 17. Električna šema ulaza(D,DE,RE) portova (A,B) i izlaza (R)

Na slici je prikazan Half-duplex način povezivanja drajvera na magistralu. Ovaj je


i realizovan u projektu. Ulazi i izlazi su vezani na istu liniju, a enable signal je
zajednički. Kada je Enable logička jedinica, aktivni su izlazi, a kada je nula, aktivni su
ulazi drajvera.

slika 18. Način povezivanja drajvera na magistralu

2.12 Provera tačnosti - Čeksuma


Čeksuma predstavlja relativno jednostavna forma redundantne provere greške gde
se podaci u okviru poruke sabiraju kako bi se generisao karakter o proveri greške.
Čeksuma se pridružuje na kraju poruke. Prijemnik ponavlja operaciju sabiranja i
odredjuje svoji sopstveni čeksum-karakter poruke. Prijemna čeksuma se uporedjuje sa
prdruženom čeksumom poruke, i za slučaj da je jednaka, kažemo da do greške u
prenosu nije došlo. Ako se obe čeksume razlikuju, zaključuje se da se javila greška u
prenosu. Postoje pet primarna načina za izračunavanje čeksume, a to su:
„ karakter provere (check character checksum)
„ jednostruka preciznost (single precision checksum)
„ dvostruka preciznost (double precision checksum)
„ Honeywell (Honeywell checksum)
„ ostatak (residue checksum)

21
2.12.1 Čeksuma: karakter provere
Kod čeksume karakter provere, svakom karakteru se dodeljuje decimalna vrednost.
decimalne vrednosti svakog karaktera u poruci se zajedno sabiraju pa se nataj način
formira čeksum karakter. Ovaj karakter se pridružuje na kraju poruke u obliku
redundantnih bitova i predaje. Bar kôdovi kôd-39 i POSTNET koriste modifikovane
forme ček karaktera kako bi odredili čeksumu.

2.12.2 Čeksuma: jednostruka preciznost


Čeksuma tipa jednostruka preciznost predstavlja verovatno najstandardniji metod
za izračunavanje čeksume. Kod jednostruke (obične) preciznosti, čeksuma se
izračunava binarnim sabiranjem podataka u okviru poruke. No, sa n-bitnim
karakterima, ako suma podataka premaši vrednost 2n – 1, tada dolazi do prenosa
(carry out). U ovom slučaju bit prenopsa (carry bit) se ignoriše, a samo se n-bitna
čeksuma pridružuje poruci. Zbog toga, čeksuma kod sabiranja u običnoj preciznosti
predstavlja samo LS bajt aritmetičke sume binarnih podataka koji se prenose.

Primer-1

Odrediti čeksumu jednostruke preciznosti za sledeća pet ASCII kodirana karaktera:


HELLO

Odgovor

Na osnovu ASCII tabele, heksadecimalni kodovi za poruku HELLO su sledeći:

smer prenosa
H E L L O
48 45 4C 4C 4F

čeksuma predtavlja zbir heksadecimalnih karaktera

H 0100 1000
48
E 0100 0101
45
L 0100 1100
4C
L 0100 1100
4C
O 0100 1111
4F
1 1 0111 0100
74

LS bajt je 74 h
carry = 1, izbacuje se

22
LS bajt procesa sabiranja je 74 h i pridružuje se poruci koja se predaje

smer prenosa
48 45 4C 4C 4F 74
H E L L O

čeksuma

2.12.3 Čeksuma duple preciznosti


Čeksuma duple preciznodsti se izračunava na isti način kao i suma obične
preciznosti sa izuzetkom što je suma obima 2n bitova. Na primer, ako podaci čine 8-
bitni karakteri, čeksuma biće 16-bitna, čime se smanjuje verovatnoća generisanja
pogrešne čeksume. Za slučaj da se u Primer-1 koristi čeksuma duple preciznosti,
čeksuma biće oblika 0174h, koja se pridružuje poruci podataka koja se prenosi, tako
da u konkretnom slučaju imaćemo:

smer prenosa
48 45 4C 4C 4F 01 74
H E L L O
čeksuma

2.12.4 Honeywell čeksuma


Honeywell čeksuma predstavlja jedan drugi oblik čeksume dvostruke preciznosti.
Honeywell čeksuma je obima 2n bitova, ali se čeksuma formira preplitanjem
uzastopnih reči podataka sa ciljem da se dobiju reči dvostruke dužine. Reči dvostruke
dužine se sabiraju zajedno pa se formira čeksuma dvostruke preciznosti.

Primer-2

Odrediti Honeywell čksumu za sledeću ASCII kodiranu poruku od četiri karaktera:


HELP

Odgovor

Na osnovu tabele ASCII kodova za porukui HELP imaćemo

23
smer prenosa

H E L P
48 45 4C 50

čeksuma zbira grupa od po dva heksadecimalna karaktera je oblika:

4C 50
48 45
--------
94 95
16-bitna suma procesa sabiranja iznosi 94 95 h, ona se pridružuje poruci, pa se
generiše niz podataka

smer prenosa
48 45 4C 50 94 95
H E L P

čeksuma

2.12.5 Čeksuma ostatak


Čeksuma ostatak je prividno identična čeksumi jednostruke preciznosti sa
izuzetkom načina sa kojim se manipuliše sa bitom prenosa (carry bit). Kod čeksume
ostatak bit prenosa se dodaje LS bajtu sume (wrappend around and added) čime se
operacija sabiranja usložnjava. Za slučaj Primer-1, čeksuma ostatak se formira
dodavanjem 1 vrednosti 74 h, pa se dobija 75 h, tako da preneta poruka ima sledeći
oblik.

smer prenosa
48 45 4C 4C 4F 75
H E L L O

čeksuma

24
3 Opis sistema

3.1 Blok šema sistema

TASTERI

DISPLEJ MASTER LED DIODE

RS485 magistrala

SLAVE 1 SLAVE 2

LED DIODE LED DIODE

slika 19. Blok šema sistema

3.2 Princip rada

3.2.1 Slanje podataka jednom uređaju


Neka poruka bude oblika: !0100D32A@ ascii tj 21 30 31 30 30 44 33 32 40 u
HEX obliku.
Ovo predstavlja (sa leva na desno):
!- startni karakter
01- Šaljem uređaju sa adresom 1
00- Moja adresa je 0 (master)
D- Upali diode
3- kombinacija kako da slave1 upali diode (3 je konkretno donje dve)
2A- Čeksuma
@- Stop karakter
Inicira se rutina za slanje podataka INITTI koja šalje podatke preko serijskog
porta.
Slave prima prvi karakter (!) koji je prepoznao kao start karakter, i sada očekuje
poruku. Prima poruku dok ne stigne @, nakon čega je spremna obrada poruke, a to
radi rutina GETDATA.
Nakon toga rutina IS4ME upoređuje adresu koja je stigla sa adresom u memoriji.
Ovde slave sa adresom 2 prepoznaje da adresa nije njegova i da se vrati u petlju
čekajući novu poruku.

25
Slave1 prepoznaje da je poruka za njega i nakon toga rutina CHCHSUM proverava
da li je checksum ok. Ukoliko je sve u redu, smešta adresu onoga koji je slao (00) na
adresu za slanje (za odgovor) i najzad glavni program dobija informaciju da čita
podatke.
Glavni program zatim prepoznaje D3 kao naredbu da upali određene diode, to i
radi, i najzad šalje odgovor Masteru (adresi 0) .

3.2.2 Slanje podataka svim uređajima – Broadcast


Opcija broadcast slanja je mogućnost slanja podataka svim slave uređajima. Ovde
je odabrana FF (255) kao adresa za broadcast slanje. Svaki slave uređaj prima neku
naredbu i odrađuje je kao da je samo za njega. Jedina razlika je kod odgovora. Slave
uređaj poziva određenu pseudoslučajnu fju RANDOM koja mu daje neku nasumičnu
vrednost. On čeka neko vreme u zavisnosti od vrednosti koju je primio i nakon toga
odgovara. To se radi kako bi se izbegla kolizija na magistrali, tj. da se ne desi da 2 ili
više uređaja u istom vremenskom trenutku šalju podatke. Master treba da primi sve
odgovore u roku od 2sec u konkretnom slučaju. Ko ne odgovori za ovo vreme, smatra
se da nikad neće.

3.3 Električna šema jednog bloka


Sistem je realizovan na mirokontroleru AT89S8253. Za komunikaciju između
kontrolera se koristi SN75176 RS485 drajver. Za interakciju sa korisnikom je
iskorišćen dvoredni matrični displej sa 16 karaktera u redu, koji je vezan za master
modul.
5V

R1 R2 R3
U1
1

39 21
38 P0.0/AD0 P2.0/A8 22 Enter
37 P0.1/AD1 P2.1/A9 23 LED0 LED1 LED2
36 P0.2/AD2 P2.2/A10 24
2

35 P0.3/AD3 P2.3/A11 25
34 P0.4/AD4 P2.4/A12 26
33 P0.5/AD5 P2.5/A13 27
32 P0.6/AD6 P2.6/A14 28
Disp Data 0..7 P0.7/AD7 P2.7/A15 U2
1 10
2 P1.0/T2 P3.0/RXD 11 4 1
3 P1.1/T2-EX P3.1/TXD 12 D R
4 P1.2 P3.2/INT0 13 3 6
P1.3 P3.3/INT1 DE A Aline
2

5 14 2 7
P1.4/SS P3.4/T0 RE B Bline
6 15
Select 7 P1.5/MOSI P3.5/T1 16
8 P1.6/MISO P3.6/WR 17 SN75176B
P1.7/SCK P3.7/RD
1

19 30
XTAL1 ALE/PROG Disp RV
18 29
XTAL2 PSEN Disp RS
Disp enable
31
9 EA/VPP
RST
40
VCC

AT89S8253

slika 20. Električna šema sistema

Na sva tri modula, nalaze se i po tri led diode vezane na port2 koje služe za
indikaciju poslatih poruka.

26
3.4 Formati poruka

Poruka je formata:

Start Adresa Adresa Podaci Čeksuma End


karakter pošiljaoca primaoca karakter
1bajt 2bajta 2bajta različita 2 bajta 1bajt
dužina

Cela poruka je ASCII kodirana. Ovim se izbegava moguće javljanje start ili stop
karaktera unutar podataka.

Start karakter:
ASCII '!' HEX '0x21'

Adresa pošiljaoca:
Ascii reprezentacija jednog bajta pomoću dva. Ide od 00 do FF (256 adresa).
Adresa 00 je rezervisana za master, a FF za broadcast. Ova dva bajta predstavljaju
adresu uređaja koji šalje poruku.

Adresa primaoca:
Isti format kao adresa pošiljaoca, samo što ova dva bajta predstavljaju adresu
uređaja kome se šalje.

Podaci:
Ascii poruka. Može biti promenljive dužine. U poruci se ne smeju javiti start
ili stop karakter.

Čeksuma:
Ovo je Ascii dvobajtna reprezentacija čeksume jednostruke preciznosti. U
sumu ulaze adresa pošiljaoca, primaoca i podaci. Primer formiranja čeksume je dat u
poglavlju čeksuma.

End karakter:
ASCII '@' HEX '0x40'

27
3.5 Napajanje
Napajanje koje se koristi je sa transformatora 220/9 V i taj napon se ispravlja preko
Grec ispravljača i stabilizuje sa LM7805 na 5V, odakle se vodi na mikrokontroler i
spoljašni tajmer 82c54.

slika 21. Električna šema napajanja

Koristi se mikrokontroler AT89S8253 sa kristalom od 12 MHz. Izbor ovog


kristala je zbog celobrojne vrednosti frekvencije, koja je potrebna radi preglednosti
talasnih oblika signala na izlazu sistema.

28
4 Software
Kod je pisan u Asembleru bez simulacije.
U oblasti 4, zbog veličine programa, prikazane su sve funkcije ponaosob, kao i
glavni program za Master i Slave terminal. Opis funkcije se nalazi ispred, a postoje i
dodatni in-line komentari.

4.1 Funkcije za čekanje:

4.1.1 wait 1 mS
ulazni parametri: R7
izlazni parametri: nema
funkcija: čeka onoliko mS koliko dato u R7 (do 255mS)
ako je R7 00H ne čeka ništa

;******** WAIT 1mS ******


WAIT1: CJNE R7,#00H, WAIT01
RET
WAIT01: MOV R6,#02H
WAIT02: MOV R5,#0F0H
DJNZ R5, $
DJNZ R6, WAIT02
DJNZ R7, WAIT01
RET

4.1.2 wait 10 mS
ulazni parametri: R4
izlazni parametri: nema
funkcija: čeka onoliko desetina mS koliko dato u R4 (do 2,55 S)
ako je R4 00H ne čeka ništa

;******* WAIT (10mS)X(R4)**************


WAIT10: CJNE R4, #00H, WAIT101
RET
WAIT101:MOV R3, #10
WAIT102:MOV R7, #01H
LCALL WAIT1
DJNZ R3, WAIT102
DJNZ R4, WAIT101
RET

4.2 Funkcije za konverziju podataka:

4.2.1 ascii u hex


ulazni parametri: A
izlazni parametri: A, C
funkcija: (C=1) prebacuje ascii kod u akumulatoru u 4bita hex koje smešta u
akumulator.
(C=0) u akumulatoru nije bio znak 0-9 ili A-F

29
;****** ATOHEX *********************************
;**** ULAZ: ACC=ascii-HEX ,
;**** IZLAZ: C=1, ACC= 4 BITA HEX
;***** C=0, GRESKA, NIJE ASCII-HEX
ATOHEX: CLR C
SUBB A, #'A'
JC RE23
SUBB A, #06H
JNC NOHEX
YEHEX: ANL A, #0FH
RET
RE23: ADD A, #07H
JC NOHEX
ADD A, #0AH
JC YEHEX
NOHEX: CLR C
RET

4.2.2 hex u ascii


ulazni parametri: A
izlazni parametri: A
funkcija: prebacuje niža 4 bita iz A u ascii podatak koji smešta u A

;****** HEXTOA *************************


;*** ULAZ: ACC=HEX NIBLE , IZLAZ ACC=ascii-HEX
HEXTOA:ANL A, #0FH
ADD A, #0F6H
JNC TY4
ADD A, #7
TY4: CLR C
SUBB A, #0C6H
RET

4.3 Funkcije za upravljanje displejom:

4.3.1 inicijalizacija displeja:


ulazni parametri: nema
izlazni parametri: nema
funkcija: inicijalizuje displej

;**** INIT DISPLEJA *********************


DISPINI:MOV R7,#30 ; 15MS
LCALL WAIT1
MOV A,#38H ; SET DL=1,N=1,F=0
LCALL DCOM0
MOV R7,#10 ; 5MS
LCALL WAIT1
MOV A,#38H ; SET DL=1,N=1,F=0
LCALL DCOM0
MOV R7,#1 ; 100 MICRO SEC
LCALL WAIT1
MOV A,#38H ; SET DL=1,N=0,F=0
LCALL DCOM0

30
MOV A,#38H ; SET DL=1,N=1,F=0
LCALL DCOMW
MOV A,#06H ; DISP OFF
LCALL DCOMW
MOV A,#0CH ; DISP ON
LCALL DCOMW
MOV A,#01H ;01= CLEARDISP
LCALL DCOMW
MOV A,#80H ;ADR=0 FOR DD RAM
LCALL DCOMW
RET

4.3.2 pošalji komandu


ulazni parametri: A
izlazni parametri: nema
funkcija: šalje displeju podatak iz A kao komandu (RW=0, RS=0)

;*** WAIT UNTIL BF=1 AND SEND COMAND *****


DCOMW: LCALL WTBUSY
;**** KOMANDA ZA DISPLEJ BEZ BF *******
DCOM0: MOV P0,A ; KOMANDA
CLR RWLCD ; WR
CLR RSLCD ; COM REG
SETB ENLCD
CLR ENLCD ; UPISI
MOV P0,#0FFH ; VRATI FF
RET

4.3.3 pošalji karakter


ulazni parametri: A
izlazni parametri: nema
funkcija: šalje displeju karakter za ispisivanje iz A kao data (RW=0, RS=1)

;*** WAIT UNTIL BF=1 AND SEND DATA *****


DDATAW: LCALL WTBUSY
MOV P0,A ; DATA
CLR RWLCD ; WR
SETB RSLCD ; DATA REG
SETB ENLCD
CLR ENLCD ; UPISI
MOV P0,#0FFH ; VRATI FF
RET

4.3.4 pošalji niz karaktera


ulazni parametri: DPTR
izlazni parametri: nema
funkcija: šalje displeju niz karaktera za ispisivanje sa početnom adresom u DPTR
kao data (RW=0, RS=1). Prekida slanje kada naiđe na 00h

;*** WRITE STRING*************************


DSTRW: CLR A ; OBRISI INDEKS
MOVC A, @A+DPTR ; NADJI BAJT @DPTR

31
INC DPTR ; NAREDNI BAJT
JZ DSTRWEND ; KRAJ STRINGA?
LCALL DDATAW ; POSALJI CHAR
SJMP DSTRW
DSTRWEND:RET

4.3.5 ispitavanje da li je slobodan displej


ulazni parametri: nema
izlazni parametri: nema
funkcija: čeka dok se ne oslobodi displej

;*********** WAIT UNTIL BF=1 *****


WTBUSY: SETB RWLCD ; RD
CLR RSLCD ; STATUS REG
WTBUSY1:SETB ENLCD
JNB P0.7, WTEND ; D7=1 BUSY
CLR ENLCD
SJMP WTBUSY1
WTEND: CLR ENLCD
RET

4.3.6 kreiranje simbola


ulazni parametri: nema
izlazni parametri: nema
funkcija: kreira simbole za upaljenu i ugašenu diodu

;*********** KREIRANJE KARAKTERA **********


CHAR_SET:
MOV A, #48H
LCALL DCOMW
MOV DPTR, #ONSTR
LCALL DSTRW
MOV DPTR, #OFFSTR
LCALL DSTRW
RET

4.4 Funkcije za slanje i primanje podataka:

4.4.1 inicijalizacija serijskog porta


ulazni parametri: nema
izlazni parametri: nema
funkcija: inicijalizuje usart na 9600bps

; ****** INIT INTERNOG UARTA **********


;***************************************
SERINI:
MOV A,#0FDH ; 9600
MOV TH1, A ; SET TIMER 1 TO SELECTED BAUD RATE
MOV TMOD,#20H ; SET TIMER 1 TO AUTO RELOAD MODE
MOV TCON,#0C0H ; START TIMER 1
MOV SCON,#52H ; EN.SER.RECEIVE ; 8N1; TI=1
RET

32
4.4.2 primi podatke
ulazni parametri: T_OUT
izlazni parametri: C, ADRX, COMDATA maksimalno do BUFEND, S_ADR
funkcija: čeka podatke dok ne istekne vreme T_OUT*0.5mS. Ako je u T_OUT 00H
beskonačno čekanje dok ne stignu podaci.
Nakon primljenog paketa ispituje da li su namenjeni njemu, proverava da li je
format poruke u redu, i proverava CHECK-sumu. Ako bilo koji od ova 3 uslova ne
bude zadovoljen, u C se vraća 0. Ako su svi zadovoljeni (C=1), na ADRX se
smešta hex adresa pošiljaoca, a od adrese COMDATA do COMDATA+x se smešta
poruka bez CHECK-sume, gde je x dužina poruke. Poruka se završava sa 00h na
adresi COMDATA+(x+1). U S_ADR se opisuje 0FFh ako je stigla broadcast
poruka.

;*****GETDATA SA TIME OUTOM T_OUT*0.5mS***********


;*****AKO T_OUT=0, BESKONACNO CEKANJE************
;*****izlaz: C=1, PRIMLJENA PORUKA ZA MENE; C=0, NIJE***********
;*****AKO C=1: ADRESA POSILJAOCA NA ADRX, A KOMANDA NA COMDATA+X
DO 00H;*********

GETDATA:
CLR RI
GETBR: MOV CHECKSUM, #00H
MOV SIPTR, #COMBUF
GET4: MOV A, T_OUT
JZ GET3
MOV R1, A
MOV R2, #0F0H
GET1: JB RI, GET2
DJNZ R2, GET1
MOV R2, #0F0H
DJNZ R1, GET1
LJMP GDERR

GET3: JNB RI, $


GET2: CLR RI
;******SERIAL -> BUFFER*************************

MOV A, SBUF
MOV B, A
ADD A, CHECKSUM
MOV CHECKSUM, A
MOV A, B
MOV R0, SIPTR
MOV @R0, A
INC SIPTR
XRL A, #END_CHAR
JZ IS4ME
MOV A, #BUFEND+1
XRL A, SIPTR
JZ GDERR
LJMP GET4

33
;***** IS4ME ***********************************
IS4ME:
MOV A,COMBUF
CJNE A,#ST_CHAR, GDERR

MOV A,DSTADRH
LCALL ATOHEX
JNC GDERR ; NIJE ASCI-HEX
SWAP A
MOV B,A ; PRICUVAJ TEZA CETIRI BITA DEST. ADRESE
MOV A,DSTADRL
LCALL ATOHEX
JNC GDERR ; NIJE ASCI-HEX
ADD A,B ; DEST ADRESA KOMPLETIRANA
CJNE A,#MY_ADR, IS4ALL ; GO IF NOT MY_ADR
SJMP IS42
IS4ALL:CJNE A, #BRADR, GDERR

MOV S_ADR, A ;SACUVAJ PODATAK DA LI JE ZA MENE ILI ZA SVE


IS42: MOV A, SRCADRH
LCALL ATOHEX
JNC GDERR ; NIJE ASCI-HEX
SWAP A
MOV B,A ; PRICUVAJ TEZA CETIRI BITA SOURCE ADRESE
MOV A,SRCADRL
LCALL ATOHEX
JNC GDERR ; NIJE ASCI-HEX
ADD A,B ; SOURCE ADRESA KOMPLETIRANA
MOV ADRX,A ; SMESTI HEX ADRESU POSILJIOCA

MOV R0, SIPTR


DEC R0
MOV @R0, #00H ; 00H NA KRAJU PORUKE
;******PROVERA CHECKSUME************
CHCHSUM:DEC R0
MOV A, CHECKSUM
CLR C
SUBB A, @R0
DEC R0
CLR C
SUBB A, @R0
CLR C
SUBB A, #'@'
MOV CHECKSUM, A ;PRICUVAJ CHECKSUM

MOV A, @R0
LCALL ATOHEX
JNC GDERR
SWAP A
MOV B,A
INC R0
MOV A, @R0
LCALL ATOHEX
JNC GDERR
ORL A,B
CJNE A, CHECKSUM, GDERR

34
SETB C
RET

GDERR: CLR C
RET

4.4.3 pošalji podatke


ulazni parametri: ADRX, COMDATA+x do 00h
izlazni parametri: nema
funkcija: uzima adresu uredjaja sa ADRX (kome se šalje), od nje pravi dva ascii
karakterera koji se smeštaju na DSTADRH i DSTADRL. Svoju adresu prebacuje u
ASCII i smešta na SRCADRH i SRCADRL. Na mesto COMBUF (to je ista adresa kao
i za ADRX) smešta start karakter. Pročita poruku od COMDATA+0 do COMDATA+x
i napravi CHECK-sumu. Dobijeni HEX checksum pretvori u 2 ascii karaktera i
smesti na COMDATA+(x+1) i COMDATA+(x+2). Na COMDATA+(x+3) smešta
stop karakter, a na COMDATA+(x+4) 00h. Nakon toga inicijalizuje slanje redom:
COMBUF, DSTADRH, DSTADRL, SRCADRH, SRCADRL, COMDATA+0, ....do...
,COMDATA+(x+3)

pa je oblik poruke(na primeru 1. uredjaj šalje 2. poruku 'ovde_se_šalju_podaci') :


!0201ovde_se_šalju_podaci5A@

gde je:
! -startkarakter,
02 -adresa primaoca
01 -adresa pošiljaoca
ovde_se_šalju_podaci -poruka za slanje
5A -checksum (npr.)
@ -stop karakter

Sve što se šalje je ASCII kodirano, i to samo znacima:


0123456789 -30h do 39h
ABCDEFGHIJKLMNOPQRSTUVWXYZ -41h do 5Ah
! -21h
@ -40h

;*****SLANJE PODATAKA***************************
;***********************************************
INITTI:
MOV R1, #00H ;ZA CHECKSUM
MOV A, ADRX ;ADRESA KOJOJ SE SALJE
SWAP A
LCALL HEXTOA
MOV DSTADRH, A
MOV A, ADRX
LCALL HEXTOA
MOV DSTADRL, A
MOV COMBUF, #ST_CHAR

MOV A, #MY_ADR ;ADRESA POSILJAOCA


SWAP A
LCALL HEXTOA
MOV SRCADRH, A
MOV A, #MY_ADR
LCALL HEXTOA

35
MOV SRCADRL, A

MOV SIPTR, #COMBUF


SETB EN485TX
TILOOP: JNB TI, $
CLR TI
MOV R0, SIPTR
MOV A, @R0
JZ TIEND
MOV SBUF, A
ADD A, R1
MOV R1, A
INC SIPTR
SJMP TILOOP
TIEND: MOV A, R1 ;NAPRAVI HI-HEXCHECKSUM U ASCII
SWAP A
LCALL HEXTOA
MOV SBUF, A
JNB TI, $
CLR TI
MOV A, R1 ;NAPRAVI LOW-HEXCHECKSUM U ASCII
LCALL HEXTOA
MOV SBUF, A
JNB TI, $
CLR TI
MOV SBUF, #END_CHAR
JNB TI, $
CLR EN485TX
RET

4.5 Funkcije za generisanje slučajnih vrednosti

4.5.1 random init


ulazni parametri: nema
izlazni parametri: nema
funkcija: inicijalizuje pseudo-nasumičnu sekvencu u zavisnosti od sopstvene
adrese

;***KORISTI SE A,B,R7*
RANDOM_INIT:
MOV RN1,#0F7H ; POCETAK
MOV RN2,#35H
MOV RN3,#55H
MOV RN4,#4EH

MOV R7,#0FFH
M12: LCALL RANDOM
DJNZ R7,M12

MOV R7, #MY_ADR+1


M13: LCALL RANDOM
DJNZ R7,M13
RET

36
4.5.2 random
ulazni parametri: nema
izlazni parametri: A
funkcija: generiše nasumičnu vrednost u A

;****VRACA RANDOM VREDNOST U ACC**********


RANDOM: ;FUNCTION
PUSH B
MOV B,#8 ;LOOP 8 TIMES TO HAVE THE ENTIRE BYTE CHANGE
;FROM ONE CALL TO ANOTHER
LOOP8: MOV A,RN1
MOV C,ACC.1
MOV TMPBIT,#0
MOV TMPBIT.0,C ;BIT 1 IN TMPBIT
MOV C,ACC.5
PUSH ACC
CLR A
RLC A
XRL A,TMPBIT
MOV TMPBIT,ACC ;BIT 1 XOR BIT 5 IN TMPBIT
POP ACC
MOV C,ACC.6
CLR A
RLC A
XRL A,TMPBIT
MOV TMPBIT,ACC ;BIT 1 XOR BIT 5 XOR BIT 6 IN TMPBIT
MOV A,RN4
MOV C,ACC.6
CLR A
RLC A
XRL A,TMPBIT ;BIT 1 XOR BIT 5 XOR BIT 6 XOR BIT 31 DANS
TMPBIT

MOV C,ACC.0 ;NOW MAKE A 32 BITS SHIFT RIGHT WITH


FEEDBACK IN CARRY
MOV A,RN4
RRC A
MOV RN4,A
MOV A,RN3
RRC A
MOV RN3,A
MOV A,RN2
RRC A
MOV RN2,A
MOV A,RN1
RRC A
MOV RN1,A

DJNZ B,LOOP8

POP B
RET

37
4.6 Master

funkcije koje se koriste:


oblast :
Funkcije za čekanje
- wait 1ms
Funkcije za konverziju podataka
- sve
Funkcije za upravlanje displejom
-sve
Funkcije za slanje i primanje podataka
-sve
Funkcije za generisanje nasumičnih vrednosti
-nijedna

4.6.1 definisanje parametara i mesta u memoriji


STCK EQU 80H ; 89C52 MOZE PREKO 80H

;****** PORTOVI I/O *****************


;******* LCD DISPLEJ NA PORTU P0 *******
ENLCD EQU P3.7 ; EN
RWLCD EQU P3.5 ; R/W (H/L)
RSLCD EQU P3.6 ; RS (H/L=DATA/COMMAND)

;******* TIMER CONTROL BITOVI ***********


T2CON EQU 0C8H
TF2 EQU T2CON.7
TR2 EQU T2CON.2

;******* TASTERI ************************


SELECT EQU P1.2
SEL_EN EQU P1.4
ENTER EQU P2.0
ENT_EN EQU P2.2

;******* DIODE **************************


LED2 EQU P2.7
LED1 EQU P2.6
LED0 EQU P2.5

;******* RS485 **************************


EN485TX EQU P3.4 ; transmit enable

;**** KONSTANTE *************************


MY_ADR EQU 00H ; MOJA ADRESA
BRADR EQU 0FFH ; BROADCAST ADRESA

ON EQU 01H
OFF EQU 02H
ST EQU 7EH

38
;**** POZICIJE NA LED DISPLEJU ********
PRVIR EQU 80H ; PRVI RED
DRUGIR EQU 0C0H ; DRUGI RED

;***** START I END KARAKTERI ***********


;***** PODACI U PORUCI MOGU BITI SVI ASCII KARAKTERI (20H - 7FH)
;***** OSIM KONTROLNIH KARAKTERA (00H - 1FH)
ST_CHAR EQU '!' ; STX , START OF TEXT (Ctrl+B)
END_CHAR EQU '@' ; ETX (Ctrl+C)

;******* RAM ****************************


T_OUT EQU 10H
SIPTR EQU 0AH ; POINTER NA TRANSMIT BAFER
S_ADR EQU 0BH ; POINTER ZA ULAZ KOMANDE
CHECKSUM EQU 0CH

COUNTS EQU 20H


COUNTE EQU 21H
STAT EQU 22H
TF EQU 0
RF EQU 1
MASTER EQU 2
STREC EQU 23H
U1 EQU 0
U2 EQU 1
U3 EQU 2

;**** STRUKTURA KOMUNIKACIONOG BAFERA


COMBUF EQU 30H ; START CHAR
ADRX EQU 30H ; ILI "SOURCE"/"DEST." HEX ADRESA
DSTADRH EQU 31H ; TEZA ASCI-HEX ADRESA "DEST."
DSTADRL EQU 32H ; LAKSA ASCI-HEX ADRESA "DEST."
SRCADRH EQU 33H ; TEZA ASCI-HEX ADRESA "SOURCE"
SRCADRL EQU 34H ; LAKSA ASCI-HEX ADRESA "SOURCE"
COMDATA EQU 35H ; ASCII PODACI ZAVRSENI SA 00H
BUFEND EQU 5FH ; MAX.KRAJ BAFERA

4.6.2 inicijalizaciona sekvenca:


funkcija:
definiše stack
upisuje u celu internu memoriju 00h
postavlja RS485 drajver u recieve mod
spušta na masu po jedan kraj tastera ENTER i SELECT
obavlja inicijalizaciju displeja, definisanje karaktera, inicijalizaciju serijkog
porta

ORG 0
LJMP INIT
ORG 03H
E0INT: RETI ; INT0 (NE KORISTI SE)
ORG 0BH

39
T0INT: RETI ; TIMER0 INT (NE KORISTI SE)
ORG 13H
E1NT: RETI ; INT1 EXT ARGINE (NE KORISTI SE)
ORG 1BH
T1INT: RETI ; TIMER1 INT (NE KORISTI SE)
ORG 23H
INTSER: RETI ; RI/TI INT INTERNI (NE KORISTI SE)
ORG 2BH
T2INT: RETI ; TIMER2 INT(NE KORISTI SE)

;************ INICIJALIZACIJA *********


;**************************************
ORG 30H

INIT:
MOV SP, #STCK
MOV R0,#7FH
MOV A,#00H
FILL00: MOV @R0,A ; INT MEM =00
DJNZ R0, FILL00

CLR EN485TX ; RS485 U RECEIVE MODU


CLR SEL_EN ; DRUGI KRAJ SELECT TASTERA NA MASU
CLR ENT_EN ; DRUGI KRAJ ENTER TASTERA
SETB STAT.MASTER

LCALL SERINI
LCALL DISPINI
LCALL CHAR_SET

4.6.3 MAIN petlja


funkcija:
ispisuje na displej osnovne podatke
detektuje pritisak tastera SELECT ili ENTER, i na osnovu toga ide na deo za
obradu tastera

;************ MAIN ********************


;**************************************

MAIN:
MOV COUNTS, #0
MOV COUNTE, #0

MOV A, #080H
LCALL DCOMW

MOV DPTR, #MSG2


LCALL DSTRW

MOV A, #0C0H
LCALL DCOMW

MOV DPTR, #MSG3

40
LCALL DSTRW

MOD0: JNB SELECT, SEL_PRESS


JNB ENTER, ENT_PRESS
SJMP MOD0

SEL_PRESS:
MOV R7,#30 ; 30mS - VIBRACIJA TASTERA
LCALL WAIT1

LCALL OBR_SEL

JNB SELECT, $ ;SACEKAJ DA SE PUSTI TASTER


MOV R7,#60 ; 60mS - VIBRACIJA TASTERA
LCALL WAIT1
SJMP MOD0

ENT_PRESS:
MOV R7,#30 ; 30mS - VIBRACIJA TASTERA
LCALL WAIT1

LCALL OBR_ENT

JNB ENTER, $ ;SACEKAJ DA SE PUSTI TASTER


MOV R7,#60 ; 60mS - VIBRACIJA TASTERA
LCALL WAIT1
SJMP MOD0

4.6.4 Obada tastera ENTER


funkcija:
ažurira displej
pravi pakete za slanje u zavisnosti od trenutnog stanja (koje menja
korisnik)
inicira slanje podataka
proverava odgovore za pojedinačna slanja
proverava odgovore za broadcast (koji stižu u nasumično vreme)

;****** OBRADA TASTERA ENTER ************


OBR_ENT:

MOV A, COUNTE
XRL A, #00H
JZ ENT1 ;TRUE= PRELAZI U STANJE 1
MOV A, COUNTE
XRL A, #01H
JZ ENT2 ;TRUE= PRELAZI U STANJE 2
MOV A, COUNTE
XRL A, #02H
JZ ENT0 ;TRUE= PRELAZI U STANJE 0

ENT0: MOV COUNTE, #00H ;


MOV A, #PRVIR ;
LCALL DCOMW ;
MOV DPTR, #MSG2 ;
LCALL DSTRW ;

41
MOV A, #DRUGIR ;VRATI START EKRAN
LCALL DCOMW ;
MOV DPTR, #MSG3 ;
LCALL DSTRW ;
LJMP EXITENT ;

ENT1: MOV COUNTE, #01H


MOV ADRX, COUNTS ;STAVI U ADRESU ZA SLANJE
MOV S_ADR, COUNTS ;STAVI U ADRESU ZA PROVERU ODGOVORA
MOV A, #DRUGIR
LCALL DCOMW
MOV A, #ST
LCALL DDATAW
MOV A, #PRVIR
LCALL DCOMW
MOV A, #' '
LCALL DDATAW
LJMP EXITENT

ENT2: MOV COUNTE, #02H


MOV A, #DRUGIR+8
LCALL DCOMW
MOV DPTR, #MSG7 ;STAVI ......
LCALL DSTRW
MOV A, COUNTS
XRL A, #08H ;DA LI JE SLANJE PAKETA?
JNZ ENT3
MOV COMDATA, #'M' ;SLANJE PAKETA.....
MOV COMDATA+1, #00H
SJMP ENT4

ENT3: MOV A, COUNTS ;SLANJE STANJA ZA DIODICE.....


LCALL HEXTOA
MOV COMDATA, #'D'
MOV COMDATA+1, A ;SLANJE STANJA ZA DIODICE.....
MOV COMDATA+2, #00H

ENT4: LCALL INITTI ;INICIRAJ TRANSMIT


MOV A, S_ADR
XRL A, #0FFH ;DA LI JE BROADCAST?
JZ RNDCHK
ENT5: MOV T_OUT, #0FFH ;CEKAJ 0.5S NA ODGOVOR
LCALL GETDATA
JC ENT20 ;DA LI JE PRIMLJENA ISPRAVNA PORUKA ZA MENE?
ENT22: MOV A, #DRUGIR+8
LCALL DCOMW ;NIJE
MOV DPTR, #MSG4
LCALL DSTRW
MOV A, S_ADR
LCALL HEXTOA
LCALL DDATAW
SJMP EXITENT

ENT20: MOV A, COMDATA ;JESTE, PROVERI DA LI JE FORMAT 'OK'


XRL A, #'O'
JNZ ENT22
MOV A, COMDATA+1

42
XRL A, #'K'
JNZ ENT22
MOV A, ADRX
XRL A, S_ADR
JNZ ENT22 ;ERROR

ENT21: MOV A, #DRUGIR+8


LCALL DCOMW
MOV DPTR, #MSG5 ;OK JE
LCALL DSTRW

EXITENT:
MOV COUNTS, #00H
RET

;****** PROVERA ODGOVORA ZA BROADCAST ***************


RNDCHK:
MOV STREC, #00H
MOV T_OUT, #00H
SETB TR2
MOV R1, #22
RND1: JB RI, JTOGET
JNB TF2, RND1
CLR TF2
DJNZ R1, RND1
CLR TR2
JB STREC.U1, RND4
MOV A, #DRUGIR+8
LCALL DCOMW
MOV DPTR, #MSG10
LCALL DSTRW
RND4: JB STREC.U2, EXITENT
MOV A, #DRUGIR+11
LCALL DCOMW
MOV DPTR, #MSG11
LCALL DSTRW
SJMP EXITENT

JTOGET: LCALL GETBR


JNC RND1
MOV A, ADRX
CJNE A, #01H, RND2
SETB STREC.U1
MOV A, #DRUGIR+8
LCALL DCOMW
MOV DPTR, #MSG8
LCALL DSTRW

RND2: MOV A, ADRX


CJNE A, #02H, RND3
SETB STREC.U2
MOV A, #DRUGIR+11
LCALL DCOMW
MOV DPTR, #MSG9
LCALL DSTRW
RND3: SJMP RND1

43
4.6.5 Obrada tastera SELECT
funkcija:
ažurira displej
menja trenutno stanje
;****** OBRADA TASTERA SELECT ************
OBR_SEL:
MOV A, COUNTE
XRL A, #00H
JZ SEL0 ;TRUE= ENTER STANJE 0
MOV A, COUNTE
XRL A, #01H
JZ SEL1 ;TRUE= ENTER STANJE 1
MOV A, COUNTE
XRL A, #02H
JNZ SEL0
LJMP SEL2 ;TRUE= ENTER STANJE 2

SEL0: INC COUNTS


MOV A, COUNTS
CJNE A, #03H , SEL01
MOV COUNTS, #0FFH ;BROADCAST ADRESA FF
MOV A, #PRVIR+10
LCALL DCOMW
MOV DPTR, #MSG1
LCALL DSTRW
SJMP SELEND
SEL01:MOV A, #PRVIR+10
LCALL DCOMW
MOV A, COUNTS
LCALL HEXTOA
LCALL DDATAW
MOV A, #' '
LCALL DDATAW ;DVA PRAZNA MESTA
LCALL DDATAW
SJMP SELEND
SEL1: INC COUNTS
MOV A, COUNTS
CJNE A, #09H, SEL12
MOV COUNTS, #00H
SEL12:MOV A, #DRUGIR+11
LCALL DCOMW
MOV A, COUNTS
JB 3, SEL10 ;VECI JE OD 7H; NIJE ZA DIODE
JB 2, SEL5
MOV A, #OFF
LCALL DDATAW
SJMP SEL6
SEL5: MOV A, #ON
LCALL DDATAW
SEL6: MOV A, COUNTS
JB 1, SEL7
MOV A, #OFF
LCALL DDATAW
SJMP SEL8
SEL7: MOV A, #ON
LCALL DDATAW

44
SEL8: MOV A, COUNTS
JB 0, SEL9
MOV A, #OFF
LCALL DDATAW
SJMP SELEND
SEL9: MOV A, #ON
LCALL DDATAW
SJMP SELEND
SEL10:MOV DPTR, #MSG6
LCALL DSTRW
SJMP SELEND
SEL2: LJMP ENT0 ;KAO DA JE PRITISNUT ENTER
SELEND: RET

4.7 Slave

funkcije koje se koriste:


oblast :
Funkcije za čekanje
- sve
Funkcije za konverziju podataka
- sve
Funkcije za upravlanje displejom
- ni jedna
Funkcije za slanje i primanje podataka
- sve
Funkcije za generisanje nasumičnih vrednosti
- sve

4.7.1 definisanje parametara i mesta u memoriji


STCK EQU 80H ; 89C52 MOZE PREKO 80H

;****** PORTOVI I/O *****************


;******* LCD DISPLEJ NA PORTU P0 *******
ENLCD EQU P3.7 ; EN
RWLCD EQU P3.5 ; R/W (H/L)
RSLCD EQU P3.6 ; RS (H/L=DATA/COMMAND)

;******* TASTERI ************************


SELECT EQU P1.2
SEL_EN EQU P1.4
ENTER EQU P2.0
ENT_EN EQU P2.2

;******* DIODE **************************


LED2 EQU P2.7
LED1 EQU P2.6
LED0 EQU P2.5

;******* RS485 **************************


EN485TX EQU P3.4 ; transmit enable

45
;**** KONSTANTE *************************
MY_ADR EQU 01H ; MOJA ADRESA
BRADR EQU 0FFH ; BROADCAST ADRESA

ON EQU 01H
OFF EQU 02H

;**** POZICIJE NA LED DISPLEJU ********


PRVIR EQU 80H ; PRVI RED
DRUGIR EQU 0C0H ; DRUGI RED

;***** START I END KARAKTERI ***********


;***** PODACI U PORUCI MOGU BITI SVI ASCII KARAKTERI (20H - 7FH)
;***** OSIM KONTROLNIH KARAKTERA (00H - 1FH)
ST_CHAR EQU '!' ; STX , START OF TEXT (Ctrl+B)
END_CHAR EQU '@' ; ETX (Ctrl+C)

;******* registri za random funkciju *************

RN1 EQU 11H


RN2 EQU 12H
RN3 EQU 13H
RN4 EQU 14H

TMPBIT EQU 27H

;******* RAM ****************************


T_OUT EQU 10H
SIPTR EQU 0AH ; POINTER NA TRANSMIT BAFER
S_ADR EQU 0BH ; POINTER ZA ULAZ KOMANDE
CHECKSUM EQU 0CH

COUNTS EQU 20H


COUNTE EQU 21H
STAT EQU 22H
TF EQU 0
RF EQU 1
MASTER EQU 2

;**** STRUKTURA KOMUNIKACIONOG BAFERA


COMBUF EQU 30H ; START CHAR
ADRX EQU 30H ; ILI "SOURCE"/"DEST." HEX ADRESA
DSTADRH EQU 31H ; TEZA ASCI-HEX ADRESA "DEST."
DSTADRL EQU 32H ; LAKSA ASCI-HEX ADRESA "DEST."
SRCADRH EQU 33H ; TEZA ASCI-HEX ADRESA "SOURCE"
SRCADRL EQU 34H ; LAKSA ASCI-HEX ADRESA "SOURCE"
COMDATA EQU 35H ; ASCII PODACI ZAVRSENI SA 00H
BUFEND EQU 5FH ; MAX.KRAJ BAFERA

46
4.7.2 inicijalizaciona sekvenca:
funkcija:
definiše stack
upisuje u celu internu memoriju 00h
postavlja RS485 drajver u recieve mod
spušta na masu po jedan kraj tastera ENTER i SELECT
obavlja inicijalizaciju displeja, definisanje karaktera, inicijalizaciju serijkog
porta
ORG 0
LJMP INIT
ORG 03H
E0INT: RETI ; INT0 (NE KORISTI SE)
ORG 0BH
T0INT: RETI ; TIMER0 INT (NE KORISTI SE)
ORG 13H
E1NT: RETI ; INT1 EXT ARGINE (NE KORISTI SE)
ORG 1BH
T1INT: RETI ; TIMER1 INT (NE KORISTI SE)
ORG 23H
INTSER: RETI ; RI/TI INT INTERNI
ORG 2BH
T2INT: RETI ; TIMER2 INT(NE KORISTI SE)

;************ INICIJALIZACIJA *********


;**************************************
ORG 30H

INIT:
MOV SP, #STCK
MOV R0,#7FH
MOV A,#00H
FILL00: MOV @R0,A ; INT MEM =00
DJNZ R0, FILL00

CLR EN485TX ; RS485 U RECEIVE MODU


CLR SEL_EN ; DRUGI KRAJ SELECT TASTERA NA MASU
CLR ENT_EN ; DRUGI KRAJ ENTER TASTERA
SETB STAT.MASTER

LCALL SERINI

LCALL RANDOM_INIT

47
4.7.3 MAIN petlja
funkcija:
poziva funkciju za prijem podataka
obrađuje primljene podatke
šalje odgovore
ažurira stanje na LED diodama

;************ MAIN ********************


;**************************************

;************ SLAVE MOD RADA **********


SLAVE:

MOV T_OUT, #00H


LCALL GETDATA
JNC SLAVE
MOV A, COMDATA
XRL A, #'D' ;UPALI DIODE
JZ KOMAND1
MOV A, COMDATA
SJMP SLAVE

KOMAND1:
MOV A, COMDATA+1
LCALL ATOHEX
SWAP A
RL A
CPL A
ORL A, #1FH
MOV P2, A

MOV A, S_ADR
MOV S_ADR, #00H
XRL A, #0FFH
JNZ KOM11
LCALL RANDOM
ANL A, #7FH
MOV R4, A
LCALL WAIT10
KOM11: MOV COMDATA, #'O'
MOV COMDATA+1, #'K'
MOV COMDATA+2, #00H
LCALL INITTI
LJMP SLAVE

48
5 Programiranje mikrokontrolera

Upis koda u mikrokontroler može da se vrši preko ISP kabla i ISP konektora na
pločici ili korišćenjem programatora. U ovom slučaju korišćen je programator MEC
ProgramMate UNP2 Universal Programmer i software MEC PG4UW. Postupak
programiranja je objašnjen na sledećim slikama.

slika 22. Osnovni prozor programa MEC PG4UW

Posle startovanja programa izabere se opcija Device/Select Device, gde se izabere


Atmel AT89S8253.

49
slika 23. Selekcija AT89S8253

Sledeći korak je učitavanje fajla u bafer, što se postiže sa Load (Load File To
Buffer) i navede putanja do fajla koji je potreban.
Sledeći korak je programiranje i postiže se sa Device/Program, gde se čekira
Flash + EEPROM

slika 24. Početak programiranja

Klikom na Yes otvara se novi prozor koji prati postupak upisa kôda u
mikrokontroler

50
Slika 16. Upis kôda u mikrokontroler

Nakon ovoga javlja se poruka o uspešnom programiranju, nakon čega se


mikrokontroler vraća na pločicu i spreman je za rad, a za ostale režime rada se isti
postupak ponavlja.

51
6 Laboratorijska vežba
Ovde će se pokazati kako funkcioniše najosnovniji protokol tipa master-slave, gde
jedan uređaj proziva ostale, šalje im naredbu i čeka odgovor. Svaki niz poslatih
podataka ima i ček-sumu dodatu na kraju koja se proverava. Omogućeno je i
adresiranje svih uređaja istovremeno.

*Master – ploča na kojoj je povezan displej i napajanje


*Slave – druge 2 ploče
*RS485 veza – veza sa 3 žice (plava, bela, braon)
*Kabl za napajanje – veza sa 2 žice (plava, crvena)
*Select – taster koji se nalazi levo (na P1.2 i P1.4)
*Enter – taster koji se nalazi desno (na P2.0 i P2.3)

6.1 Uputstvo za setovanje:


Resetovati sva 3 uređaja

Nakon ovoga na displeju treba da bude ispisan sledeći tekst:


►Send to: 0
Send: 000
****Šta se ovde desilo?****
Mikrokontroleri su nakon reseta odradili inicijalizacijonu sekvencu i nakon toga
prešli u main petlju.
Master je tu definisao stek pointer, setovao određene vrednosti na pinovima za
kontrolu RS485 čipa i pozvao 3 f-je (SERini, DISPini i char_set). Prva inicijalizuje
serijsku komunikaciju na 9600bps, 8bit; Druga inicijalizuje displej. Zatim se ispisuje
ovo gore na displej, i ulazi u petlju koja čeka da se pritisne taster.
Slave je odradio sve isto, osim za displej, i ušao u petlju koja čeka da primi nešto na
serijskom portu.
************************
Strelica na levoj strani ekrana pokazuje šta se trenutno menja tasterom select, a
tasterom enter potvrđujemo izbor.

6.2 Slanje podataka i primanje odgovora:


1. Svakim pritiskom na taster select(levi) menja se tekst u 1. redu displeja
0→1→2→ALL→0→itd. u krug. Odabrati da master pošalje komandu uređaju sa
adresom 1.
****Šta se ovde desilo?****
Master, nakon pritiska tastera select, to očita na pinu P1.2 kao 0 i skače na rutinu
koja obrađuje pritisak tastera select (menja stanje u kom se nalazi uredjaj, menja
stanje na displeju itd.)
************************
2. Pritisnuti enter(desni). Strelica bi trebalo da pređe u 2. red.
****Šta se ovde desilo?****
Sve isto, samo za enter (P2.0)
************************
3. Svakim pritiskom na taster select menja se kombinacija zatamnjenih kružića u 2.
redu. odabrati neku kombinaciju (ne ERR). Na nekom od druga 2 uređaja bi trebalo

52
da zasvetle diode u istoj kobinaciji kako je bila selektovana na displeju. U tom
slučaju, na displeju piše Ok.
****Šta se ovde desilo?****
Master je nakon detekcije entera u stanju spremnom da šalje, spakovao poruku u
buffer za slanje. Poruka je oblika: !0100D32A@ ascii tj 21 30 31 30 30 44 33 32 40 u
HEX obliku.
Ovo predstavlja (sa leva na desno):
!- startni karakter
01- Šaljem uređaju sa adresom 1
00- Moja adresa je 0 (master)
D- Upali diode
3- kombinacija kako da upalis diode (3 je konkretno donje dve)
2A- Ček suma
@- Stop karakter
Nakon toga je inicirana rutina za slanje podataka INITTI koja šalje podatke preko
serijskog porta.
Slave je primio prvi karakter (!) koji je prepoznao kao start karakter, i sada očekuje
poruku. Prima poruku dok ne stigne @, nakon čega je spremna obrada poruke to radi
rutina GETDATA.
Nakon toga rutina IS4ME upoređuje adresu koja je stigla sa adresom u memoriji.
Ovde slave sa adresom 2 prepoznaje da adresa nije njegova i da se vrati u petlju
čekajući novu poruku.
Slave 1 prepoznaje da je poruka za njega i nakon toga rutina CHCHSUM proverava
da li je checksum ok. Ukoliko je sve u redu, smešta adresu onoga koji je slao (00) na
adresu za slanje (za odgovor) i najzad glavni program dobija informaciju da čita
podatke.
Glavni program zatim prepoznaje D3 kao naredbu da upali određene diode, to i radi,
i najzad šalje odgovor Masteru (adresi 0) oblika: !0001OK7B@ ascii
Slave 2 opet vidi poruku, ali je opet ignoriše.
Master prima odgovor, ispisuje OK i čeka da se pritisne neki taster i vrati na početak.
************************
4. Pritisnuti neki taster za vraćanje na početak.
5. Možete probati isto i za adresu 2.

6.3 Slanje podataka i ne primanje odgovora:


1. Izvući kabl za napajanje iz uređaja sa adresom 2 npr.
2. Poslati neku poruku uređaju sa adresom 2. Na ekranu bi nakon nekog intervala
trebalo pisati ERROR2.
****Šta se ovde desilo?****
Ista situacija oko slanja kao malopre. Ovog puta, ni jedan uređaj koji radi ili je
umrežen nema adresu 2 (ima takvog, ali mirno spava), pa nema nikog ni da odgovori.
Master čeka neko vreme (Time out) i pošto ne stiže odgovor, zaključuje da nikad neće
ni stići i javlja grešku.
************************
3. Priključiti uređaj koji je bio isključen. Resetovati ga.
4. Ista situacija se dobija i slanjem podataka uređaju sa adresom 0 (master šalje
sebi).
5. Ista situacija se dobija slanjem komande ERR.
****Šta se ovde desilo?****

53
Ovde master šalje komandu koju slave ne razume. Vidi da je za njega, ali ništa ne
znači. Slave ovde ne odgovara ništa, što se manifestuje kao greška u slanju.
************************

6.4 Broadcast
1. U opciji Send to odabrati ALL
2. Odabrati neku kombinaciju dioda i pritisnuti enter. Trebalo bi da se pojavi Ok1 i
Ok2
****Šta se ovde desilo?****
Opcija broadcast slanja je mogućnost slanja podataka svim slave uređajima. Ovde je
odabrana FF (255) kao adresa za broadcast slanje. Svaki slave uređaj (ukupno 2, ali
i to je više od 1) prima neku naredbu i odrađuje je kao da je samo za njega. Jedina
razlika je kod odgovora. Slave uređaj poziva određenu pseudoslučajnu fju RANDOM
koja mu daje neku nasumičnu vrednost. On čeka neko vreme u zavisnosti od vrednosti
koju je primio i nakon toga odgovara. To se radi kako bi se izbegla kolizija na
magistrali, tj. da se ne desi da 2 ili više uređaja u istom vremenskom trenutku šalju
podatke. Master treba da primi sve odgovore u roku od 2sec u konkretnom slučaju.
Ko ne odgovori za ovo vreme, smatra se da nikad neće.
*************************
3. Isprobati različite kombinacije (isključi slave1 pa pošalji broadcast, pošalji ERR
svima itd...)

54
7 Zaključak
Ovaj projekat je urađen kako bi se omogućilo sadašnjim i budućim studentima
Elektronskog Fakulteta mali uvid u to kako se praktično realizuje osnovna master-
slave komunikacija, u vidu pokazne laboratorijske vežbe.

8 Literatura
1. AT89S8253 dokumentacija – www.atmel.com
2. SN75176 dokumentacija – Texas Instruments
2. Procesori, programski jezici i hardversko-softverske karakteristike embedded
sistema – Mile Stojčev
3. Računarske mreže i prenos podataka – Mile Stojčev

55
9 Dodatak

Blok šema elemenata smeštenih na PCB ploči

56
Layout gornje strane PCB-a

57
Layout donje strane PCB-a

58
start

inicijalizacija

while (1)

switch taster

pritisnut enter pritisnut select

switch stanje switch stanje

Biranje adrese slanje


start ekran uredjaja podataka (1) (2) (3)
(1) (2) (3)

Set displej Adresa = counts Poruka = counts Counts++ Counts++ Stanje = 1


F F
Stanje = 2 Set displej Set displej counts > 4 counts > 8

Stanje = 3 Iniciranje slanja Counts = 0 Counts = 0

Cekanje odgovora
Set displej Set displej
T F
Switch taster

Kom = OK Kom = err

Stanje = 1

Algoritam programa za master modul

59
start

inicijalizacija

while (1)

primljena poruka ?

databuf[0] = ‘!”

databuf[1..2] = my address

format poruke OK

obrada poruke i promena stanja na diodama

odgovor “OK” ERROR

Algoritam programa za slave modul

60
Sanja Tomić
Ime: Sanja
Prezime: Tomić
Datum i mesto rođenja: 04.08.1984. Surdulica
Bračno stanje: Neudata
Adresa stanovanja: Čarnojevića 6/29, Niš
Obrazovanje: Gimnazija ‚‚Jovan Skerlić‘‘ – Vladičin Han
Godina upisa na 2003.
Elektronski fakultet:

Smer: Elektronika
Poznavanje jezika: Engleski
Poznavanje softvera: Protel, mikroC, MSoffice
Interesovanja: Planinarenje, Programiranje
Dosadašnji projekti: 1. Real-time operativni sistem koji ispisuje podatke na 4 led
displeja i čita tastaturu sa 12 tastera sa ¼ duty ciklusom

61
Stevan Marinković

Ime: Stevan
Prezime: Marinković
Datum i mesto rođenja: 11.10.1984. Niš
Bračno stanje: Neoženjen
Adresa stanovanja: Bulevar Nemanjića 78/20, Niš
Obrazovanje: Gimnazija ‚‚Svetozar Marković‘‘ – Niš
Godina upisa na 2003.
Elektronski fakultet:

Smer: Elektronika
Poznavanje jezika: Engleski, Nemački
Poznavanje softvera: Active HDL, uClinux, C#, Protel, mikroC, MSoffice
Poznavanje programskih Assembler, C, C++, C#, VHDL
jezika
Interesovanja: Programiranje, Pilotiranje, Plivanje, Tenis
Radovi: 1. Microcontroler system for temperature regulation with GSM
support - ETRAN, Herceg novi, 2007
2. Portable system for heartbeat and respiration measurement -
INDEL, Banja Luka , 2006
Dosadašnji projekti: 1. Embedded sistem sa Blackfin procesorom i uClinux operativnim
sistemom
2. Real-time operativni sistem koji ispisuje podatke na 4 led
displeja i čita 12 tastera sa ¼ duty ciklusom
3. Digitalni deo LCD drajvera koji može upravljati sa 168 displej
segmenata sa ¼ duty ciklusom i tri naponska nivoa
4. Robot sa 4 točka upravljan preko RF veze
5. Mikrokontrolerski sistem za temperaturnu regulaciju upravljan
SMS porukama

62
Dosadašnji projekti - 6. Analogni i digitalni deo sistema za merenje broja otkucaja srca u
nastavak: minuti i broja udisaja u minuti
7. Digitalni deo sistema sa touch-screen displejom koji upravlja
fizioterapeutske sonde za lasersko i ultrazvučno lečenje
Ostalo: Član plivačkih klubova ‚‚Niš‘‘ i ‚‚Sveti Nikola‘‘ u periodu od 1993
do 2002
Učesnik u timu koji je predstavljao Elektronski fakultet u Nišu na
tri međunarodna takmičenja studenata elektronike Hard&Soft.

63

You might also like