KOMUNIKACIJA
Z AD PRETVORNIKOM
Podatki, potrebni za razumevanje komunikacije s tehtnico so v navodilih
za AD pretvornik AD7715 ter v navodilih za mikroprocesor 68HC11.
V naslednjem sestavku bom poskušal kar se da enostavneje razložiti vzpostavitev
komunikacije, oziroma pomen ukazov v programu.
Najprej bom opisal 3 podprograme (subrutine), ki so mi povzročile največ
težav pri pisanju programa.
Pomembno je da vemo, da sta 68HC11 in AD7715
povezana preko 4. povezav.
HC11 ima pri serijski komunikaciji dve liniji, MOSI in MISO. MISO linija
je lahko vhod v master načinu ali pa izhod v slave načinu. Podobno je MOSI
linija lahko izhod v master načinu ali vhod v slave načinu. Ker je v našem
primeru glavni 68HC11, uporabimo MOSI linijo za izhod (vezana je na DATA
IN na AD pretvorniku), MISO linijo pa za vhod (vezana je na DATA OUT na
AD pretvorniku). Poleg tega je potrebna tudi povezava serijske ure
SCK pri HC11 z uro SCLK pri AD pretvorniku. Najbolj zanimiva povezava pa
je iz SS na CS.
Poglejmo si jo podrobneje. SS signal pri HC11 je slave select signal. Z
njim določimo, katera naprava je slave. Ta izhod je v našem primeru nastavljen
na 1. To storimo že na samem začetku programa, ko inicializiramo naš sistem
(8 bitno besedo pošljemo na PORT D)
Kadar pa prenašamo podatke iz HC11 na AD pretvornik ali obratno, pa mora
biti bit SS nastavljen na 0. Tukaj se pojavita dva podprograma, CSYES in
CSNO. Kadar hočemo prenašati podatke, uporabimo podprogram CSYES, ki bit
SS postavi na 0. To stori tako, da naloži PORT D, mu postavi 5. bit na
0, vse ostale bite pa pusti pri miru. Nato 8 bitno besedo shrani nazaj
na PORT D. Po končanem prenosu pa s podprogramom CSNO na podoben način
bit 5 spet postavimo na 1. Če SS bita po končanem prenosu ne postavimo
nazaj na 1, ostane MODF zastavica (mode fault error flag) postavljena,
pri čemer master slave komunikacija ne deluje pravilno.
Pri prenosu uporabljamo še en podprogram. ST podprogram je zanka, ki preverja
8 bit SPSR registra (statusnega registra) na HC11. Ponavlja se, dokler
ta bit ni postavljen na 1, kar pomeni, da se je prenos podatkov uspešno
zaključil.
Tako vidimo, da ti trije podprogrami (ST, CSYES in CSNO) predstavljajo
povezano celoto, ki jo moramo uporabiti vedno, kadar hočemo kaj prebrati
s tehtnice, ali pa ji poslati kakšen podatek. Pri opisu samega programa
ne bom več opisoval teh treh podprogramov, saj nam je sedaj jasno, da mora
biti vedno pred komunikacijo CSYES, ki nastavi SS bit na 0. Nato sledi
branje ali pošiljanje podatkov. S podprogramom ST preverimo, če je prenos
že končan in ko je končan, še s podprogramom CSNO postavimo SS bit
nazaj na 1. To je osnovni princip pošiljanja in branja podatkov.
In sedaj k samem programu. Vedno, ko ga poženemo, moramo najprej nastaviti
PORT D ter SPCR (serijski kontrolni register) na mikroprocesorju. V serijskem
kontrolnem registru vključimo serijsko komunikacijo, določimo master mode
delovanja, port D izhode, ter clock.
Nato sledi reset AD pretvornika. Za pravilno delovanje ga je potrebno izvesti
vedno ob vključitvi sistema. To programsko storimo tako, da mu pošljemo
4 bayte (32) enic. Podatke pošiljamo ali jih beremo tako, da AD pretvorniku
pošljemo 8 ničel.
Po resetu je na vrsti nastavitev registrov na AD pretvorniku. Pri tem moramo
vedeti, da imamo vedno direkten dostop samo do komunikacijskega registra.
Zapisi si namreč sledijo po sledečem vrstnem redu: vpis v komunikacijski
register, pri katerem določimo v kateri register bomo v naslednjem koraku
pisali (iz katerega registra bomo v naslenjem koraku brali). Pisanju ali
branju iz registra ponovno sledi vpis v komunikacijski register.
Ravno tako se po resetu AD pretvornika pričakuje vpis v komunikacijski
register. Ta je sestavljen iz 8 bitov. Bit 7 je 0/DRDY bit, ki nam sporoča
pripravljenost podatkov za branje. Če niso, je ta bit postavljen na 0.
Bit 6 je ZERO bit, ki mora biti za pravilno delovanje nastavljen na 0.
Na to vrednost se tudi sam postavi, ko so podatki pripravljeni za branje.
V kateri register bomo pisali (ali iz njega brali) določimo s 5. in 4.
bitom. Kombinacija 00 pomeni komunikacisjki register, 01 nastavitveni register,
10 testni register ter 11 podatkovni register, ki je sestavljen iz dveh
bytov. Naslednji bit je R/W bit, ki določa, ali bomo v naslednjem koraku
iz nekega registra brali (R/W = 1) ali pa vanj pisali (R/W = 0). Ostali
trije biti so še stand by bit ter bita za nastavitev ojačanja, ki pa za
nas niso pomebni, zato jih pustimo nastavljene na 0.
Če se sedaj povrnemo k programu, vidimo, da smo po resetu nastavili komunikacijski
register za vpis v nastavitveni register ter ga z vpisom vanj tudi nastavili.
Nastavitvam sledi branje podatkov iz AD pretvornika. Najprej z vpisom v
komunikacijski register določimo branje iz njega. Sledi preverjanje DRDY
in ZERO bita. Ta zanka se ponavlja, dokler ne dobimo informacije, da je
podatek pripravljen za oddajo. Ko se to zgodi, s komunikacijskim registrom
določimo branje iz podatkovnega registra. Za branje pošljemo dvakrat po
8 ničel, dobljene podatke pa shranimo v registra PODL in PODH.
Nazaj na prvo stran