77
Elektronski Fakultet Niš Seminarski rad: Master-slave komunikacija realizovana korišćenjem RS485 interfejsa 1

es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

Elektronski Fakultet Niš

Seminarski rad:

Master-slave komunikacija realizovana korišćenjem RS485 interfejsa

Niš, April 2008. Sanja Tomić 11338Stevan Marinković 11197

1

Page 2: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

Sadržaj

1. Uvod2. Teorijska postavka

2.1 Šta su mikrokontroleri?2.2 Mikrokontroleri: tipovi arhitektura i blok šema2.3 Mikrokontroleri u odnosu na mikroprocesore2.4 Struktura mikroprocesora2.5 Struktura mikrokontrolera2.6 Razlike između mikroprocesora i mikrokontrolera2.7 Prenos podataka2.8 Paralelni i serijski prenos2.9 Asinhroni prenos podataka2.10 Sinhroni prenos podataka2.11 RS- 4852.12 Provera tačnosti - Čeksuma2.13 Čeksuma: karakter provere

2.13.1 Čeksuma: jednostruka preciznost2.13.2 Čeksuma duple preciznosti2.13.3 Honeywell čeksuma2.13.4 Čeksuma ostatak

3. Opis sistema 3.1 Blok šema sistema3.2 Princip rada

3.2.1 Slanje podataka jednom uređaju3.2.2 Slanje podataka svim uređajima – Broadcast

3.3 Električna šema jednog bloka3.4 Formati poruka3.5 Napajanje

4. Software4.1 Funkcije za čekanje:

4.1.1 wait 1 ms – WAIT14.1.2 wait 10 ms – WAIT10

4.2 Funkcije za konverziju podataka:4.2.1 ascii u hex – ATOHEX4.2.2 hex u ascii – HEXTOA

4.3 Funkcije za upravljanje displejom4.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 vrednosti4.5.1 random init – RANDOM_INIT4.5.2 random - RANDOM

2

Page 3: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

4.6 Master4.6.1 definisanje parametara i mesta u memoriji4.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 Slave4.7.1 definisanje parametara i mesta u memoriji4.7.2 inicijalizaciona sekvenca – INIT4.7.3 Glavna petlja – MAIN

5. Programiranje mikrokontrolera6. Laboratorijska vežba

6.1 Uputstvo za setovanje6.2 Slanje podataka i primanje odgovora6.3 Slanje podataka i ne primanje odgovora6.4 Broadcast

7. Zaključak8. Literatura9. Dodatak

3

Page 4: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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

Page 5: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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

Page 6: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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.

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

Page 7: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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, 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

Page 8: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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.

Č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.

Page 9: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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.).

Page 10: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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.

slika 3. Blok dijagram mikroprocesora(CPU-a)

Page 11: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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

Page 12: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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

Page 13: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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

Page 14: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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.

Page 15: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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=100do 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

Page 16: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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.

Page 17: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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).

Page 18: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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

Page 19: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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:

Gdje su: L=dužina voda

Page 20: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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 750otpornici za polarizacijuRb = 120otpornik za terminaciju vodaRd = 120otpornik za terminaciju na suprotnom kraju voda

Page 21: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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.

Page 22: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

slika 16. Funkcionalna Šema drajvera SN75176B

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)

Page 23: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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 48

0100 1000

E 45

0100 0101

L 4C

0100 1100

L 4C

0100 1100

O 4F

0100 1111

1 74

1 0111 0100

LS bajt je 74 h carry = 1, izbacuje se

Page 24: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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

Page 25: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

smer prenosa

H E L P 48 45 4C 50

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

4C 5048 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

Page 26: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

3 Opis sistema

3.1 Blok šema sistema

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 karakter01- Šaljem uređaju sa adresom 100- Moja adresa je 0 (master)D- Upali diode3- 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.

DISPLEJ MASTER

TASTERI

SLAVE 1 SLAVE 2

RS485 magistrala

LED DIODE

LED DIODE LED DIODE

Page 27: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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.

A lin e

R 2

L E D 2E n t e r

12

L E D 0

B lin e

D is p R V

D is p D a ta 0 . .7

D is p e n a b le

U 1

A T8 9 S 8 2 5 3

9

1 81 9

2 93 0

3 1

4 0

12345678

2 12 22 32 42 52 62 72 8

1 01 11 21 31 41 51 61 7

3 93 83 73 63 53 43 33 2

R S T

XTA L 2XTA L 1

P S E NA L E / P R O G

E A / V P P

V C C

P 1 . 0 / T2P 1 . 1 / T2 -E XP 1 . 2P 1 . 3P 1 . 4 / S SP 1 . 5 / M O S IP 1 . 6 / M I S OP 1 . 7 / S C K

P 2 . 0 / A 8P 2 . 1 / A 9

P 2 . 2 / A 1 0P 2 . 3 / A 1 1P 2 . 4 / A 1 2P 2 . 5 / A 1 3P 2 . 6 / A 1 4P 2 . 7 / A 1 5

P 3 . 0 / R XDP 3 .1 / TXD

P 3 . 2 / I N T0P 3 . 3 / I N T1

P 3 . 4 / T0P 3 . 5 / T1

P 3 . 6 / W RP 3 . 7 / R D

P 0 . 0 / A D 0P 0 . 1 / A D 1P 0 . 2 / A D 2P 0 . 3 / A D 3P 0 . 4 / A D 4P 0 . 5 / A D 5P 0 . 6 / A D 6P 0 . 7 / A D 7

5 V

R 3

S e lec t

12

D is p R S

U 2

S N 75 1 7 6 B

4

3

1

267

D

D E

R

R EAB

R 1

L E D 1

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.

Page 28: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

3.4 Formati poruka

Poruka je formata:

Start karakter

Adresa pošiljaoca

Adresa primaoca

Podaci Čeksuma End karakter

1bajt 2bajta 2bajta različita dužina

2 bajta 1bajt

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'

Page 29: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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.

Page 30: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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: R7izlazni parametri: nemafunkcija: čeka onoliko mS koliko dato u R7 (do 255mS)ako je R7 00H ne čeka ništa

;******** WAIT 1mS ******WAIT1: CJNE R7,#00H, WAIT01 RETWAIT01: MOV R6,#02HWAIT02: MOV R5,#0F0H DJNZ R5, $ DJNZ R6, WAIT02 DJNZ R7, WAIT01 RET

4.1.2 wait 10 mS

ulazni parametri: R4izlazni parametri: nemafunkcija: č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

RETWAIT101:MOVR3, #10WAIT102:MOVR7, #01H

LCALL WAIT1DJNZ R3, WAIT102DJNZ R4, WAIT101RET

4.2 Funkcije za konverziju podataka:

4.2.1 ascii u hex

ulazni parametri: Aizlazni parametri: A, Cfunkcija: (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

;****** ATOHEX *********************************

Page 31: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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

4.2.2 hex u ascii

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

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

4.3 Funkcije za upravljanje displejom:

4.3.1 inicijalizacija displeja:

ulazni parametri: nemaizlazni parametri: nemafunkcija: inicijalizuje displej

;**** INIT DISPLEJA *********************DISPINI:MOV R7,#30 ; 15MS

LCALL WAIT1MOV A,#38H ; SET DL=1,N=1,F=0LCALL DCOM0MOV R7,#10 ; 5MSLCALL WAIT1MOV A,#38H ; SET DL=1,N=1,F=0

LCALL DCOM0MOV R7,#1 ; 100 MICRO SECLCALL WAIT1MOV A,#38H ; SET DL=1,N=0,F=0

LCALL DCOM0

MOV A,#38H ; SET DL=1,N=1,F=0 LCALL DCOMW

MOV A,#06H ; DISP OFF

Page 32: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

LCALL DCOMWMOV A,#0CH ; DISP ON

LCALL DCOMWMOV A,#01H ;01= CLEARDISP

LCALL DCOMWMOV A,#80H ;ADR=0 FOR DD RAM

LCALL DCOMW RET

4.3.2 pošalji komandu

ulazni parametri: Aizlazni parametri: nemafunkcija: š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 ; WRCLR RSLCD ; COM REGSETB ENLCDCLR ENLCD ; UPISIMOV P0,#0FFH ; VRATI FF

RET

4.3.3 pošalji karakter

ulazni parametri: Aizlazni parametri: nemafunkcija: š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 ; DATACLR RWLCD ; WRSETB RSLCD ; DATA REGSETB ENLCDCLR ENLCD ; UPISIMOV P0,#0FFH ; VRATI FFRET

4.3.4 pošalji niz karaktera

ulazni parametri: DPTRizlazni parametri: nemafunkcija: š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 @DPTRINC DPTR ; NAREDNI BAJTJZ DSTRWEND ; KRAJ STRINGA?LCALL DDATAW ; POSALJI CHARSJMP DSTRW

DSTRWEND:RET

Page 33: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

4.3.5 ispitavanje da li je slobodan displej

ulazni parametri: nemaizlazni parametri: nemafunkcija: čeka dok se ne oslobodi displej

;*********** WAIT UNTIL BF=1 *****WTBUSY: SETB RWLCD ; RD

CLR RSLCD ; STATUS REGWTBUSY1:SETB ENLCD JNB P0.7, WTEND ; D7=1 BUSY

CLR ENLCD SJMP WTBUSY1

WTEND: CLR ENLCD RET

4.3.6 kreiranje simbola

ulazni parametri: nemaizlazni parametri: nemafunkcija: kreira simbole za upaljenu i ugašenu diodu

;*********** KREIRANJE KARAKTERA **********CHAR_SET:

MOV A, #48HLCALL DCOMWMOV DPTR, #ONSTRLCALL DSTRWMOV DPTR, #OFFSTRLCALL DSTRWRET

4.4 Funkcije za slanje i primanje podataka:

4.4.1 inicijalizacija serijskog porta

ulazni parametri: nemaizlazni parametri: nemafunkcija: inicijalizuje usart na 9600bps

; ****** INIT INTERNOG UARTA **********;***************************************SERINI:

MOV A,#0FDH ; 9600MOV 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

4.4.2 primi podatke

ulazni parametri: T_OUTizlazni parametri: C, ADRX, COMDATA maksimalno do BUFEND, S_ADRfunkcija: čeka podatke dok ne istekne vreme T_OUT*0.5mS. Ako je u T_OUT 00H beskonačno čekanje dok ne stignu podaci.

Page 34: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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, #00HMOV SIPTR, #COMBUF

GET4: MOV A, T_OUTJZ GET3MOV R1, AMOV R2, #0F0H

GET1: JB RI, GET2DJNZ R2, GET1MOV R2, #0F0HDJNZ R1, GET1LJMP GDERR

GET3: JNB RI, $GET2: CLR RI;******SERIAL -> BUFFER*************************

MOV A, SBUFMOV B, AADD A, CHECKSUMMOV CHECKSUM, AMOV A, BMOV R0, SIPTRMOV @R0, AINC SIPTRXRL A, #END_CHARJZ IS4MEMOV A, #BUFEND+1XRL A, SIPTRJZ GDERRLJMP GET4

;***** IS4ME ***********************************IS4ME:

MOV A,COMBUFCJNE A,#ST_CHAR, GDERR

MOV A,DSTADRHLCALL ATOHEXJNC GDERR ; NIJE ASCI-HEXSWAP AMOV B,A ; PRICUVAJ TEZA CETIRI BITA DEST. ADRESEMOV A,DSTADRL

Page 35: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

LCALL ATOHEXJNC GDERR ; NIJE ASCI-HEXADD A,B ; DEST ADRESA KOMPLETIRANACJNE A,#MY_ADR, IS4ALL ; GO IF NOT MY_ADRSJMP IS42

IS4ALL:CJNE A, #BRADR, GDERR

MOV S_ADR, A ;SACUVAJ PODATAK DA LI JE ZA MENE ILI ZA SVEIS42: MOV A, SRCADRH

LCALL ATOHEXJNC GDERR ; NIJE ASCI-HEXSWAP AMOV B,A ; PRICUVAJ TEZA CETIRI BITA SOURCE ADRESEMOV A,SRCADRLLCALL ATOHEXJNC GDERR ; NIJE ASCI-HEXADD A,B ; SOURCE ADRESA KOMPLETIRANAMOV ADRX,A ; SMESTI HEX ADRESU POSILJIOCA

MOV R0, SIPTRDEC R0MOV @R0, #00H ; 00H NA KRAJU PORUKE

;******PROVERA CHECKSUME************CHCHSUM:DEC R0

MOV A, CHECKSUMCLR CSUBB A, @R0DEC R0CLR CSUBB A, @R0CLR CSUBB A, #'@'MOV CHECKSUM, A ;PRICUVAJ CHECKSUM

MOV A, @R0LCALL ATOHEXJNC GDERRSWAP AMOV B,AINC R0MOV A, @R0LCALL ATOHEXJNC GDERRORL A,BCJNE A, CHECKSUM, GDERR

SETB CRET

GDERR: CLR CRET

4.4.3 pošalji podatke

ulazni parametri: ADRX, COMDATA+x do 00hizlazni parametri: nemafunkcija: 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

Page 36: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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 primaoca01 -adresa pošiljaocaovde_se_šalju_podaci-poruka za slanje5A -checksum (npr.)@ -stop karakter

Sve što se šalje je ASCII kodirano, i to samo znacima:0123456789 -30h do 39hABCDEFGHIJKLMNOPQRSTUVWXYZ -41h do 5Ah! -21h@ -40h

;*****SLANJE PODATAKA***************************;***********************************************INITTI:

MOV R1, #00H ;ZA CHECKSUMMOV A, ADRX ;ADRESA KOJOJ SE SALJESWAP ALCALL HEXTOAMOV DSTADRH, AMOV A, ADRXLCALL HEXTOAMOV DSTADRL, AMOV COMBUF, #ST_CHAR

MOV A, #MY_ADR ;ADRESA POSILJAOCASWAP ALCALL HEXTOAMOV SRCADRH, AMOV A, #MY_ADRLCALL HEXTOAMOV SRCADRL, A

MOV SIPTR, #COMBUFSETB EN485TX

TILOOP: JNB TI, $CLR TIMOV R0, SIPTRMOV A, @R0JZ TIENDMOV SBUF, AADD A, R1MOV R1, AINC SIPTRSJMP TILOOP

TIEND: MOV A, R1 ;NAPRAVI HI-HEXCHECKSUM U ASCIISWAP A

Page 37: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

LCALL HEXTOAMOV SBUF, AJNB TI, $CLR TIMOV A, R1 ;NAPRAVI LOW-HEXCHECKSUM U ASCIILCALL HEXTOAMOV SBUF, AJNB TI, $CLR TIMOV SBUF, #END_CHARJNB TI, $CLR EN485TXRET

4.5 Funkcije za generisanje slučajnih vrednosti

4.5.1 random init

ulazni parametri: nemaizlazni parametri: nemafunkcija: inicijalizuje pseudo-nasumičnu sekvencu u zavisnosti od sopstvene adrese

;***KORISTI SE A,B,R7* RANDOM_INIT:

MOV RN1,#0F7H ; POCETAK MOV RN2,#35HMOV RN3,#55HMOV RN4,#4EH

MOV R7,#0FFHM12: LCALL RANDOM

DJNZ R7,M12

MOV R7, #MY_ADR+1M13: LCALL RANDOM

DJNZ R7,M13RET

4.5.2 random

ulazni parametri: nemaizlazni parametri: Afunkcija: generiše nasumičnu vrednost u A

;****VRACA RANDOM VREDNOST U ACC**********RANDOM: ;FUNCTION

PUSH BMOV B,#8 ;LOOP 8 TIMES TO HAVE THE ENTIRE BYTE CHANGE

;FROM ONE CALL TO ANOTHERLOOP8: MOV A,RN1

MOV C,ACC.1MOV TMPBIT,#0MOV TMPBIT.0,C ;BIT 1 IN TMPBITMOV C,ACC.5PUSH ACCCLR A

Page 38: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

RLC AXRL A,TMPBITMOV TMPBIT,ACC ;BIT 1 XOR BIT 5 IN TMPBIT

POP ACCMOV C,ACC.6CLR ARLC AXRL A,TMPBITMOV TMPBIT,ACC ;BIT 1 XOR BIT 5 XOR BIT 6 IN TMPBITMOV A,RN4MOV C,ACC.6CLR ARLC AXRL 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,RN4RRC AMOV RN4,AMOV A,RN3RRC AMOV RN3,AMOV A,RN2RRC AMOV RN2,AMOV A,RN1RRC AMOV RN1,A

DJNZ B,LOOP8

POP BRET

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

Page 39: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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

;******* TIMER CONTROL BITOVI ***********T2CONEQU 0C8HTF2 EQU T2CON.7TR2 EQU T2CON.2

;******* TASTERI ************************SELECT EQU P1.2SEL_EN EQU P1.4ENTER EQU P2.0ENT_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 ADRESABRADREQU 0FFH ; BROADCAST ADRESA

ON EQU 01HOFF EQU 02HST EQU 7EH

;**** 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 10HSIPTR EQU 0AH ; POINTER NA TRANSMIT BAFERS_ADR EQU 0BH ; POINTER ZA ULAZ KOMANDECHECKSUM EQU 0CH

COUNTS EQU 20HCOUNTE EQU 21HSTAT EQU 22H TF EQU 0

Page 40: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

RF EQU 1MASTER EQU 2STREC EQU 23HU1 EQU 0U2 EQU 1U3 EQU 2

;**** STRUKTURA KOMUNIKACIONOG BAFERA COMBUF EQU 30H ; START CHARADRX 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 00HBUFEND EQU 5FH ; MAX.KRAJ BAFERA

4.6.2 inicijalizaciona sekvenca:

funkcija:definiše stackupisuje u celu internu memoriju 00hpostavlja RS485 drajver u recieve modspušta na masu po jedan kraj tastera ENTER i SELECTobavlja inicijalizaciju displeja, definisanje karaktera, inicijalizaciju serijkog

porta

ORG 0 LJMP INIT ORG 03HE0INT: RETI ; INT0 (NE KORISTI SE) ORG 0BHT0INT: RETI ; TIMER0 INT (NE KORISTI SE) ORG 13HE1NT: RETI ; INT1 EXT ARGINE (NE KORISTI SE) ORG 1BHT1INT: RETI ; TIMER1 INT (NE KORISTI SE) ORG 23HINTSER: RETI ; RI/TI INT INTERNI (NE KORISTI SE) ORG 2BHT2INT: RETI ; TIMER2 INT(NE KORISTI SE)

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

INIT:MOV SP, #STCKMOV R0,#7FH MOV A,#00H

FILL00:MOV @R0,A ; INT MEM =00DJNZ R0, FILL00

CLR EN485TX ; RS485 U RECEIVE MODUCLR SEL_EN ; DRUGI KRAJ SELECT TASTERA NA MASUCLR ENT_EN ; DRUGI KRAJ ENTER TASTERASETB STAT.MASTER

Page 41: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

LCALL SERINILCALL DISPINILCALL CHAR_SET

4.6.3 MAIN petlja

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

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

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

MOV A, #080HLCALL DCOMW

MOV DPTR, #MSG2LCALL DSTRW

MOV A, #0C0HLCALL DCOMW

MOV DPTR, #MSG3LCALL DSTRW

MOD0: JNB SELECT, SEL_PRESSJNB ENTER, ENT_PRESSSJMP MOD0

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

LCALL OBR_SEL

JNB SELECT, $ ;SACEKAJ DA SE PUSTI TASTERMOV R7,#60 ; 60mS - VIBRACIJA TASTERALCALL WAIT1SJMP MOD0

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

LCALL OBR_ENT

JNB ENTER, $ ;SACEKAJ DA SE PUSTI TASTERMOV R7,#60 ; 60mS - VIBRACIJA TASTERALCALL WAIT1SJMP MOD0

Page 42: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

4.6.4 Obada tastera ENTER

funkcija:ažurira displejpravi pakete za slanje u zavisnosti od trenutnog stanja (koje menja

korisnik)inicira slanje podatakaproverava odgovore za pojedinačna slanjaproverava odgovore za broadcast (koji stižu u nasumično vreme)

;****** OBRADA TASTERA ENTER ************OBR_ENT:

MOV A, COUNTEXRL A, #00HJZ ENT1 ;TRUE= PRELAZI U STANJE 1MOV A, COUNTEXRL A, #01HJZ ENT2 ;TRUE= PRELAZI U STANJE 2MOV A, COUNTEXRL A, #02HJZ ENT0 ;TRUE= PRELAZI U STANJE 0

ENT0: MOV COUNTE, #00H ;MOV A, #PRVIR ;LCALL DCOMW ;MOV DPTR, #MSG2;LCALL DSTRW ;MOV A, #DRUGIR ;VRATI START EKRANLCALL DCOMW ;MOV DPTR, #MSG3;LCALL DSTRW ;LJMP EXITENT ;

ENT1: MOV COUNTE, #01HMOV ADRX, COUNTS ;STAVI U ADRESU ZA SLANJEMOV S_ADR, COUNTS ;STAVI U ADRESU ZA PROVERU ODGOVORAMOV A, #DRUGIRLCALL DCOMWMOV A, #STLCALL DDATAWMOV A, #PRVIRLCALL DCOMWMOV A, #' 'LCALL DDATAWLJMP EXITENT

ENT2: MOV COUNTE, #02HMOV A, #DRUGIR+8LCALL DCOMWMOV DPTR, #MSG7;STAVI ......LCALL DSTRWMOV A, COUNTSXRL A, #08H ;DA LI JE SLANJE PAKETA?JNZ ENT3MOV COMDATA, #'M' ;SLANJE PAKETA.....MOV COMDATA+1, #00HSJMP ENT4

Page 43: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

ENT3: MOV A, COUNTS ;SLANJE STANJA ZA DIODICE.....LCALL HEXTOAMOV COMDATA, #'D'MOV COMDATA+1, A ;SLANJE STANJA ZA DIODICE.....MOV COMDATA+2, #00H

ENT4: LCALL INITTI ;INICIRAJ TRANSMITMOV A, S_ADRXRL A, #0FFH ;DA LI JE BROADCAST?JZ RNDCHK

ENT5: MOV T_OUT, #0FFH ;CEKAJ 0.5S NA ODGOVORLCALL GETDATAJC ENT20 ;DA LI JE PRIMLJENA ISPRAVNA PORUKA ZA MENE?

ENT22: MOV A, #DRUGIR+8LCALL DCOMW ;NIJEMOV DPTR, #MSG4LCALL DSTRWMOV A, S_ADRLCALL HEXTOALCALL DDATAWSJMP EXITENT

ENT20: MOV A, COMDATA ;JESTE, PROVERI DA LI JE FORMAT 'OK'XRL A, #'O'JNZ ENT22MOV A, COMDATA+1XRL A, #'K'JNZ ENT22MOV A, ADRXXRL A, S_ADRJNZ ENT22 ;ERROR

ENT21: MOV A, #DRUGIR+8LCALL DCOMWMOV DPTR, #MSG5;OK JELCALL DSTRW

EXITENT:MOV COUNTS, #00HRET

;****** PROVERA ODGOVORA ZA BROADCAST ***************RNDCHK:

MOV STREC, #00HMOV T_OUT, #00HSETB TR2MOV R1, #22

RND1: JB RI, JTOGETJNB TF2, RND1CLR TF2DJNZ R1, RND1CLR TR2JB STREC.U1, RND4MOV A, #DRUGIR+8LCALL DCOMWMOV DPTR, #MSG10LCALL DSTRW

RND4: JB STREC.U2, EXITENTMOV A, #DRUGIR+11

Page 44: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

LCALL DCOMWMOV DPTR, #MSG11LCALL DSTRWSJMP EXITENT

JTOGET: LCALL GETBRJNC RND1MOV A, ADRXCJNE A, #01H, RND2SETB STREC.U1MOV A, #DRUGIR+8LCALL DCOMWMOV DPTR, #MSG8LCALL DSTRW

RND2: MOV A, ADRXCJNE A, #02H, RND3SETB STREC.U2MOV A, #DRUGIR+11LCALL DCOMWMOV DPTR, #MSG9LCALL DSTRW

RND3: SJMP RND1

4.6.5 Obrada tastera SELECT

funkcija:ažurira displejmenja trenutno stanje

;****** OBRADA TASTERA SELECT ************OBR_SEL:

MOV A, COUNTEXRL A, #00HJZ SEL0 ;TRUE= ENTER STANJE 0MOV A, COUNTEXRL A, #01HJZ SEL1 ;TRUE= ENTER STANJE 1MOV A, COUNTEXRL A, #02HJNZ SEL0LJMP SEL2 ;TRUE= ENTER STANJE 2

SEL0: INC COUNTSMOV A, COUNTSCJNE A, #03H , SEL01MOV COUNTS, #0FFH ;BROADCAST ADRESA FFMOV A, #PRVIR+10LCALL DCOMWMOV DPTR, #MSG1LCALL DSTRWSJMP SELEND

SEL01: MOV A, #PRVIR+10LCALL DCOMWMOV A, COUNTSLCALL HEXTOALCALL DDATAWMOV A, #' 'LCALL DDATAW ;DVA PRAZNA MESTALCALL DDATAW

Page 45: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

SJMP SELENDSEL1: INC COUNTS

MOV A, COUNTSCJNE A, #09H, SEL12MOV COUNTS, #00H

SEL12: MOV A, #DRUGIR+11LCALL DCOMWMOV A, COUNTSJB 3, SEL10 ;VECI JE OD 7H; NIJE ZA DIODEJB 2, SEL5MOV A, #OFFLCALL DDATAWSJMP SEL6

SEL5: MOV A, #ONLCALL DDATAW

SEL6: MOV A, COUNTSJB 1, SEL7MOV A, #OFFLCALL DDATAWSJMP SEL8

SEL7: MOV A, #ONLCALL DDATAW

SEL8: MOV A, COUNTSJB 0, SEL9MOV A, #OFFLCALL DDATAWSJMP SELEND

SEL9: MOV A, #ONLCALL DDATAWSJMP SELEND

SEL10: MOV DPTR, #MSG6LCALL DSTRWSJMP SELEND

SEL2: LJMP ENT0 ;KAO DA JE PRITISNUT ENTERSELEND: 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

Page 46: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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

;******* TASTERI ************************SELECT EQU P1.2SEL_EN EQU P1.4ENTER EQU P2.0ENT_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 01H ; MOJA ADRESABRADREQU 0FFH ; BROADCAST ADRESA

ON EQU 01HOFF 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 11HRN2 EQU 12HRN3 EQU 13HRN4 EQU 14H

TMPBIT EQU 27H

;******* RAM ****************************T_OUT EQU 10HSIPTR EQU 0AH ; POINTER NA TRANSMIT BAFERS_ADR EQU 0BH ; POINTER ZA ULAZ KOMANDECHECKSUM EQU 0CH

Page 47: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

COUNTS EQU 20HCOUNTE EQU 21HSTAT EQU 22H TF EQU 0RF EQU 1MASTER EQU 2

;**** STRUKTURA KOMUNIKACIONOG BAFERA COMBUF EQU 30H ; START CHARADRX 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 00HBUFEND EQU 5FH ; MAX.KRAJ BAFERA

4.7.2 inicijalizaciona sekvenca:

funkcija:definiše stackupisuje u celu internu memoriju 00hpostavlja RS485 drajver u recieve modspušta na masu po jedan kraj tastera ENTER i SELECTobavlja inicijalizaciju displeja, definisanje karaktera, inicijalizaciju serijkog

portaORG 0 LJMP INIT ORG 03HE0INT: RETI ; INT0 (NE KORISTI SE) ORG 0BHT0INT: RETI ; TIMER0 INT (NE KORISTI SE) ORG 13HE1NT: RETI ; INT1 EXT ARGINE (NE KORISTI SE) ORG 1BHT1INT: RETI ; TIMER1 INT (NE KORISTI SE) ORG 23HINTSER: RETI ; RI/TI INT INTERNI ORG 2BHT2INT: RETI ; TIMER2 INT(NE KORISTI SE)

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

INIT:MOV SP, #STCKMOV R0,#7FH MOV A,#00H

FILL00:MOV @R0,A ; INT MEM =00DJNZ R0, FILL00

CLR EN485TX ; RS485 U RECEIVE MODUCLR SEL_EN ; DRUGI KRAJ SELECT TASTERA NA MASUCLR ENT_EN ; DRUGI KRAJ ENTER TASTERASETB STAT.MASTER

Page 48: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

LCALL SERINI

LCALL RANDOM_INIT

4.7.3 MAIN petlja

funkcija:poziva funkciju za prijem podatakaobrađuje primljene podatkešalje odgovoreažurira stanje na LED diodama

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

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

MOV T_OUT, #00HLCALL GETDATAJNC SLAVEMOV A, COMDATAXRL A, #'D' ;UPALI DIODEJZ KOMAND1MOV A, COMDATASJMP SLAVE

KOMAND1:MOV A, COMDATA+1LCALL ATOHEXSWAP ARL ACPL AORL A, #1FHMOV P2, A

MOV A, S_ADRMOV S_ADR, #00HXRL A, #0FFHJNZ KOM11LCALL RANDOMANL A, #7FHMOV R4, ALCALL WAIT10

KOM11: MOV COMDATA, #'O'MOV COMDATA+1, #'K'MOV COMDATA+2, #00HLCALL INITTILJMP SLAVE

Page 49: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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.

Page 50: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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

Page 51: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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.

Page 52: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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

Page 53: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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 karakter01- Šaljem uređaju sa adresom 100- Moja adresa je 0 (master)D- Upali diode3- 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@ asciiSlave 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?****

Page 54: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

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 ALL2. 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...)

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.

Page 55: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

8 Literatura

1. AT89S8253 dokumentacija – www.atmel.com2. SN75176 dokumentacija – Texas Instruments2. Procesori, programski jezici i hardversko-softverske karakteristike embedded sistema – Mile Stojčev3. Računarske mreže i prenos podataka – Mile Stojčev

Page 56: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

9 Dodatak

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

Page 57: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

Layout gornje strane PCB-a

Page 58: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

Layout donje strane PCB-a

Page 59: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

Algoritam programa za master modul

inicijalizacija

Set displej Adresa = counts Poruka = counts

Stanje = 2 Set displej

Stanje = 3

Set displej

Iniciranje slanja

Cekanje odgovora

Kom = OK Kom = err

Counts++ Counts++ Stanje = 1

Counts = 0 Counts = 0

Set displej Set displej

start

Stanje = 1

while (1)

switch taster

switch stanje switch stanje

Switch taster

counts > 4 counts > 8

start ekran (1)

Biranje adrese uredjaja (2)

slanje podataka

(3)(1) (2)

pritisnut enter pritisnut select

(3)

F F

FT

Page 60: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

Algoritam programa za slave modul

inicijalizacija

start

while (1)

databuf[0] = ‘!”

databuf[1..2] = my address

format poruke OK

primljena poruka ?

obrada poruke i promena stanja na diodama

odgovor “OK” ERROR

Page 61: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

Sanja Tomić

Ime: SanjaPrezime: TomićDatum i mesto rođenja: 04.08.1984. SurdulicaBračno stanje: NeudataAdresa stanovanja: Čarnojevića 6/29, NišObrazovanje: Gimnazija ‚‚Jovan Skerlić‘‘ – Vladičin HanGodina upisa naElektronski fakultet:

2003.

Smer: ElektronikaPoznavanje jezika: EngleskiPoznavanje softvera: Protel, mikroC, MSofficeInteresovanja: 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

Page 62: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

Stevan Marinković

Ime: StevanPrezime: MarinkovićDatum i mesto rođenja: 11.10.1984. NišBračno stanje: NeoženjenAdresa stanovanja: Bulevar Nemanjića 78/20, NišObrazovanje: Gimnazija ‚‚Svetozar Marković‘‘ – NišGodina upisa naElektronski fakultet:

2003.

Smer: ElektronikaPoznavanje jezika: Engleski, NemačkiPoznavanje softvera: Active HDL, uClinux, C#, Protel, mikroC, MSofficePoznavanje programskih jezika

Assembler, C, C++, C#, VHDL

Interesovanja: Programiranje, Pilotiranje, Plivanje, Tenis Radovi: 1. Microcontroler system for temperature regulation with GSM

support - ETRAN, Herceg novi, 20072. Portable system for heartbeat and respiration measurement - INDEL, Banja Luka , 2006

Dosadašnji projekti: 1. Embedded sistem sa Blackfin procesorom i uClinux operativnim sistemom2. Real-time operativni sistem koji ispisuje podatke na 4 led displeja i čita 12 tastera sa ¼ duty ciklusom3. Digitalni deo LCD drajvera koji može upravljati sa 168 displej segmenata sa ¼ duty ciklusom i tri naponska nivoa4. Robot sa 4 točka upravljan preko RF veze5. Mikrokontrolerski sistem za temperaturnu regulaciju upravljan SMS porukama

Page 63: es.elfak.ni.ac.rses.elfak.ni.ac.rs/Files/STomic - SMarinkovic - Projekat... · Web viewSledeći korak je programiranje i postiže se sa Device/Program, gde se čekira Flash + EEPROM

Dosadašnji projekti - nastavak:

6. Analogni i digitalni deo sistema za merenje broja otkucaja srca u minuti i broja udisaja u minuti7. 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 2002Učesnik u timu koji je predstavljao Elektronski fakultet u Nišu na tri međunarodna takmičenja studenata elektronike Hard&Soft.