Avtorja:
Borut
Seljak
Peter
Paglovec
OPIS NALOGE
HARDVERSKA IZVEDBA
PROGRAMSKA IZVEDBA
PIT
PROGRAMSKA KODA
OPIS NALOGE:
V filmih je lepo videti elektronske kljuèavnice,
zgleda fino in zelo moderno. Zato sva hotela nekaj takega narediti in preiskusit.
Naprava naj bi delala podobno kot bankomat. Prideš,
vstaviš kartico, vtipkaš geslo in vrata se odprejo(žal ne dajo denarja).
Uporabila sva telefonske kartice, za kodo pa
uporabila prebrano serijsko številko kartice, katero se primerja s kodo
uporabnika.
Da je stvar še malo bolj zanimiva, sva naredila
še menujsko izbiro nastavitev kljuèavnice(trajanje vklopa releja,
definiranje in brisanje uporabnikov). Za dostop do tega menuja je potrebno
vstaviti "sistemsko" kartico in vpisati kodo.
HARDVERSKA
IZVEDBA: (nazaj)
Delala sva z RT68-03, uènim vezjem (avtor
Sreèko Levaèiè),dalo se ga je dobiti na faksu. Na
plošèico sva pritrdila tipkovnico, displej, rele, podnožje za kartico,
piezo piskaè in vsa integrirana vezja, potrebna za dostopanje do
teh enot.
Displej sva priklopila na podatkovno vodilo,
ker pa je RW signal prehiter za direktno krmiljenje displeja oz. da bi
izbiral med vpisom in branjem, sva RW priklopila na naslovno vodilo, ker
so ti biti tega vodila dlje postavljeni (glej sliko in shemo).
S tem sva dosegla, da procesor vidi displej na
štirih naslovih(osnovni prijemi za delanje z displeji so opisani v Svetu
elektronike št.6,7; in na straneh proizvajalcev). Za krmiljenje so vsi
displeji, ki imajo vgrajeno vezje HD44780, enaki.
Tipkovnico sva sunila iz domaèega
iskrinega telefonskega aparata (eta). Priklopila sva jo preko D flip-flopa
IC 74hc573(izhod za izbiro vrstice) in vhodnega IC74hc245 (ki doloèa
smer podatkov) na podatkovno vodilo.
Podnožje kartice sva priklopila direktno
na port1. Za ugotavljanje prisotnosti kartice je v podnožju vgrajeno stikalo,
ki se razklene ko je vstavljena kartica.
Rele je preko transistorja priklopljen
na enega od prostih pinov porta1(glej shemo). Glej tudi PIT.
Piezo piskaè je priklopljen enako
kot rele.
(nazaj)
PROGRAMSKA
IZVEDBA:
Kdor se hoèe poglobiti v programsko izvedbo
tega projekta naj si vzame nekaj dopusta in se potopi v 1513 vrstic dolg
tekst, ki govori o dogajanju med izvajanjem programa.
Na kratko.
Program je sestavljen iz opravil in glavnega
programa.
(nazaj)
Opravila:
Tabela opravil:
ORG _EPROM ;Must start
at $xx00!
SCHTAB FDB
TIM ;Timer.
FDB KBD
;Tipkovnica.
FDB KARTASK ; ;kartica
FDB SCHRET; ;Void task.
FDB TIM
;Timer.
FDB SCHRET; ;Void task.
FDB IZPISTASK ;IZPIS NA DISPLEJ.
FDB SCHRET ;Void task.
FDB TIM
;Timer.
FDB SCHRET; ;Void task.
FDB KARTASK ;kartica
FDB SCHRET; ;Void task.
FDB TIM
;Timer.
FDB BEE
;piskac
FDB IZPISTASK ;IZPIS NA DISPLEJ.
FDB RELE ;Rele.
(nazaj)
-tipkovnica (Peter): Procesor vidi tipkovnico
kot dve spominski lokaciji. Prva je za vpis, z njo izbereš vrstico. Druga
je za branje, z nje prebereš stanje tipk v posamezni vrstici. Pritisnjene
tipke se shranjujejo v FIFO medpomnilnik( med KBDB in KBDE). Ob vsakem
pritisku tipke piezo zapiska (pošlje se ukaz driverju za piskaè
preko BEEDUR).
-piezo piskaè(Peter): Opravilo
ima svojo èasovno rezino, ki se izvede 64-krat na sekundo. Ob vsakem
klicu preveri, èe je v BEEDUR zapisana nenièelna vrednost.
Èe je, se postavi bit porta1 in s tem sproži piskanje hkrati se
tudi BEEDUR zmanjša za 1, sicer se briše bit porta 1.
-rele(Peter): Opravilo deluje podobno
kot piskaè, le da se RELEDUR zmanjša samo vsakih 64 klicev.
-displej(Peter in Borut): Krmilimo ga
preko podatkovnega in ukaznega registra. Procesor ju vidi na štirih lokacijah.
Posebej naslov za branje in pisanje v register. Za prikaz znakov na displej
vpisujemo v podatkovni register($1002) , za nastavitve displeja pa v ukazni
register($1000). Ob vsakem vpisu podatka ali ukaza pa je potrebno preverjati
še zastavico BUSY, ki pove, èe je displej že pripravljen na nov
podatek ali ukaz. Ta zastavica je osmi bit ukaznega registra, ki ga preberemo
na ($1001). Driver bere podatke iz medpomnilnika (med DISB in DISE).
-kartica(Borut): Kartica je prikljuèena
na port1. Z njim generiramo clock impulze, ki poveèujejo naslovni
števec kartice, med tem pa beremo vsak bit vsebine kartice. Na zaèetku
je potrebno kartico resetirati da postavimo naslovni števec na 0. Potem
pa pošiljamo preko porta 1. Clock impulze, hkrati pa beremo izhod iz kartice.
(nazaj)
Glavni program (Borut):
Na zaèetku je potrebna inicializacija
timerja, zbriše vse kartice, ki so vpisane v spominu, ker bi sicer lahko
prišlo do napak v delovanju. Ker je ob vsakem opravilu še precej podprogramov
za branje iz medpomnilnikov in vpisovanje vanj, je sam glavni program dokaj
enostaven.
Deli se na dva dela. Nastavljanje in Odpiranje.
Za odpiranje najprej program poèaka da
je vstavljena kartica in da je prebrana (spremlja KARSTAT in KTABSTAT).
Nato se klièe podprogram za branje Kode, ki se shrani na doloèeno
spominsko lokacijo in šele nato se išèe in primerja zapis kartice
v tabeli kjer je seznam kartic. Vsaka kartica ima zapis dolg 9 znakov (9
bytes). Ko najde kartico pogleda v tabeli, èe je ta kartica brisana
(preverja status katrice v tabeli mora biti 1), nato pa preverja še kodo
ki jo je uporabnik vpisal. Èe ne najde kartice ali da koda ni pravilna,
izpiše sporoèilo, da ni pravilna kartica in se vrne na zaèetek.
Za dostop do menuja nastavitev, je potrebno vstaviti
sistemsko kartico in vtipkati pravilno kodo, ki je shranjena v Epromu (tudi
ob prvem vklopu napajanja to storimo). Potem se izpisuje na displej menujski
tekst in ob pritisku na tipko se izpiše naslednji.
Pri vnašanju nove kartice se v tabeli kartic
najprej poišèe prazno mesto tako da beremo status kartic v tabeli(
status nam omogoèa da lahko nakluèno brišemo in vnašamo nove
kartice), nato v tabelo vpišemo novo kartico, novo kodo in nato postavimo
status te zapisane kartice na 1.
Pri brisanju kartice brišemo le status katrice
v tabeli iz 1 v 0.
(nazaj)
PIT
(problemi in težave):
Najveè težav je povzroèal rele,
ker je porabil preveè toka ob vklopu, zato se je mikrokontroler
zelo nenavadno obnašal. Ker sva iskala napako v programu, je preteklo precej
èasa do odkritja problema v napajanju. Rešitev je bil kondenzator
na napajanju, ki je prispajkan blizu releja.
PROGRAMSKA KODA:
lab1.asm
lab1.mot
Za vse dodatne informacije se obrnite na :
borut.seljak@kiss.uni-lj.si