117 lines
4.3 KiB
Plaintext
117 lines
4.3 KiB
Plaintext
Parallellporter i TIKI-100 Rev C
|
|
--------------------------------
|
|
|
|
TIKI-100 inneholder en Z80 PIO krets med 2 stk. 8-bits I/O porter
|
|
(hver med kvitteringssignalene RDY og STB).
|
|
Begge disse er koblet opp til parallellport P3. Se portbeskrivelsen
|
|
for mer informasjon om pinnetilordning.
|
|
|
|
Z80 PIO kontrolleres gjennom 4 I/O porter:
|
|
|
|
I/O-port 08H: Parallellport A, dataord
|
|
|
|
Her leses og skrives data for parallellport A.
|
|
|
|
I/O-port 09H: Parallellport B, dataord
|
|
|
|
Her leses og skrives data for parallellport B.
|
|
|
|
I/O-port 0AH: Parallellport A, styreord
|
|
|
|
Her skrives kontrollregisteret til parallellport A.
|
|
|
|
I/O-port 0BH: Parallellport B, styreord
|
|
|
|
Her skrives kontrollregisteret til parallellport B.
|
|
|
|
Operasjonsmodi
|
|
|
|
Parallellportene kan settes til en av 4 modi:
|
|
|
|
Modus 0: Data ut. Data skrevet til dataregisteret blir satt rett ut på
|
|
porten. De kan også leses tilbake. Når gyldige data settes ut
|
|
på porten, går RDY høy. STB kan settes høy av eksternt utstyr
|
|
for å indikere at data er lest.
|
|
Modus 1: Data inn. Porten klokker inn data utenfra når det eksterne
|
|
utstyret setter STB høy. Data kan hentes inn til CPU ved å
|
|
lese dataregisteret. Da blir samtidig RDY høy, og indikerer
|
|
til det eksterne utstyret at porten er klar for en ny byte.
|
|
Når STB settes høy, går RDY lav, og kretsen kan gi interrupt.
|
|
Modus 2: Bidireksjonal (både inn og ut). Bare port A kan fungere i
|
|
modus 2. Når port A settes til modus 2, må samtidig port B
|
|
settes til modus 2 og port B må settes til å ikke generere
|
|
interrupts.
|
|
Data ut er lik modus 0, bortsett fra at data bare settes ut
|
|
når ASTB er lav.
|
|
Data inn er lik modus 1, bortsett fra at kvitteringssignalene
|
|
og interruptmulighetene til port B benyttes.
|
|
Modus 3: Bit kontroll. Individuelle bits i parallellporten kan settes
|
|
enten til inn eller ut. RDY og STB er ikke brukt. I stedet
|
|
genereres en interrupt hvis interruptbetingelsene til
|
|
input-pinnene bestemt under programmering av porten er
|
|
oppfyllt.
|
|
|
|
Programmering
|
|
|
|
Programmering av porten foregår ved skriving til portens
|
|
kontrollregister.
|
|
|
|
Følgende styreord kan skrives til kontrollregisteret:
|
|
|
|
Mode Control Word:
|
|
|
|
Bit 6-7: Velger modus:
|
|
Bit 7 Bit 6
|
|
0 0 Modus 0
|
|
0 1 Modus 1
|
|
1 0 Modus 2
|
|
1 1 Modus 3
|
|
Når modus 3 velges, MÅ etterfølgende ord skrevet til
|
|
kontrollregisteret være et retningsord, der en ener i en
|
|
bitposisjon medfører at tilsvarende I/O-pinne vil bli en
|
|
inngang, mens en nuller vil medføre at I/O-pinnen blir en
|
|
utgang.
|
|
Bit 4-5: Ubrukt
|
|
Bit 0-3: Må settes til 1111 (identifiserer at dette er Mode Control
|
|
Word).
|
|
|
|
Interrupt Control Word:
|
|
|
|
Bit 7 = 1: Skrur på interruptfunksjonen
|
|
Bit 7 = 0: Skrur av interruptfunksjonen
|
|
Bit 6 = 1: OG funksjon, alle bit med i interruptbetingelsen må gå til
|
|
den definerte tilstanden for at interrupt skal genereres.
|
|
Bit 6 = 0: ELLER funksjon, interrupt genereres når minst ett bit går
|
|
til den definerte tilstanden.
|
|
Bit 5 = 1: Definert tilstand er høy
|
|
Bit 5 = 0: Definert tilstand er lav
|
|
Bit 4 = 1: Kun utvalgte bit er med i interruptbetingelsen. Neste byte
|
|
skrevet til kontrollregisteret må være et maskeord. Dersom
|
|
et utvalgt bit i maskeordet er satt vil den tilsvarende
|
|
pinnen i parallellporten IKKE monitoreres for interrupt.
|
|
Dersom bit 4 er satt, MÅ det altså skrives et slikt
|
|
maskeord til kontrollregisteret umiddelbart etterpå.
|
|
Uansett modus, ved å sette bit 4 til 1 vil alle ventende
|
|
interrupts bli slettet.
|
|
Bit 0-3: Må settes til 0111 (identifiserer at dette er Interrupt
|
|
Control Word).
|
|
|
|
Interrupt Disable Word:
|
|
|
|
Bit 7 = 1: Skrur på interrupts
|
|
Bit 7 = 0: Skrur av interrupts
|
|
Bit 4-6: Ubrukt
|
|
Bit 0-3: Må settes til 0011 (identifiserer at dette er Interrupt
|
|
Disable Word).
|
|
|
|
Interrupt Vector Word:
|
|
|
|
Bit 1-7: Setter interrupt vektoren som skal benyttes ved interrupts
|
|
(med implisitt 0 i minst signifikante bit).
|
|
Bit 0: Må settes til 0 (identifiserer at dette er Interrupt Vector
|
|
word).
|
|
|
|
---
|
|
18 august 2002
|
|
Asbjørn Djupdal, djupdal@stud.ntnu.no
|