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