univerzitet u beogradu elektotehni~ki fakultetemp.etf.rs/radovi/diplomski/nenad_nedeljkovic.pdf ·...
TRANSCRIPT
UNIVERZITET U BEOGRADU
Elektotehni~ki fakultet
NEDELJKOVI] NENAD
PROJEKTOVANJE MIKRORA^UNARSKOG SISTEMA ZA RAZVOJ ALGORITAMA UPRAVLJANJA ELEKTROMOTORNIM POGONIMA I
ENERGETSKIM PRETVARA^IMA
- diplomski rad -
Beograd 1996.
2
SADR@AJ I Uvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 II Realizacija po~etnih zahteva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 III Mikroprocesor 8031 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 III.1 Opis funkcija pinova . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 III.2 Hardverska struktura portova . . . . . . . . . . . . . . . . . . . . . . . . 11 III.3 Interni RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 III.4 Registri op{te namene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 III.5 Broja~i i tajmeri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 III.6 Seriski interfejs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 III.7 Prekidi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 IV Opis podsistema mikrora~unara . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 IV.1 PAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 IV.2 Memorijski deo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 IV.3 Enkoderski deo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 IV.4 Displej . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 IV.5 Deo sa A/D i D/A konvertorima . . . . . . . . . . . . . . . . . . . . . . 33 IV.6 Deo sa konektorima . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 V Memorijska mapa mikrora~unara . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3
VI Zaklju~ak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 VII Prilog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Literatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
I UVOD
4
Diplomski rad bavi se projektovanjem ({eme i {tampe) mikrora~unarskog sistema za razvoj i ispitivanje algoritama (programa) upravljanja elektromotornim pogonima i energetskim pretvara~ima, prema specifikaciji datoj na slici 1.
sl.1
Tako|e, mikrora~unarski sistem mora imati mogu}nost prijema programa za upravljanje sa personalnog ra}unara i njegovo sme{tanje u RAM, startovanja i izmene tog programa. Prema tome, mikrora~unarski sistem mora biti povezan serijskom vezom (RS-232 standardom) sa personalnim ra~unarom. Ovim se izbegava stalno skidanje i reprogramiranje EPROM-a.
II REALIZACIJA PO^ETNIH ZAHTEVA
5
Za osnovu mikrora~unarskog sistema usvojio sam INTEL-ov 8-bitni mikroprocesor 8031. U delu III bi}e vi{e re~i o μP 8031.
Mikroprocesor 8031 ima dvosmerni serijski port, koji omogu}ava serijsku komunikaciju tako da nije potreban serijski interfejs. Potrebno je kolo koje }e RS-232 ulaz i izlaz prilagoditi TTL standardu (komponentama). Za tu svrhu upotrebio sam kolo MAX 232. RS-232 ulaz i izlaz su preko termalnih otpornika vezani na kolo MAX 232. Mikrora~unar je serijskom vezom povezan sa personalnim ra~unarom.
Kako 8031 ne sadr`i A/D konvertor, mora postojati spoljni konvertor. Upotrebio sam A/D konvertor AD571 sa rezolucijom od 10 bita. Analogni izlaz zadaje se preko 8-bitnog D/A konvertora AM1408L8. Naponski nivo analognog ulaza i izlaza se kre}e od 0V do +10V. Analogni ulaz i izlaz se ne dovode direkno na konvertore, ve} preko jedini~nih poja~ava~a, o ovome }e biti vi{e re~i u delu IV.5.
Sa postoje}eg enkodera u laboratoriji, dolaze ~etiri faze impulsa, me|usobno pomerene za ±90° u zavisnosti od smera obrtanja. Da bismo znali o kom smeru obrtanja se radi, moramo izvr{iti dekodovanje ovih signala. Realizacija dela za dekodovanje data je na slici 8. Tako|e, dekodovane impulse terba brojati i u `eljenom trenutku upamtiti, da bi μP mogao odrediti brzinu (polo`aj). Obja{njenje i realizacija delova za dekodovanja, brojanja i pam}enja broja impulsa dato je u delu IV.3.
Displej ~ine ~etiri osmosegmentna displeja. Uz svaki displej potreban je spoljni registar (74373) u kojem se upisuje vrednost koja se `eli prikazati na displeju. Realizacija displeja prikazana je na slici 9, a obja{njenje je dato u delu IV.4.
Za interfejse usvojio sam INTEL-ov spoljni programabilni paralelni interfejs 8255. Ovaj interfejs ima kontrolni registar i tri data registra u kojima se mo`e upisivati i ~itati. Ova tri registra su povezana na spoljne no`ice (pinove) tako da ~ine tri porta A,B i C. Portovi A,B,C i kontrolni registar moraju imati svoje zasebne adrese. Port C slu`i za programiranje logike rukovanja, ako nema rukovanja port C slu`i kao obi~an ulazno/izlazni port. U relizaciji nije potrebna logika rukovanja, tako da je nije potrebno objasniti. Za povezivanje postoje}ih perifernih ure|aja patrebna su dva interfejsa 8255. Na jednom su vezani A/D i D/A kovertori (PIA0), a na drugom dispjej i enkoderski deo (PIA1). Na~in
6
povezivanja, ovih periferiskih ure|aja sa 8255 i μP sa 8255, dat je na slici 7. Obja{njenje za svaki ure|aj je dato u delovima koji govore o tim ure|ajima.
Mikroprocesor 8031 ima dva pina na kojima daje signale za ~itanje iz programske memorije (PSEN#) i ~itanje iz RAM-a (RD#). To zna~i da postoje dva nezavisna adresna prostora, jedan za program, a drugi za podatke. Kako adresa ovog μP ima 16 bita, memorijski prostor je du`ine 64KB. Mikroprocesor se perifernim ure|ajima obra}a kao memoriji, preko paralelnih interfejsa, tj. svaki ure|aj ima svoju adresu. Prema tome, ceo adresni prostor za podatke ne mo`emo popuniti sa RAM-om ve} jedan deo prostora treba ostaviti za periferne ure|aje. Spoljni RAM ~ine ~etri ~ipa 6264 od po 8KB, {to ukupno ~ini 32KB. Preostali deo ovog prostora namenjen je za adresiranje periferije, preko paralelnih interfejsa 8255. Programska memorija je, tako|e, maksimalne du`ine 64KB, me|utim sasvim je dovoljno 32KB, tako da sam upotrebio EPROM 27256 od 32KB. Vi{e o memorijama bi}e re~i u delu IV.2.
Memorijski prostor za podatke sastoji se od ~etiri ~ipa RAM-a i dva ~ipa paralelnih interfejsa. Ovi ~ipovi }e biti aktivni (mo`e se upisivati ili ~itati iz njih) samo kada su selektovani, tj. kada je na njihovim odgovaraju}im pinovima za selekciju ~ipa aktivan nivo (nizak nivo). Treba izvr{iti raspodelu ovog prostora, tako da svaki ~ip obuhvati po jedan deo ovog prostora, bez preklapanja. Kada se izbaci adresa na adresnu magistralu mora biti aktivan samo jedan ~ip i to onaj u ~ijem prostoru se nalazi ova adresa. Da bi ovo postigli moramo izvr{iti dekodovanje adrese. Za dekodovanje adrese koristim kolo PAL, o kome }e biti vi{e re~i u delu IV.1. Raspored u prostoru za podatke, tj. memorijska mapa mikrora~unara data je u odeljku V.
Osnovna ideja je mogu}nost eksternog (spoljnjog) prijema programa za regulaciju, serijskom vezom (RS-232 standardom) sa personalnog ra~unara, njegovo sme{tanje u spoljni RAM, start tog programa (iz RAM-a), a samim tim i start regulisanog pogona. Problem kod ove ideje je start i ~itanje programa iz RAM-a. Moramo na neki na~in dovesti signal za ~itanje iz programske memorije (PSEN#) na RAM u `eljenom trenutku, tj. kada `elimo da o~itamo une{eni program. Ovo se re{ava logi~kom funkcijom (1) datom u odeljku IV.2. Ova logi~ka funkcija realizovana je PAL kolom.
Za napajanje upotrebljenih integralnih kola potreban je stabilisani napon od +5V. Za dva postoje}a operaciona poja~ava~a (slu`e za relizaciju jedini~nih poja~ava~a kod analognog ulaza i izlaza) potrebni su naponi od +15V i -15V. Predvi|eno napajanje mikrora~unara je +8V koje se dovodi na ugra|eni stabilizator napona (7805) koji daje stabilan napon od+5V. Ovo je predvi|eno da bi se, preko mikrora~unara, mogle napajati druge kartice u sistemu. Naponi od
7
+15V i -15V se dovode stabilisani. Tako|e, na sva napajanja (integralnih kola) uz samo kolo stavlja se raspre`ni kondezator od 100nF.
Digitalni izlazi/ulazi su preostali neiskori{}eni pinovi mikroprocesora (8031) a to su: prvih {est pinova porta P1 i pinovi 2,3,4,5 porta P3. Ovi izlazi/ulazi nisu galvanski izolovani i preko R-C filtera vezani su za konektore.
Svi ulazi i izlazi vezani su na devetopinske konektore. Potrebno je pet devetopinskih konektora da bi se svi ulazi i izlazi sa mikrora~unara realizovali. Vi{e o konektorima bi}e re~i u odeljku IV.6.
U izradi {eme i {tampe koristio sam programske pakete ORCAD i TANGO. U ovom radu bi}e prikazana {ema i fizi~ki raspored komponenti na {tampanoj plo~i zbog komplikovanosti veza. Na sl.7 u odeljku VII data je {ema celog mikrora~unara, a na slikama 8 i 9 date su {eme displeja i dela za dekodovanje impulsa sa enkodera. Na slici 10 dat je fizi~ki raspored komponenti na {tampanoj plo~i. Sve potrebne komponente treba smestiti na karticu (plo~u) dimenzija 200x160mm (dvostruki euro format).
U daljem tekstu na~in funkcionisanja pojedinih delova bi}e obja{njen na primeru regulisanog pogona jednsmerne struje, radi lak{eg razumevanja.
III MIKROPROCESOR 8031
8
Na sl. 3 prikazan je raspored no`ica (pinova) mikroprocesora 8031. Postoje dve no`ice na kojima μP daje signale, za ~itanje iz programske memorije (PSEN#) i za ~itanje iz RAM-a (RD#). To zna~i da postoje dva nezavisna adresna prostora, jedan za program, a drugi za podatke. Tre}i nezavisni adresni prostor je interni RAM.
sl.2
Ako su signali, na {emama, slikama i u tekstu, nadvu~eni (imaju crtu iznad oznake) ili imaju znak #, iza oznake to zna~i da je aktivan nivo signala nizak, a pasivan visok.
Mo`da je ispravnije za μP 8031 koristiti termin mikrokontroler umesto mikroprocesor, jer 8031 na istom ~ipu osim mikroprocesora sadr`i i niz perifernih jedinica, ali u daljem tekstu zadr`a}u termin mikroprocesor.
Mikroprocesor 8031 sadr`i slede}e komponente:
9
• 8-bitni procesor (CPU)
• 128 (256) bajta internog RAM-a
• Oscilator i generator takta
• 16 ulazno/izlaznih linija (portovi P3 i P1)
• 16 linija namenjenih za adresiranje memorije (portovi P0 i P2), i za prihvat ili slanje podataka (port P0)
• Dva 16-bitna tajmera (broja~a)
• Pet odvojenih izvora interapta (prekida) sa dva nivoa prioriteta
• Dvosmerni serijski port za asinhronu komunikaciju
III.1 Opis funkcija pinova
Sa sl.1 se vidi da μP 8031 ima 40 pinova (no`ica).
• 1 do 8 (Port 1): svaki od ovih pinova mo`e se koristiti kao ulazni ili kao izlazni, prema potrebi.
• 9 (Reset): visok logi~ki nivo na ovom ulazu resetuje sve interne registre (dovodi ih u stanje 00000000), sa slede}im izuzecima: P0,P1,P2,P3 se dovode u stanje 11111111; SBUF se ne menja; SP se dovodi u stanje 00000111 (07h); interni RAM se ne menja.
Najva`nija posledica aktiviranja RESET ulaza je da se PC (programski broja~) resetuje, tako da }e zapo~eti izvr{avanje programa od adrese 0000h. Hardverski je re{eno da se ovaj ulaz automatski aktivira jednom po uklju~enju ure|aja na napajanje i posle toga je stalno nizak.
• 10 do 17 (Port 3): ako se koristi kao univerzalni ulaz ili izlaz, po svemu je sli~an portu 1, ali na svakom pinu ima specifi~nu funkciju:
10
• 10 (P3.0) RXD - serijski ulaz za asinhronu komunikaciju (mod 1,2 i 3) ili serijski izlaz za sinhronu komunikaciju (mod 0)
• 11 (P3.1) TXD-serijski izlaz za asinhronu komunikaciju (mod 1,2 i 3) ili taktni (clock) izlaz za sinhronu komunikaciju (mod 0)
• 12 (P3.2) INT0-ulaz za interapt (prekid) 0
• 13 (P3.3) INT1-ulaz za prekid 1
• 14 (P3.4) T0-ulaz spoljnog takta za broja~ 0
• 15 (P3.5) T1-ulaz spoljnog takta za broja~ 1
• 16 (P3.6) WR#-signal za upis u spoljnu memoriju (RAM)
• 17 (P3.7) RD#-signal za ~itanje iz spoljne memorije (RAM)
• 18 i 19 (X1 i X2): ulaz i izlaz internog oscilatora. Ako se koristi kvarc-kristal za stabilizaciju u~estanosti, on se vezuje za ova dva pina, s tim {to treba ugraditi jo{ po jedan kondenzator od 20-40 pF sa svakog od ovih pinova prema masi. Opseg u~estalosti je od 1 do 12 MHz, a izra|uju se μP koji rade i sa ve}om u~estano{}u.
• 20 (masa)
• 21 do 28 (Port 2 ili adrese A8 do A15): port 2 je adresni izlaz i to za vi{i bajt adrese.
• 29 (PSEN#): normalno se ovaj izlaz spaja sa CS# ili OE# ulazom na spoljnom EPROM-u, jer ga μP aktivira (dovodi na nizak nivo) svaki put kad ~ita bajt iz programske memorije
• 30 (ALE): kako port P0 ima dve funkcije izlaza adresa A0-A7 i ulaz / izlaz podataka D0-D7, pre svakog o~itavanja programa iz spoljne memorije ili obra}anja RAM-u μP }e na P0 proslediti ni`i bajt adresnog registra i aktivirati izlaz ALE. Spoljni registar (74373 ili 74573) }e na visok nivo ALE memorisati stanje P0 i izlaze ovog registra koristiti kao adrese A0-A7. U drugom delu ma{inskog ciklusa P0 }e se koristiti ili kao ulaz ili izlaz za podatke.
11
• 31 (EA#): ako je ovaj ulaz nizak, μP }e sve instrukcije ~itati iz spoljneg EPROM-a
• 32 do 39 (Port 0): sli~no portu 2 i port 0 mo`e se koristiti za univerzalni ulaz i izlaz samo ako nema spoljne memorije. Ako postoji spoljna memorija onda je P0 adresni izlaz za ni`i bajt adrese (A0-A7) kada je ALE visok, a kada je ALE nizak kao ulaz /izlaz podataka.
• 40: napajanje +5V
III.2 Hardverska struktura portova.
Videli smo da postoje ~etiri 8-bitna porta i da portovi P0 i P2 slu`e za adresiranje i pristup podacima u memoriji, a P1 i P3 su univerzalni. Svi ulazi i izlazi su kompatibilni sa TTL standardom, a to prakti~no zna~i da mo`emo direktno da ih spajamo sa TTL ili kompatibilnim kolima.
III.3 Interni RAM
U adresni prostor internog RAM-a sme{teni su svi registri (osim programskog broja~a), hardverski broja~i i tajmeri, stek pointer, ulazno-izlazni portovi, bafer za serijsku komunikaciju i akumulator. Internom RAM-u se pristupa sa 8-bitnom adresom. Na sl. 3 prikazana je struktura internog RAM-a. Na po~etku adresnog prostora nalaze se ~etiri grupe (banke) od po osam registara op{te namene, od R0 do R7. S kojom grupom trenutno radimo zapisano je (isprogramirano) u delu statusnog registra (PSW). Od 20h do 7Fh je prostor op{te namene (mo`emo upisivati i ~itati) kojem se pristupa direktnim adresiranjem. Od adrese 80h do FFh nalaze se svi registri posebne namene (SFR) kojim se direktno pristupa. Posebna pogodnost ovog μP su instrukcije kojima se adresira samo jedan bit u internom RAM-u. Ove operacije su izvodljive neposredno samo na jednom delu RAM-a (na adresama od 20h do 2Fh) i sa nekim registrima koji su na sl.3 ozna~eni zvezdicama.
12
sl.3
III.4 Registri op{te namene
Akumulator. Akumulator u svim μP ima istu funkciju ali ovde ima i svoju adresu u memoriji. Mada je to jedan isti registar, on ima ~ak i razli~ito
13
ime ako mu se obra}amo kao univerzalnom registru (A) ili memorijskoj lokaciji (ACC).
B registar. Instrukcije za mno`enje (MUL) i deljenje (DIV) dozvoljavaju da se obe operacije obavljaju samo izme|u A i B registara. U svim drugim slu~ajevima B se koristi kao registar op{te namene, uglavnom za sme{taj me|urezultata.
Stack Pointer (SP). Za razliku od drugih procesora kod ovog SP registar sadr`i samo 8 bita, jer interni RAM nije du`i od 256 bajtova. Posle reseta vrednost SP je 07h , ali se mo`e promeniti na neku drugu vrednost.
Data Pointer (DPTR). Sastoji se od dva 8-bitna registra: DPH (vi{i bajt) i DPL (ni`i bajt) . Koristi se za adresiranje eksternog RAM-a ili za ~itanje tabela u EPROM-u.
Ulazno/izlazni portovi (P0,P1,P2,P3). Ako upisujemo u ove registre, mi zapravo upisujemo u latch registre za izlazne portove a ako ~itamo iz njih , onda ~itamo stanje sa no`ica portova ili stanje izlaznih registara.
Programska statusna re~ (PSW). Ovaj registar je od najve}e va`nosti za rad μP. Nije bitna vrednost ovog registra ve} je bitan sadr`aj pojedinih bitova.
7 6 5 4 3 2 1 0
PSW C AC FO RS1 RS0 OV - P
C (PSW.7) Carry Flag. Ovo je bit prenosa za sve aritmeti~ke operacije i instrukcije pomeranja ({iftovanja), a tako|e i glavni bit za 1-bitne operacije.
•AC (PSW.6) Auxillary Carry Flag. Ovo je pomo}ni bit prenosa samo za BCD operacije. U principu ga ne koristi sam programer nego slu`i za interno stvaranje aritmeti~ke jedinica kod instrukcije DA A.
•FO (PSW.5) Flag O. Ovaj bit stoji programeru na raspolaganju kao bit za univerzalnu upotrebu.
14
•RS1 i RS2 (PSW.4 i PSW.3). Register Select 1 i 0. Slu`e za izbor dela internog RAM-a u kome }e biti sme{tena grupa registra R0 - R7, u skladu sa slede}om tabelom:
RS1 RS0 mesto u RAM-u
0 0 Grupa 0 00h-07h
0 1 Grupa 1 08h-0Fh
1 0 Grupa 2 10h-17h
1 1 Grupa 3 18h-1Fh
Programer ima slobodu da u svom programu menja navedene grupe registra i da na taj na~in svoj program u~ini br`im i efikasnijim.
•OV (PSW.2) Overflow flag. Ovo je bit prekora~enja. Setuje se (postavlja na 1) ako je rezultat aritmeti~ke operacije sa predznakom takav da ne mo`e da se prika`e u jednom bajtu. Ako nema prekora~enja on je 0.
•P (PSW.0) Parity flag. Ovo je bit parnosti. Ako je broj setovanih (1) bitova u A paran, onda je ovaj fleg 0,a ako je neparan on je na 1. Naj~e{}e se koristi za generisanje bita parnosti kod serijske komunikacije, pri slanju bajta i pri testiranju parnosti primljenog bajta.
III.5 Broja~i i tajmeri
Postoje dva tajmera koji se veoma ~esto koriste. Naj~e{~e se koriste za uniformno generisanje interapta (prekida) i generisanje takta za serijski port. Oba tajmera su me|usobno nezavisna i imaju skoro jednake funkcije.
15
Registar TMOD. Odre|uje mod u kome }e svaki od njih raditi. Prvih ~etiri bita se odnose na tajmer 0 a preostali na tajmer 1:
7 6 5 4 3 2 1 0
TMOD GATE C T/ M1 M0 GATE C T/ M1 M0
•GATE Ako je ovaj bit setovan tajmer 0 (tajmer 1) }e biti aktivan (dobija}e inpulse za brojanje) samo ako je INT0# (INT1#) na visokom nivou i ako je TR0 (TR1) setovan. Ako je GATE resetovan (na 0), stanje na ulazu INT0# (INT1#) se ignori{e i jedini uslov da tajmer 0 (tajmer 1) bude aktivan je da je TR0 (TR1) setovan (na 1).
• C/T# Ako je setovan, tajmeri }e brojati impulse koji im se dovode na no`ice T0 i T1, a ako je resetovan, dobija}e uniformne impulse iz internog izvora, ~ija }e frekvencija biti jednaka u~estanosti oscilatora podeljenoj sa 12. Kako je usvojeno da oscilator radi na 12MHz, broja~ }e dobijati impuls svake mikro-sekunde.
• M1,M0 Ova dva bita odre|uju u kom modu }e raditi tajmeri
M1 M0 mod
0
0
1
1
0
1
0
1
0
1
2
3
Registar TCON. TCON je kontrolni registar. Me|utim, prva ~etiri bita nisu namenjena tajmerima, ve} slu`e za upravljanje spoljnim prekidima.
7 6 5 4 3 2 1 0
TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT1
16
• TF1,TF0 Ovi bitovi se automatski setuju svaki put kad se stanje na tajmerima menja sa FFh na 0h (FFFFh na 0h). Tako|e se automatski resetuju kad procesor zapo~ne izvr{enje prekida, a mogu i poslu`iti programu kao signal da trenutno onemogu}en prekid ~eka da bude opslu`en.
• TR1,TR0 Mogu da se setuju ili resetuju iz programa ~ime }e pokrenuti ili zaustaviti broja~.
• E1,IE0 Setuje se automatski kada je na no`icama INT1# i INT0# detektovana ivica signala koja izaziva prekid, a setuje se kad se zapo~ne prekid.
•IT1,IT0 Ako su ovi bitovi setovani, prekid }e nastupiti kada se detektuje opadaju}a ivica signala na pinovima INT1# i INT0#, a ako ga resetujemo, prekid }e biti iniciran dok je na istim pinovima nizak nivo. To zna~i da pri opadanju signala na ovim pinovima, u prvom slu~aju biti generisan samo jedan prekid, a u drugom slu~aju prekidi }e se neprekidno generisati sve dok nivo na pinovima INT1# i INT0#, ponovo ne bude visok.
Mod 0. Ovaj mod se retko koristi, a ina~e je uveden da bi simulirao mod u kome je radila starija familija mikroprocesora 8048. TL0 (TL1) radi kao 5-bitni preskaler (deli broja~ku u~estanost sa 32), a glavni broja~ je TH0 (TH1). Kada se njegovo stanje promeni sa FFh na 00h nastupa prekid (interapt), naravno ako je omogu}en u registru IE.
Mod 1. Tajmeri TL0 i TH0 (TL1 i TH1) su kaskadno nadovezani jedan na drugi, tako da rade kao 16-bitni broja~. Prekid se generi{e kada se stanje promeni sa FFFFh na 0000h.
Mod 2. U modu 2 aktivni su TL0 i TL1 i na prvi impuls posle stanja FFh generi{e se prekid, ali onda broja~i ne kre}u od stanja 00h nego se stanje TH0 i TH1 kopira u broja~e. Tako }e se prekid generisati svakih 256-TH0, odnosno 256-TH1 impulsa.
Mod 3. Tajmer 1 je u modu 3 zaustavljen (ne menja stanje), a TL0 i TH0 rade kao dva nezavisna 8-binarna broja~a. TL0 radi kao u modu 0 (osim {to nema preskaler), a TH0 broji u~estanost oscilatora podeljenu sa 12 i pri promeni stanja sa FFh na 00h generi{e interapt koji je ina~e namenjen za tajmer 1. On od tajmera 1 pozajmljuje i upravlja~ki signal, jer bit TR1 odlu~uje da li }e TH0 biti aktivan (da li }e dobijati impulse za brojanje).
17
Generisanje takta za serijski port pomo}u tajmera 1. Ako tajmer 1 koristimo za generisanje ovog takta treba isklju~iti interapt na tajmeru 1 i programirati tajmer da radi u modu koji nam odgovara da bi smo dobili `eljenu u~estanost. Ako je bit SMOD u registru PCON setovan, na izlazu iz tajmera 1 nam treba baud rate ∗16, a ako je resetovan baud rate ∗32. Naj~e{}e se tajmer 1 za ovu svrhu konfiguri{e da radi u modu 2 (TMOD=0010xxxx). U tom slu~aju baud rate (bit brzina) odre|ujemo po formuli:
Baud rate frekvencija oscilatoraTH
SMOD
= ×× −
232 12 256 1
1( ( ))
( )
Ovo va`i samo ako je serijski interfejs konfigurisan za mod1 ili mod 3 jer u modu 0 i modu 2 je bit brzina fiksna.
Mo`da nam za neke brzine serijskog prenosa ne}e odgovarati u~estanost oscilatora od 12MHz jer }e se javiti mala gre{ka u dobijanju `eljene brzine. U velikom broju slu~ajeva asinhroni serijski prenos dozvoljava ~ak i ve}e neta~nosti u brzini. Ako se tra`i potpuna preciznost, treba staviti kvarc od 11,059MHz (koji je standardan) i onda mo`emo da njime postignemo sve standardne brzine serijskog prenosa. U tom slu~aju ima}emo ne{to sporiji rad mikroprocesora.
III.6 Serijski interfejs
Serijski port je dupleksni. To zna~i da mo`e da predaje i prima istovremeno. Prijemni deo serijskog porta je dopunjen jo{ jednim paralelnim registrom, u koji se iz prijemnog pomera~kog registra automatski upisuje bajt koji je preko RXD pina upravo pristigao na port. To omogu}ava da se odmah nastavi prijem slede}eg bajta, jer program ne mo`e da garantuje da }e ba{ u istom trenutku biti spreman da prihvati novoprido{li bajt. Po{to postoji samo jedan paralelni registar, ako se bajt ne pro~ita do kraja prijema slede}eg, onda }e se on nepovratno izgubiti. Zato treba voditi ra~una o organizaciji programa tako da se ni u najnepovoljnijem trenutku ne dogodi ova gre{ka. Da bi se ova gre{ka
18
izbegla najbolje je serijski prijem organizovati tako da se posle svakog prijema generi{e prekid u kome }e se paralelni registar o~itati.
Registar SBUF. Ovo su zapravo dva zasebna registra. U jednom se nalazi bajt koji je upravo stigao na serijski port, a drugi slu`i za upis bajta koji se {alje sa porta. Ako ~itamo iz serijskog bafera, onda smo adresirali prijemni registar, a ako upisujemo u SBUF onda smo adresirali predajni registar. Upisom u predajni registar automatski se inicira slanje sa serijskog porta. Upis i ~itanje iz SBUF sinhronizuje se sa serijskom predajom i prijemom pomo}u dva bita TI i RI. TI se automatski setuje kada je prijemni bafer prazan i ako ima jo{ bajtova za slanje treba ga napuniti tim bajtom. RI se automatski setuje kada je prijemni registar pun i treba ga o~itati. Bez obzira da li se serijski interfejs programira tako da generi{e prekid kada je neki od ova dva bita setovan, posle obavljene serijske komunikacije treba odgovaraju}e bitove resetovati, jer mikroprocesor to ne}e automatski u~initi.
Registar SCON. Ovo je kontrolni registar serijskog interfejsa.
7 6 5 4 3 2 1 0
SCON SM0 SM1 SM2 REN TB8 RB8 TI RI
• SM0,SM1,SM2 Odre|uju mod u kome radi serijski port.
SM0 SM1 mod baud rate
0
0
1
1
0
1
0
1
0
1
2
3
f.osc/12
promenljiva
f.osc/64(32)
promenljiva
• SM2 Kada je setovan, u modu 1 bit RI ne}e biti setovan ako nije primljen ispravan stop bit, a u modovima 2 i 3 omogu}ava multiprocesorsku komunikaciju
• REN Kada je setovan omogu}ava prijem.
19
• TB8 Ovde se upisuje deveti bit koji }e biti poslat preko serijskog porta u modovima 2 i 3. Ako se koristi serijski mod sa bitom parnosti P onda treba softverski prebacivati bit parnosti iz PSW.
• RB8 U modovima 2 i 3, RB8 prihvata deseti bit koji je primljen. U modu 1 ako je SM2=0 onda RB8 sadr`i stop bit koji je primljen.
• TI (Transmit Interrupt flag) Hardverski }e se setovati na kraju slanja osmog bita u modu 0 ili na kraju slanja stop bita u ostalim modovima. Treba ga resetovati softverski.
• RI (Receive Interrupt flag) Sli~no TI bitu, setuje se automatski na kraju slanja osmog bita u modu 0 ili na sredini stop bita u svim ostalim modovima.
Mod 0. Ovaj mod nije namenjen za standardnu asinhronu komunikaciju, ve} za pro{irenje ulaznih i izlaznih portova pomo}u pomera~kih (shift) registara.
Mod 1. Deset bitova se {alje preko TXD ili prima preko RXD. Prvo ide start bit (koji je uvek 0), zatim idu osam bita podataka (prvi je najni`i bit, pa redom nadalje), na kraju ide stop bit (koji je uvek 1). Stop bit se automatski upisuje u RB8 prilikom prijema. Ovo je pravi mod za serijsku komunikaciju po standardu RS-232. Bit brzina odre|uje se konfigurisanjem tajmera 1.
Mod 2 i 3. Jedanaest bita se {alje preko TXD ili prima preko RXD. Prvo ide start bit (uvek 0), pa osam bitova podataka, pa deseti bit (koji se pri slanju uzima iz TB8, odnosno upisuje u TB8 pri prijemu). Mod 2 je pogodan za brzu komunikaciju na malim rastojanjima, mod 3 za standardnu RS-232 komunikaciju sa bitom parnosti. Bit brzine su fiksne i iznose 1/32 (SMOD=1) za mod 2 i 1/64 u~estanosti oscilatora za mod 3.
PCON registar. U njemu se nalazi bit SMOD za upravljanje modovima serijske komunikacije, ali i bitovi kojima se defini{u modovi rada celog mikroprocesora pri napajanju iz baterija.
7 6 5 4 3 2 1 0
PCON SMOD - - - GF1 GF0 PD IDL
20
• SMOD Ako je setovan, udvostru~uje bit brzinu kad serijski interfejs radi u modovima 1,2 i 3.
• GF1, GF0 Ovo su bitovi op{te namene i programer mo`e da ih koristi prema potrebi.
• PD Kada je setovan dovodi μP u Power Down mod (smanjene potro{nje). U ovom modu strujom se napaja samo interni RAM, oscilator je isklju~en. Iz ovog moda se izlazi samo hardverskim resetom, ~ime se ovaj bit resetuje.
• IDL Setovanjem ovog bita μP ulazi u Idle mod , u kome se ceo μP napaja strujom, ali postaje neaktivan. Program se ne izvr{ava, tajmeri ne rade, serijski port ne radi. Iz moda se izlazi hardverskim resetom ili prvim spoljnim prekidom, koji }e pokrenuti procesor. Kad obradi prekid, procesor nastavlja da radi od prve slede}e instrukcije iz one koja ga je dovela u ovaj mod. PD ima vi{i prioritet od IDL-a.
III.7 Prekidi
Mikroprocesor 8031 ima pet izvora prekida. To su dva tajmerska, dva spoljna i jedan serijske komunikacije.
Spoljni prekidi se doga|aju opadaju}om ivicom ili niskim nivoom na pinovima INT0# i INT1#, u zavisnosti kako su programirani bitovi IT0 i IT1 u registru TCON. Flegovi koji generi{u spoljne prekide su IE1 i IE1 u registru TCON.
Tajmerski prekidi su direktno upravljani bitovima TF0 i TF1 registra TCON. Ako su prekidi omogu}eni, onda }e svako prekora~enje broja~a (prvi impuls posle stanja FFh kod 8-bitnih broja~a ili FFFFh kod 16-bitnih) setovati ove bitove.
Kod prekida serijskog porta, bitovi TI i RI registra SCON ravnopravno uti~u na generisanje prekida. Stvar je softvera da testira koji je od ova dva stanja nastupilo. Po{to se po zavr{etku prekidne rutine ovi bitovi ne resetuju, moraju se softverski resetovati.
21
Registar IE. Ovo je glavni registar kojim se zabranjuju i dozvoljavaju prekidi. Kada je njegov sedmi bit 0, svi prekidi su zabranjeni, bez obzira na njihovu pojedina~nu dozvolu.
7 6 5 4 3 2 1 0
IE EA - - ES ET1 EX1 ET0 EX0
•EA Ovaj bit je globalni prekida~ za sve prekide. Kad je setovan, svi prekidi su mogu}i u zavisnosti od pojedina~nih dozvola.
• ES Ako je setovan, omogu}uje izvr{enje prekida i obrnuto.
•ET1 Ako je 1, dozvoljen je prekid tajmera 1
•EX1 Ako je 1, dozvoljen je spoljni prekid 1
•ET0 Ako je 1, dozvoljen je prekid tajmera 0
•EX0 Ako je 1, dozvoljen je spoljni prekid 0
Pioriteti prekida. Prekidi su asinhrone pojave, pa se mo`e desiti da prilikom izvr{avanja neke prekidne rutine do|e zahtev za neki drugi prekid. Mikroprocesor mora odlu~iti da li da prekine teku}u rutinu i u|e u novu ili da zavr{i teku}u, pa tek onda da u|e u novu. U nekim situacijama ovo je veoma bitno. Zato se unapred μP saop{timo koji prekid mo`e da sa~eka svoje izvr{avanje, a koji mora da se odmah obradi. U registru IP se nalazi upisan nivo prioriteta.
7 6 5 4 3 2 1 0
IP - - - PS PT1 PX1 PT0 PX0
Jedinica u ovim bitovima zna~i da taj prekid ima vi{i prioritet, a nula da ima ni`i, i da mo`e da sa~eka svoju obradu. Izvr{enje prekida ni`eg prioriteta }e biti prekinuto ako nai|e zahtev za prekid vi{eg prioriteta. Prekid sa vi{im prioritetom se ne mo`e prekinuti osim hardverskim resetom. Ako istovremeno do|e zahtev za dva prekida istog pioriteta, onda va`i pomo}na lista pioriteta, koja je fiksna (softverski se ne mo`e menjati) hardverski definisana. Sledi pomo}na lista prioriteta data po opadaju}em prioritetu:
22
1.IEO (spoljni prekid 0) - najvi{i prioritet
2.TF0 (prekid tajmera 0)
3.IE0 (spoljni prekid 1)
4.TF1 (prekid tajmera 1)
5.RI i TI (prekid serijskog porta) - najni`i
Po nastanku prekida, ako je dozvoljen, doga|a se slede}e. Prvo se zavr{ava teku}a instrukcija u programu, zatim se adresa slede}e instrukcije stavlja na stek. U programski broja~ se upisuje odgovaraju}i vektor prekida (jedan od pet). Onda se ska~e na prekidnu rutinu i ona se izvr{ava. Kada se nai|e u rutini na naredbu RETI koja ozna~ava kraj rutine, adresa se uzima sa steka i upisuje u programski broja~ i nastavlja se tamo gde je procesor bio prekinut.
IV OPIS PODSISTEMA MIKRORA^UNARA
Ovaj mikrora~unarski sistem se mo`e podeliti na vi{e podsistema (delova). Ceo sistem sam podelio na slede}e delove: PAL kolo, memorijski deo, enkoderski deo, deo sa displejom, deo sa A/D i D/A konvetorima, deo sa konektorima. O na~inu povezivanja i funkcionisanja ovih podsistema bi}e vi{e re~i u daljem tekstu.
IV.1 PAL
PAL spada u programabilne logi~ke mre`e. Zbog sve raznovrsnijih logi~kih funkcija do{lo se na ideju da se proizvede nedovr{ena komponenta, koju }e krajnji korisnik na licu mesta uz pomo} odgovaraju}ih programa i programatora dovr{iti prema svojim potrebama. Krajnji korisnik formira `eljenu funkciju (funkcije). Ove komponente imaju matri~nu strukturu , odnosno dve
23
redno vezane mre`e, jednu sa I kolima, a drugu sa ILI kolima. U neprogramiranom stanju u preseku horizontalnih i vertikalnih vodova nalaze se spojne diode. Prilikom programiranja suvi{ne diode se uklanjaju. Kod PAL kola mogu}e je samo programirati I kola, dok su ILI kola izvedena fiksno. Zbog toga postoji ograni~enje logi~kih proizvoda koji se mogu posti}i.
Upotrebio sam PAL 22V10. On ima deset izlaza, tj. mogu se realizovati deset logi~kih funkcija. Svih deset izlaza su istovremeno i ulazi, tako da sa jo{ dvanaest postoje}ih ulaza, ovo kolo ima dvadeset dva ulaza. Na ovoj kartici funkcija PAL-a je da generi{e signale za selekciju odgovaraju}ih ~ipova i signale za upis i ~itanje RAM-a. PAL selektuje slede}e ~ipove: EPROM (U6), RAM 1(U2), RAM 2 (U3), RAM 3 (U4), RAM 4 (U5) i dva paralelna interfejsa 8255 (U12,U13). Ovi signali su izlazi iz PAL-a, a ulazi su: buferovana adresa od BA9 do BA15, kao i signali sa μP WR RD PSEN R E SW O signa a za i je i upis u RAM8031 , , , _ _ . lim ~ tan(R_READ, R_WRITE) bi}e vi{e re~i u memorijskom delu.
Funkcije koje treba relizovati sa PAL-om su
01 02
03
04 05 2
06 07
08 09
4 5 4 5 3
6 7 8 9 10 4 2 4 2
6 7 8 6 7 8
6 7 8 6 7 8
6 7 8 6 7 8
= ∗ = ∗ +
= ∗ ∗ ∗ ∗ ∗ ∗ + ∗
= ∗ ∗ = ∗ ∗
= ∗ ∗ = ∗ ∗
= ∗ ∗ = ∗ ∗
I I I I I
I I I I I I I I I
I I I I I I
I I I I I I
I I I I I I
( )
Gde su 01, 02,. . ., 09 ulazi, a I1, I2,. . ., I12 izlazi PAL-a.
24
I I WR WR CS EPROM CS EPROM
I RD RD I R E SW R READ R READ
I PSEN PSEN I BA R WRITE R WRITE
I BA I BA CS RAM CS RAM
I BA I BA CS RAM CS RAM
I BA I BA CS RAM CS RAM
CS RAM CS RAM
CS PIA CS PIA
CS PIA CS PIA
1 2
3 4
5 6 15
7 14 8 13
9 12 10 11
11 10 12 9
0 01
02
03
04 1 1
05 2 2
06 3 3
07 4 4
08 0 0
09 1 1
= = = = =
= = = = =
= = = = =
= = = =
= = = =
= = = =
= =
= =
= =
# # #
# _ _ # #
# # #
# #
# #
# #
# #
# #
# #
Buferovane adrese (BA0 do BA15) dovode se sa komponente 74244 (buffer memory address registers) i 74373 (spoljni registar, slu`i za pam}enje ni`eg bajta adrese), koji su povezani na portove P2 i P0 μP 8031. Spoljni registar je nephodan jer port P0 ima dvojaku funkciju, slu`i za prijem ili slanje podataka. Mikroprocesor ovim spoljnim registrom upravlja preko signala ALE#, tj. saop{tava mu kada da upamti ni`i bajt adrese. Signali WR#, RD#, PSEN# su sa μP, a signal R_E_SW se dovodi tako|e sa μP, odnosno sa pina P3.7 (sedmi pin porta P3).
IV.2 Memorijski deo
Memorijski deo ~ine EPROM (27256) od 32KB i ~etiri RAM-a (6264) od po 8 KB (ukupno 32KB). Po{to 8031 ima dva signala, PSEN# za ~itanje iz programske memorije i RD# za ~itanje RAM-a, a to zna~i da postoje dva nezavisna adresna prostora za program i za podatke od po 64KB (16-bitna adresa).
Me|utim, kako `elimo da prvo primimo program za regulaciju sa personalnalnog ra~unara i smestimo ga u RAM, a onda da ga startujemo iz RAM-a, moramo na neki na~in da zavaramo procesor. Start programa iz RAM-a posti`emo softverski (samim tim startujemo regulisani pogon), a hardverski se re{ava problem ~itanja programa iz RAM-a uz pomo} PAL-a, tj. dovo|enje signala PSEN# na RAM. Signal koji slu`i za prebacivanje na RAM je R_E_SW dovodi se sa pina P3.7 mikroprocesora. Kada je on na 1 program se ~ita iz EPROM-a. Kada softverski oborimo njegovu vrednost na 0 prebacujemo se na RAM tj. iz RAM-a o~itavamo program. Mo`emo ~itati program iz RAM-a, jer
25
signal PSEN# preko signala R_READ sa PAL-a dovodimo na RAM, odnosno na njegov pin 22 (OE#) na slede}i na~in:
R READ PESN R E SW RD_ # _ _ # ( )= ∗ + 3
U narednoj tabeli se vidi da kad je R_E_SW jednak 1 signal R_READ je jednak RD#, a kada je 0 signal R_E_SW mo`e biti i PSEN# i RD#. Na ovaj na~in smo re{ili problem dovo|enja signala PSEN# na RAM u `eljenom trenutku.
R_E_SW R_READ
0
1
PSEN#∨RD#
RD#
Na slede}oj slici se vidi struktura programa u EPROM-u i RAM-u.
sl.4
26
(∗) je deo glavnog programa, koji obra|uje serijsku komunikaciju sa ra~unarom, dobijeni program (u vidu binarnog koda) sme{ta u spoljni RAM. Po uklju~enju kartice (reseta) startuje se ovaj deo glavnog programa Kada se zav{i serijska komunikacija prelazi se na deo (∗∗).
(∗∗) je deo glavnog programa koji kopira deo (∗∗∗) u RAM po~ev od iste adrese 7800h. Po zavr{etku ovog dela ska~e se (zadnja naredba je naredba dugog skoka) na deo (∗∗∗). Sledi ovaj program:
MOV DPH,#78h MOV DPL,#00h MOV R0,#Nh
skok: CLR A MOVC A,@(A+DPRT) MOVX @DPRT,A INC DPRT
27
DJNZ R0,skok LJMP #7000h
N je 9, jer je program (∗∗∗) du`ine devet bajta.
(∗∗∗) je deo glavnog programa koji se po zavr{etku prethodnog dela nalazi na istoj adresi i u EPROM-u i u RAM-u (prikazan je u okviru sl.4). Zadatak mu je da izvr{i prebacivanje na RAM (odnosno da omogu}i o~itavanje programa iz RAM-a) i start u~itanog programa za regulaciju. Ovo se posti`e obaranjem vrednosti pina P3.7 (R_E_SW) na 0 ~ime uz pomo} PAL-a omogu}ujemo da se signal PSEN# (signal koji generi{e μP svaki put kad o~itava kod operacije) sa μP dovede na RAΜ, odnosno na njegov pin OE#. Naredbom CLR P3.7 vr{imo obaranje vrednosti pinaP3.7 na 0. Izvr{avanjem ove naredbe (ili neke druge za promenu stanja na pinu nekog porta) nova vrednost sti`e na pin tek na kraju ma{inskog ciklusa, odnosno u toku druge faze zadnjeg stanja ma{inskog ciklusa (S6P2). Za to vreme μP je izbacio adresu naredne instrukcije na portove P0 i P2, oborio signal PSEN# na 0, ~ime je prakti~no otpo~eo o~itavanje koda naredne instrukcije iz EPROM-a.Kako se radi o trobajtnoj naredbi (LJMP# 0000h), druga dva bajta }e se o~itati iz RAM-a, zbog toga je va`no istovremeno postojanje (∗∗∗) i u EPROM-u i u RAM-u. Na slici 5 se vidi trenutak prebacivanja. Zadnjom naredbom ska~emo na adresu 0000h u RAM-a na kojoj se nalazi u~itan program za regulaciju. Ovim startujemo taj program ((∗∗∗∗)) a samim tim startujemo i regulisani pogon.
(∗∗∗∗) je program koji je u~itan sa personalnog ra~unara. U ovom programu postoji problem sa naredbom za upis u spoljni RAM (MOVX @DPTR,A). Postojanje ove naredbe u ovom programu, bilo gre{kom programera ili nepoznavanjem hardvera, mo`e do}i do izmene samog programa i samim tim do nekontrolisanog stanja. To nije po`eljno. Zato se mora dobro voditi ra~una o upotrebi ove naredbe prilikom pisanja ovog programa. Drugo re{enje je da se hardverski spre~i upis u RAM, odnosno dozvoli upis samo u najvi{a dva KB (kilobajta) RAM-a, ali samo kada o~itavamo program iz RAM-a. Uz pomo} PAL-a mo`emo ovo realizovati, formiranjem signala (funkcije) R_WRITE koji se dovodi na RAM, odnosno na njegov ~ita~ki ulaz (WE#), na slede}i na~in: (4)
R WRITE A A A A A R E SW WR R E SW WR_ _ _ # _ _ #= ∗ ∗ ∗ ∗ ∗ ∗ + ∗15 14 13 12 11
28
R_E_SW R_WRITE
0 A A A A A WR15 14 13 12 11∗ ∗ ∗ ∗ ∗
1 WR#
Kada je R_E_SW na 0 u RAM mo`emo upisati samo po~ev od adrese F800h do 7FFFh ((&&&)), tj. kada su A15 do A11 jednaki 1. Kada je 1 tada mo`emo upisivati u ceo RAM.
(&&&) je deo RAM-a kojem program za regulaciju jedino mo`e pristupiti, tj. da upisuje `eljene podatke.
Na slici 5 u delu VII, su prikazani vremenski tokovi signala, pri o~itavanju programa iz EPROM-a, kao i trenutak prebacivanja sa EPROM-a na RAM.
Na slici 5, vidi se da maksimalni vremenski period, od trenutka kada signal PSEN# postaje aktivan do trenutka kada se na portu P0 uspostave ispravni signali, iznosi 125ns. Maksimalno ka{njenje EPROM-a je 70ns, a PAL kola 30ns, tako da imamo rezervu od 25ns. Za to vreme treba da se uspostave signali sa EPROM-a na port P0 μP. Po{to je EPROM postavljen blizu μP ova rezerva je sasvim dovoljna za uspe{no o~itavanje. Isto va`i i za RAM. Na istoj slici isprekidanom linijom (crta ta~ka crta) dat je slu~aj prebacivanja sa EPROM-a na RAM. Posledica ovog prebacivanja je blokiranje dejstva signala PSEN#, tj. skra}ivanje dejstva signala CS#EPROM. Ovo skra}ivanje nema uticaja na ve} zapo~eto o~itavanje iz EPROM-a jer se ispravni podaci na EPROM-u dovoljno dugo zadr`avaju posle prestanka dejstva signala CS#EPROM.
IV.3 Enkoderski deo
Enkoderski deo sastoji se od dela za dekodovanje signala sa enkodera, dela za brojanje impulsa i registra za pam}enje broja impulsa u `eljenom trenutku. Deo za dekodovanje signala slu`i za formiranje UP i DOWN impulsa za oba smera obrtanja. Deo za brojanje impulsa (UP i DOWN) ~ine dva redno vezana binarna broja~a 74193, sa po~etnim stanjem na nuli. Registar za pam}enje (74373) je vezan na port A paralelnog interfejsa 8255.
29
Deo za dekodovanje signala. Sa enkodera dolaze tri faze, signali (povorke impulsa) pojedinih faza me|usobno su pomereni za ~etvrtinu periode. Tako|e se sa enkodera dovode invertovane faze.
Posmatramo faze A, B, B#. Pri kretanju napred (UP) faza A prednja~i fazi B, a kasni za fazom B#. Vidi se da se silazna ivica impulsa faze A poklapa sa impulsom faze B, a uzlazna sa B#. Ako formiramo impulse koji odgovaraju uzlaznoj odnosno silaznoj ivici impulsa faze A, mo`emo uz pomo} odgovaraju}ih logi~kih kola formirati UP impulse prema slede}oj logi~koj funkciji:
UP=AB∗B+AA∗B# (5)
Pri kretanju unazad faza A kasni za fazom B, a prednja~i B#, pa }e se silazna ivica poklapati sa impulsom B#, a uzlazna ivica sa B. Tako da mo`emo formirati DOWN impulse na slede}i na~in:
DOWN=AB∗B#+AA∗B (6)
Na sl.6 u delu VII su dati vremenski dijagrami impulsa za slu~aj kretanja unapred. Vidi se da pri kretanju napred postoje samo UP impulsi dok je DOWN na 0. Va`i i obrnuto, tj. pri kretanju unazad postoje DOWN impulsi a UP impulsi ne postoje, tj. UP je 0.
Uzlazna i silazna ivica se pretvaraju u impulse na slede}i na~in. Koriste se invertori sa histerezisom (okidnim kolom) 7414. Prvo se faza A dovede na invertor i dobije se A#, a zatim taj signal dovede na kolo za ka{njenje (R-C). Dobijeni signal se dovodi na invertor sa histerezisom, da bi se dobili pravilni impulsi, a na njegovom izlazu dobijamo Ad impulse (zakasnelu fazu A). Na osnovu ovih signala formiramo impulse ivica na slede}i na~in:
A A A A A Ad dA = + B = ∗ ( )7
AA signal }e biti 1 kada su i Ad i A# na 0. AB }e biti 1 kada su Ad i A# na 1.
30
Ovaj deo realizovan je sa integralnim kolima: 7414 (iskori{}eno je svih {est invetora), 7408 (iskori{}ena su sva ~etiri I kola), 7400 (iskori{}eno je samo jedno NI kolo od postoje}a ~etiri) i 7432 (iskori{}ena su tri ILI kola od postoje}a ~etiri ). [ema ovog dela data je na slici 8 u delu VII.
Na slici 6 u delu VII dati su vremenski tokovi svih signala iz dela za dekodovanje impulsa sa enkodera i to za slu~aj kretanja unapred.
Deo za brojanje. Deo za brojanje UP i DOWN impulsa sastoji se od dva redno vezana binarna (4-bitna) broja~a sa po~etnim stanjem nula (broj od nule).Prvi broj od 0 do 15 kada do|e do prekora~enja (prelaz sa 15 na 0) {alje signal o prekora~enju (pin CD) drugom broja~u na njegov broja~ki ulaz. Ovakvim povezivanjem pove}avamo kapacitet brojanja na 256. Isto va`i i za brojanje unazad, s tim {to se {alje signal prekora~enja (pin BD) pri prelasku sa 0 na 15. Da bi znali da li je kretanje napred (UP) ili unazad (DOWN), pri o~itavanju sa broja~a, koristi se slede}a logika. Po{to se pri kretanju unapred, stanje broja~a menja napred 0,1,2,. . . , a pri kretanju unazad 0,255,254,. . ., to ako dovoljno ~esto o~itavamo stanje broja~a da ne prekora~imo 127, zna}emo smer obrtanja. Ako je vrednost na broja~u, recimo, 113 radi se o kretanju unapred ili ako je stanje 220 radi se o kretanju unazad.
Deo za pam}enje stanja broja~a. Stanje broja~a se upisuje u spoljni registar (74373) koji je vezan na port A paralelnog interfejsa (PIA1). Signal za pam}enje (ena) i signal za postavljanje broja~a na 0 (set) dovode se sa PIA1 i to sa pinova PC.7 i PC.6. Kada `elimo da o~itamo stanje, μP se obra}a PIA1 i preko porta C kontroli{e broja~ i spoljni registar. Prvo se zapamti vrednost broja~a u spoljniom registru, zatim se broja~ postavi na 0, a onda se o~ita spoljni registar preko porta A. Sledi deo programa kojim je sve ovo realizovano:
PIA1_BASE equ 0A000h; bazna adresa PIA1 PIA1_A equ (PIA1_BASE + 0); Adresa porta A. PIA1_B equ (PIA1_BASE + 1); Adresa porta B. PIA1_C equ (PIA1_BASE + 2); Adresa porta C PIA1_CONR equ (PIA1_BASE + 3); Adresa controlnog registra. PIA1_INIT equ 10010000b; Vrednost inicijalizacije. Portovi A i B rade u modu 0 (port A je izlazni, a ostali su ulazni).
MOV DPRT,#PIA1_CONT; U DPRT se upisuje adresa kont. MOV A,#PIAI_INIT; registra. U kontrolni registar upisujemo MOVX @DPRT,A;
31
vrednost inicijalizacije, time smo definisali modove. rada PIA1. . . . MOV DPRT,PIA1_C; Upisujemo adresu porta C. MOV A,#10000000b; Cilj je da PC.7 postavi na 1, time upisujemo MOVX @DPRT,A; vrednost sa broja~a u spoljni registar. MOV A,#0100000b; Zatim obaramo PC.7 na 0, ~ime pamtimo MOVX @DPRT,A; vrednost u spoljnom registru. PC.6 postavljamo na MOV A,#0000000b; 1. Cilj je da kad ga oborimo na 0, postavimo MOV @DPRT,A; na 0. ; broja~. MOV DPRT,#PIA1_A; U DPRT upisujemo adresu porta A. MOVX A,@DPRT; U akumulator upisujemo vrednost broja~a, koja je . srazmerna sa brzinom. . . END
IV.4 Displej
Na kartici postoje ~etiri displeja. Oni su preko spoljnih registara (74373) vezani na istu magistralu koja ih povezuje sa portom B paralelnog interfejsa (8255) PIA1. Displeji su prikazani na slici 9. Tako|e signali za upis i pam}enje u registre (dis1,dis2,dis3,dis4) vode se sa porta C istog interfejsa i to sa pinova PC.0 do PC.3. Postavljanje neke vrednosti na displej vr{i se na slede}i na~in: npr. `elimo da upi{emo vrednost u displej 1, prvo signal dis1 treba da postavimo na 1. Time omogu}ujemo upis u registar. Zatim u port A upisujemo `eljenu vrednost, pa signal dis1 obaramo na 0, ~ime pamtimo vrednost i zadr`avamo je na displeju. Analogno se upisuje i u druge displeje. Na displejima mo`emo ispisivati vrednosti brzine ili struje. Sra~unatu brzinu (struju) u programu za regulaciju treba na neki na~in prevesti na ~etvorobajtni oblik pogodan za prikaz na postoje}a ~etiri displeja. Naravno ta nova ~etvorobajtna vrednost treba da je stvarna brzina u o/min. Ta nova brzina upisuje se u lokalni RAM po~ev od bazne adrese 7Ch do 7Fh (mo`e i druga lokacija).
Sledi program kojim je sve ovo realizovano:
PIA1_BASE equ 0A000h; bazna adresa PIA0 PIA1_A equ (PIA1_BASE + 0); adresa porta A
32
PIA1_B equ (PIA1_BASE + 1); adresa porta B PIA1_C equ (PIA1_BASE + 2); adresa porta C PIA1_CONR equ (PIA1_BASE + 3); adresa controlnog registra PIA1_INIT equ 10010000b; vrednost inicijalizacij BRZ_BASE equ 07Ch; Bazna adresa brzine . . . MOV R1,#0h MOV R2,#BRZINA_BASE MOV R0,#N; N = 4 SET C; C=1
skok: MOV DPTR,#PIA1_C; U DPTR se upisuje adresa porta C. MOV A,R1; U prvom prolazu kroz petlju vrednost A je 1, u RLC A; slede}em je 2, pa 4, a na kraju 8. Time prvo MOV R1,A; upisujemo u displej 1, pa u displej 2, pa u displej 3 i na MOVX @DPTR,A; kraju u displej 4. Vrednost A upisujemo u MOV DPTR,#PIA1_B; portC, ~ime selektiramo pojedine displeje. MOV A,@R2; Vrednost jednog bajta ~etvorobajtne brzine se INC R2; upisuje u A. MOVX @DPTR,A; Upisuje se vrednost u selektovani displej. MOV DPTR,#PIA0_C; Zatim pamtimo vrednosti na displeju, time MOV A,#0h; {to signal za selekciju displeja (njegovog registra) MOVX @DPTR,A; obaramo sa 1 na 0. DJNZ R0,skok . . . END
IV.5 Deo sa A/D i D/A konvetorima
Upotrebio sam A/D konvertor sa rezolucijom od deset bita i osmobitni D/A konvertor. D/A konvertor je vezan na port A paralelnog interfejsa (8255) PIA0. A/D vezan je na port B (osam ni`ih bitova) i port C (preostala dva vi{a bita na pinove PC.5 i PC.4). Signali za upravljanje A/D konvertorom idu sa pinova PC.7 i PC.0. Preko PC.0 zadaje se signal za po~etak konverzije, a u PC.7 konvertor upisuje 1 kada je zavr{io konverziju.
33
Analogni ulaz i izlaz vezani su na konvertore preko R-C filtera i jedini~nih poja~ava~a. Njihov naponski nivo je od 0V do +10V. Jedini~ni poja~ava~i realizovani su sa operacionim poja~ava~ima sa negativnom povratnom spregom. Osobina im je da imaju beskona~no veliku ulaznu otpornost i stoga predstavljaju idealne razdvojne stepene jer znatno smanjuju optere}enje D/A konvertora i analognog ulaza.
Analogni ulaz mo`e da poslu`i za zatvaranje strujne petlje regulisanog pogona jednosmerne struje tj. na A/D se dovodi napon sa LEM-a srazmeran struji indukta. Analogni izlaz mo`e poslu`iti za davanje signala, recimo, kojim se mo`e regulisati pobuda motora, ako se `eli regulacija brzine preko nominalne (slabljenje polja). Ako se mikrora~unar ne koristi za regulaciju pogona jednosmerne struje, analogni ulaz i izlaz mogu poslu`iti za primanje, odnosno slanje, nekih drugih signala (fizi~kih veli~ina) u zavisnosti od primene.
U pravilnim vremenskim intervalima vr{imo odre|ivanje brzine (o~itavanje broja~a sa enkodera) i vrednosti struje (preko A/D konvertora).Na osnovu njihovih referentnih vrednosti vr{imo ra~unanje novih referentnih vrednosti i vrednosti izlaza, koji je srazmeran sra~unatom naponu indukta (mo`e i neka druga veli~ina u zavisnosti od primene). Izlaz mo`e biti napon ,preko D/A konvertora, ili signali za paljenje tranzistora nekog ~opera (digitalni izlazi, neki od prvih {est pinova porta P1 μP). Kada `elimo da odredimo struju zadamo impuls za po~etak konverzije tako {to u port C PIA0 upisujemo vrednost 10000000b, tj. pin PC.7 postavljamo na 1. Moramo sa~ekati da se konverzija zavr{i i stalno o~itavati port C i kada se pojavi 1 na pinu PC.3 znamo da je konverzija zavr{ena. Zatim o~itavamo vrednost struje, prvih osam bitova sa porta B, a preostala dva bita sa porta C.
D/A konverzija je jednostavnija. Upisom u port A tj. u D/A konvertor, zadajemo `eljeni izlazni analogni signal (napon).
Sledi program kojim se ovo realizuje:
PIA0_BASE equ 08000h; bazna adresa PIA0 PIA0_A equ (PIA0_BASE + 0); adresa porta A PIA0_B equ (PIA0_BASE + 1); adresa porta B PIA0_C equ (PIA0_BASE + 2); adresa porta C PIA0_CONR equ (PIA0_BASE + 3); adresa controlnog registra PIA0_INIT equ #10000011b; vrednost inicijalizacij, ANALO_IZLAZ at 079h STRUJA_N at 07Ah STRUJA_V at 07Bh . . MOV
34
DPTR,#PIA0_CONTR MOV A,#PIA0_INIT MOVX @DPTR,A . . MOV DPTR,#PIA0_A MOV A,ANALO_IZLAZ MOVX @DPTR,A ; Upisujemo u D/A konvertor. . .
MOV DPTR,#PIA0_C MOV A,10000000b; Zadajemo start A/D konverzije upisom 1 u MOVX @DPTR,A ; PC.7.
skok: MOVX A,@DPTR; Iz petlje se izlazi kad se na PC.3 pojavi 1. ANL A,#00001000b JZ skok MOVX A,@DPTR ANL A,#00000011b; Upisujemo samo najni`a dva bita sa porta C. MOV STRUJA_V,A; U interni RAM, na adresu rezervisanu za vi{i MOV DPTR,#PIA0_B;bajt struje, upisujemo vrednost. MOVX A,@DPTR MOV STRUJA_N,A; U interni RAM, na adresu rezervisanu za . ni`i bajt struje, upisujemo vrednost. . . END
IV.6 Deo sa konektorima
Na kartici postoji pet devetopinskih konektora. Preko prvog konektora dovodi se napajanje i masa. Na tri pina dovodi se napon od +8V (pinovi 7,3,6), na po jedan pin se dovodi naponi od -15V odnosno +15V (pinovi 9,4). Masa se dovodi na tri pina (pinove 1,5,7). Na ostala ~etiri konektora na pinove 1 i 5 se dovode, respektivno, stabilisani napon od +5V i masa. Razlog je mogu}nost napajanja drugih kartica u sistemu. Na drugom konektoru vezani su digitalni ulazi/izlazi. Na tre}em konektoru, vezani su analogni ulaz i izlaz (pinovi 6,2), kao i naponi od +15V i -15V (pinovi 7,3) i jo{ dve mase (pinovi 4,9). Razlog je mogu}nost postojanja elektronike koja zahteva ove napone na podsistemima sa kojih dolazi (ide) analogni ulaz (izlaz). Na ~etvrti konektor dovode se signali sa
35
enkodera (pinovi 2,3,4,6,7,8). Preko petog konektora ide serijska komunikacija, preko pina 2 primaju se podaci, a preko pina 3 se {alju. Tako|e su dovedeni digitalni ulazi/izlazi sa μP, i to INT 1 na pin 6, INT 0 na pin 7, T0 na 8 i T1 na 4. Kao ulazi mogu da slu`e za brojanje spoljnih doga|aja (T0 i T1) i za spoljno generisanje prekida (INT 1 i INT0). Ako se ne koriste za brojanje doga|aja i generisanje prekida, mogu se koristiti kao univerzalni ulazi/izlazi.
V Memorijska mapa mikrora~unara
A15 A15 A15 A15 . . . A15 Adresa Naziv Signal sekcije
0 0 0 x . . . x
0 0 1 x . . . x
0 1 0 x . . . x
0 1 1 x . . . x
1 0 0 x . . . x
1 0 1 x . . . x
0000-1FFF
2000-3FFF
4000-5FFF
6000-7FFF
8000-9FFF
A000-BFFF
RAM 1
RAM 2
RAM 3
RAM 4
PIA 0
PIA 1
CS#RAM1
CS#RAM2
CS#RAM3
CS#RAM4
CS#PIA0
CS#PIA1
36
VI ZAKLJU^AK
Kao {to je re~eno mikrora~unar se bazira na 8-bitnom INTEL-ovom
mikroprocesoru 8031 (μP) . Iako na tr`i{tu postoji veliki broj usavr{enih i pro{irenih mikroprocesora svi oni se baziraju na 8031, tako da se trud ulo`en u u~enje i savladavanje tehnologije projektovanja hardvera i softvera za μP 8031 vi{estruko isplati. Upoznavanje sa novim μP-ima zahteva samo upoznavanje sa novim registrima op{te namene (SFR).
Umesto μP 8031 mo`e se upotrebiti procesor 8032 bez izmene {eme. On ima dodatni tajmer 2. Tada se mora voditi ra~una o pinovima 0 i 1 porta P1 jer njih koristi tajmer 2. Po{to ovaj mikrora~unar treba stalno da komunicira preko serijske veze sa ra~unarom, ovaj dodatni tajmer se mo`e iskoristiti za generisanje takta za serijski port, tj. bit brzine (baud rate). Tako da se preostala dva tajmera mogu efikasnije iskoristiti. Prema tome bolje je upotrebiti mikroprocesor 8032.
Prilikom pisanja programa za upravljanje elektromotornim pogonom treba voditi ra~una o enkoderskom delu. Ideja je da se broja~ dovoljno ~esto o~itava (da se nepre|e 127) da bi se znao smer obrtanja. Zbog toga moramo broja~ vi{e puta o~itati u pravilnim vremenskim intervalima i o~itane vrednosti me|usobno sabrati. Sa tom vredno{}u treba i}i u glavnu petlju programa u kojoj se izra~unava brzina. Ovim posti`emo ve}u rezoluciju brzine, jer ako bi smo o~itavali samo jedamput rezolucija bi bila 127. To zna~i da ako je maksimalna brzina 1500 o/min, kvant brzine bi bio 11,811 o/min, {to je velika nepreciznost.
37
VII PRILOG
sl.5
38
sl.6
39
sl.7
Date: May 10, 1996 Sheet of
Size Document Number REV
A2 1
CU2
100Fn
CU28
100nF
CU29
100nF
+5V
C5
100nF
0V
VCC
CU1
100nFba0ba1ba2ba3ba4ba5ba6ba7
1 16 2 15 3 14 4 13 5 12 6 11 7 10 8 9
R2
R-PACK
ad0ad1ad2ad3ad4ad5ad6ad7
D0 3
D1 4
D2 7
D3 8
D4 13
D5 14
D6 17
D7 18
OC 1
G 11
Q0 2
Q1 5
Q2 6
Q3 9
Q412
Q515
Q616
Q719
U7
74LS373
ad0ad1ad2ad3ad4ad5ad6ad7
EA/VP 31
X1 19
X2 18
RESET 9
INT0 12
INT1 13
T0 14
T1 15
P1.0 1
P1.1 2
P1.2 3
P1.3 4
P1.4 5
P1.5 6
P1.6 7
P1.7 8
P0.039
P0.138
P0.237
P0.336
P0.435
P0.534
P0.633
P0.732
P2.021
P2.122
P2.223
P2.324
P2.425
P2.526
P2.627
P2.728
RD17
WR16
PSEN29
ALE/P30
TXD11
RXD10
U1
8031
r - RAM
e - EPROM
sw - SIGNAL PREBACIVANJA
xtal
12MHzC4
20pF
C3
20pFVCC
C7
10nF
5 9 4 8 3 7 2 6 1
P1
CON 1
rxINT0
T0T1
VCC
INT1
tx
C8
10nF
5 9 4 8 3 7 2 6 1
P2
CON 2
AA#BB#C
tx
rx
VCC
txd
rxd
C12
10nF
C13
10nF
C1+ 1
C1- 3
C2+ 4
C2- 5
T1I11
T2I10
R1O12
R2O 9
R1I 13
R2I 8
T2O 7
T1O 14
V+ 2
V- 6
VCC
16
U22MAX232
res
P0P1P2P3P4P5P6
INT0INT1T0T1
a8a9a10a11a12a13a14a15
rd#wr#psen#
dir#
txdrxd
a8a9a10a11a12a13a14a15
a8a9a10a11a12a13a14a15
1A1 2
1A2 4
1A3 6
1A4 8
2A1 11
2A2 13
2A3 15
2A4 17
1G 1
2G 19
1Y118
1Y216
1Y314
1Y412
2Y1 9
2Y2 7
2Y3 5
2Y4 3
U8
74LS244
ba8ba9ba10ba11ba12ba13ba14ba15
1 16 2 15 3 14 4 13 5 12 6 11 7 10 8 9
R1
R-PACK
ba15ba14ba13ba12ba11ba10ba9
psen#
rd#r_e_sw
wr#cs#eprom
cs#ram1cs#ram2cs#ram3cs#ram4cs#pia1cs#pia2
r#readr#write
I1/CLK 1
I2 2
I3 3
I4 4
I5 5
I6 6
I7 7
I8 8
I9 9
I10 10
I11 11
I12 13
O123
O222
O321
O420
O519
O618
O717
O816
O915
O1014
U10
22V10
r - ram
VIGND
VO +5V
bd0bd1bd2bd3bd4bd5bd6bd7
+8V
100nF
A0 10
A1 9
A2 8
A3 7
A4 6
A5 5
A6 4
A7 3
A8 25
A9 24
A10 21
A11 23
A12 2
CS1 20
CS2 26
WE 27
OE 22
D011
D112
D213
D315
D416
D517
D618
D719
U?
6264
ba0ba1ba2ba3ba4ba5ba6ba7ba8ba9ba10ba11ba12
bd0bd1bd2bd3bd4bd5bd6bd7
ad0ad1ad2ad3ad4ad5ad6ad7
A1 2
A2 3
A3 4
A4 5
A5 6
A6 7
A7 8
A8 9
G 19
DIR 1
B118
B217
B316
B415
B514
B613
B712
B811
U9
74LS245
dir#
wr#
D034
D133
D232
D331
D430
D529
D628
D727
RD 5
WR36
A0 9
A1 8
RESET35
CS 6
PA0 4
PA1 3
PA2 2
PA3 1
PA4 40
PA5 39
PA6 38
PA7 37
PB0 18
PB1 19
PB2 20
PB3 21
PB4 22
PB5 23
PB6 24
PB7 25
PC0 14
PC1 15
PC2 16
PC3 17
PC4 13
PC5 12
PC6 11
PC7 10
U11
8255
r_e_sw
12
3
U13A
74LS08
in0in1in2in3in4in5in6in7in8in9
+15V
INPUT 13
ANA COM 14
BIPOL OFF 15
B & C 11
B1 9
B2 8
B3 7
B4 6
B5 5
B6 4
B7 3
B8 2
B9 1
B1018
DATA RDY17
U15
AD571
3
2 6
7 5
4 8 1
U20
LM607
C#
an.ulaz
C10 5 9 4 8 3 7 2 6 1
P5
CON 5
an.izlaz VCC
+15V-15V
an.ulazC6
-15V
+5V
-15V
in0in1
in2in3in4in5in6in7in8in9
12
13
3
16
1
2
15
14
41110 9 8 7 6 5
U16
AM1408L8
rd#
BD0BD1BD2BD3BD4
BA0BA1WR#
rstcs#pia2
ad0ad1ad2ad3ad4ad5ad6
cs#ram1
ba0ba1ba2ba3ba4ba5ba6
ba0ba1ba2ba3ba4ba5ba6
VCC
A010
A1 9
A2 8
A3 7
A4 6
A5 5
A6 4
A7 3
A825
A924
A1021
A1123
A12 2
A1326
A1427
CE20
OE22
VPP 1
D0 11
D1 12
D2 13
D3 15
D4 16
D5 17
D6 18
D7 19
U6
AM27C256
r#read
r#write
bd0bd1bd2bd3bd4bd5bd6
A0 10
A1 9
A2 8
A3 7
A4 6
A5 5
A6 4
A7 3
A8 25
A9 24
A10 21
A11 23
A12 2
CS1 20
CS2 26
WE 27
OE 22
D011
D112
D213
D315
D416
D517
D618
D719
U?
6264
+15V
0V
C15
100nF
+15V
-15V
0V
C16
100nF
-15V
bd7
bd0
VCC
A0 10
A1 9
A2 8
A3 7
A4 6
A5 5
A6 4
A7 3
A8 25
A9 24
A10 21
A11 23
A12 2
CS1 20
CS2 26
WE 27
OE 22
D011
D112
D213
D315
D416
D517
D618
D719
U?
6264
cs#eprom
ba7ba8ba9ba10ba11ba12ba13ba14
ba7ba8ba9ba10ba11ba12
ba0
r#read
r#write
cs#ram2
VCC
ad7
rd#dir#
4
5 6
U13B
74LS08
BD5BD6BD7
displej
DANEN.SCH
sd[0-11]
VCCVCC
VCC
-15V
+15V
3
2 6
75
481 U21
LM607
an.izlaz
5 9 4 8 3 7 2 6 1
P4
CON 4
0V0V0V
+8V+8V+8V
+15V-15V
ed0ed1ed2ed3
A
15
B
1
C
10
D
9
UP
5
DN
4
LOAD
11
CLR
14
QA
3
QB
2
QC
6
QD
7
CO
12
BO
13
U18193
enaset
D034
D133
D232
D331
D430
D529
D628
D727
RD 5
WR36
A0 9
A1 8
RESET35
CS 6
PA0 4
PA1 3
PA2 2
PA3 1
PA4 40
PA5 39
PA6 38
PA7 37
PB0 18
PB1 19
PB2 20
PB3 21
PB4 22
PB5 23
PB6 24
PB7 25
PC0 14
PC1 15
PC2 16
PC3 17
PC4 13
PC5 12
PC6 11
PC7 10
U12
8255
psen#
cs#ram3
ba1ba2ba3ba4ba5ba6ba7ba8ba9ba10ba11ba12
r#read
r#write
VCC
D1 R3
27k
bd1bd2bd3bd4bd5bd6bd7
T
1
2 3
U14A
74LS00
rst
C2
4
5 6
U14B
74LS00
9
10 8
U14C
74LS00
C1
4.7nF
bd0bd1bd2bd3bd4bd5bd6bd7
A0 10
A1 9
A2 8
A3 7
A4 6
A5 5
A6 4
A7 3
A8 25
A9 24
A10 21
A11 23
A12 2
CS1 20
CS2 26
WE 27
OE 22
D011
D112
D213
D315
D416
D517
D618
D719
U?
6264
VCCba0ba1ba2ba3ba4ba5ba6ba7ba8ba9ba10ba11ba12
wr#rd#
ba0ba1rst
cs#pia1
bd0bd1bd2bd3bd4
s0s1s2s3s4s5s6s7
dis1dis2dis3dis4
ed0ed1ed2ed3ed4
D0 3
D1 4
D2 7
D3 8
D4 13
D5 14
D6 17
D7 18
OC 1
G 11
Q0 2
Q1 5
Q2 6
Q3 9
Q412
Q515
Q616
Q719
U17
74LS373
set
rst
ed4ed5ed6ed7
A
15
B
1
C
10
D
9
UP
5
DN
4
LOAD
11
CLR
14
QA
3
QB
2
QC
6
QD
7
CO
12
BO
13
U19193
5 9 4 8 3 7 2 6 1
P3
CON 3
P0P1P2P3P4
VCC
P5P6
enkoder
ENKODER.SCH
up
downA
B#
A
B#
set
rst
ena
ed5ed6ed7
bd5bd6bd7
cs#ram4
VCC
r#readr#write
c
40
Date: February 29, 1996 Sheet of 3
Size Document Number REV
A3 2
R33
R
1 2
U23A
74LS14
5 6
U23C
74LS14
1
2 3
U24A
74LS32
3 4
U23B
74LS14
9 8
U31D
74LS14
Ad
12
1311
U14D
74LS00
C21CAP NP
A#faza A
1
2 3
U25A
74LS08 4
5 6
U24B
74LS32
up
4
5 6
U25B
74LS08
9
10 8
U25C
74LS08
B# 11 10
U23E
74LS14
B 13 12
U23F
74LS14
faza B#
12
1311
U25D
74LS08
9
10 8
U24C
74LS32
down
sl.8
41
Date: February 29, 1996 Sheet 2 of 3
Size Document Number REV
A3 3
Displej
7 6 4 2 1 9 10 5
3 8
D1
DISPLEJ
1 16 2 15 3 14 4 13 5 12 6 11 7 10 8 9
R1
R-PACK
D0 3
D1 4
D2 7
D3 8
D4 13
D5 14
D6 17
D7 18
OC 1
G 11
Q0 2
Q1 5
Q2 6
Q3 9
Q4 12
Q5 15
Q6 16
Q7 19
U26
74LS373
S0
DIS1
S1S2S3S4S5S6S7
VCC
7 6 4 2 1 9 10 5
3 8
D2
DISPLEJ
1 16 2 15 3 14 4 13 5 12 6 11 7 10 8 9
R2
R-PACK
D0 3
D1 4
D2 7
D3 8
D4 13
D5 14
D6 17
D7 18
OC 1
G 11
Q0 2
Q1 5
Q2 6
Q3 9
Q4 12
Q5 15
Q6 16
Q7 19
U27
74LS373
S0S1S2S3S4
DIS2
S5S6S7
VCC
7 6 4 2 1 9 10 5
3 8
D3
DISPLEJ
1 16 2 15 3 14 4 13 5 12 6 11 7 10 8 9
R3
R-PACK
D0 3
D1 4
D2 7
D3 8
D4 13
D5 14
D6 17
D7 18
OC 1
G 11
Q0 2
Q1 5
Q2 6
Q3 9
Q4 12
Q5 15
Q6 16
Q7 19
U28
74LS373
S0S1S2S3S4S5S6S7
DIS3
D0 3
D1 4
D2 7
D3 8
D4 13
D5 14
D6 17
D7 18
OC 1
G 11
Q0 2
Q1 5
Q2 6
Q3 9
Q4 12
Q5 15
Q6 16
Q7 19
U29
74LS373
VCC
1 16 2 15 3 14 4 13 5 12 6 11 7 10 8 9
R4
R-PACK
7 6 4 2 1 9 10 5
3 8
D4
DISPLEJ
VCC
S0S1S2S3S4S5S6S7
DIS4
sd[0-11]
sl.9
42
sl.10
43
LITERATURA
1. 8-BIT EMBEDDED CONTROLLER HANBOOK, INTEL 1989
2. S. Te{i} : ELEKTRONIKA IMPULSNA I DIGITALNA KOLA
3. M. Stoji} : DIGITALNI SISTEMI AUTOMATSKOG UPRAVNJANJA