Projects/tigris
Projects
/
tigris
Archived
5
0
Fork 0
This repository has been archived on 2024-07-04. You can view files and clone it, but cannot push or open issues or pull requests.
tigris/reference/serie.txt

181 lines
6.5 KiB
Plaintext

Serieporter i TIKI-100 Rev C
----------------------------
TIKI-100 benytter seg av en Z80 DART som inneholder to asynkrone RS-232
serieporter.
DART kontrolleres gjennom 4 I/O porter:
I/O port 04H: Seriekanal A, dataord
Gjennom denne porten leses og skrives data til serieport A.
I/O port 05H: Seriekanal B, dataord
Gjennom denne porten leses og skrives data til serieport B.
I/O port 06H: Seriekanal A, statusord/styreord
Ved skriving er dette kommandoregisteret til port A, ved lesing er det
statusregisteret.
I/O port 07H: Seriekanal B, statusord/styreord
Ved skriving er dette kommandoregisteret til port B, ved lesing er det
statusregisteret.
DART's interne registre
Hver seriekanal har 3 leseregistre og 6 skriveregistre. Disse kan nås gjennom to
etterfølgende lese/skrive-operasjoner til kanalens kommandoregister. Først
skrives en peker til kommandoregisteret som angir hvilket register som ønskes,
deretter skrives/leses det aktuelle registeret gjennom den samme I/O
porten. Dersom en lese/skrive operasjon ikke kommer etter en gyldig peker, vil
register 0 benyttes.
Leseregister 0
Bit 7 = 1: BRK. Seriekanalen ligger på +V i mer enn 2 tegnlengder.
Bit 6: Ikke i bruk.
Bit 5 = 1: CTS. Modemsignalet CTS er satt.
Bit 3-4: Ikke i bruk.
Bit 2 = 1: TBE. Transmit Buffer Empty. Sender har sendt tegn og er klar for et
nytt. Rett etter initialisering av seriekanal kan et tegn
skrives til dataporten uten å sjekke denne biten først. Dette
fordi denne biten settes først etter at et tegn har blitt sendt,
og vil derfor ikke være satt før første tegn er sendt.
Bit 1 = 1: INT. Interrupt er satt
Bit 0 = 1: RXA. Receive Character Available, dvs. nytt tegn mottatt og kan leses
ut av dataporten. Denne biten blir nullstilt etter at dataporten
har blitt lest.
Leseregister 1
Bit 7: Ikke i bruk.
Bit 6 = 1: FF. Format feil, f.eks feil antall stopbits.
Bit 5 = 1: RXO. Receiver Overflow, dvs innkommende tegn har kommet fortere enn
de har blitt lest ut av dataporten.
Bit 4 = 1: PF. Paritetsfeil.
Bit 1-3: Ikke i bruk.
Bit 0 = 1: AS. Alt sendt.
Leseregister 2
Interruptvektor kan leses ut av dette registeret. Bit 0-3 kan variere, avhengig
av status dersom "Status affects vector" er satt.
Skriveregister 0
I skriveregister 0 settes peker for det neste registeret man vil nå gjennom
denne porten.
Bit 6-7: Ikke i bruk
Bit 3-5: Peker til neste register som skal nås
Bit 5 Bit 4 Bit 3 Register
0 0 0 0
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
Bit 0-2: Nullstillingskommando
Bit 2 Bit 1 Bit 0 Funksjon
0 1 0 Nullstill status interrupt
0 1 1 Nullstill hele kanalen
1 0 0 Sett interrupt når neste serietegn
mottas
1 0 1 Nullstill senderinterrupt
1 1 0 Nullstill feilmelding
1 1 1 Retur fra interrupt (bare kanal A)
Skriveregister 1
Bit 5-7: Ikke i bruk.
Bit 3-4: RXI.
Bit 4 Bit 3 Type mottakerinterrupt
0 0 Ingen mottaker interrupt
0 1 Sett mottaker interrupt ved første mottatte tegn
1 0 Interrupt på alle mottatte tegn, paritet endrer
vektor (aner ikke hva det vil si)
1 1 Interrupt på alle mottatte tegn, paritet endrer
ikke vektor
Bit 2 = 1: SAV. Status Affects Vector, dvs interruptvektoren endres avhengig av
årsaken til interruptet.
Bit 1 = 1: TXI. Sett interrupt når senderen er klar for neste tegn.
Bit 0 = 1: EXI. Sett interrupt ved endring av eksterne signaler.
Skriveregister 2
Interruptvektor, skriv inn ønsket interruptvektor her. Interruptvektoren er delt
mellom begge seriekanalene.
Skriveregister 3
Bit 6-7: Antall bits pr. tegn i mottakeren
Bit 6 Bit 5 Antall bits
0 0 5
0 1 6
1 0 7
1 1 8
Bit 5 = 1: AE. Auto Enable, dvs senderen slås automatisk av og på med signalet
CTS.
Bit 1-4: Ikke i bruk.
Bit 0 = 1: RXE. Receiver Enable, dvs starter mottakerfunksjon.
Skriveregister 4
Bit 6-7: Neddeling av klokkefrekvensen, dvs hvilket tall innkommende
klokkefrekvens skal deles med for å få antall baud.
Bit 7 Bit 6 Neddeling
0 0 1
0 1 16
1 0 32
1 1 64
Bit 4-5: Ikke i bruk.
Bit 2-3: Antall stopbits
Bit 3 Bit 2 Antall
0 0 Ugyldig
0 1 1
1 0 1,5
1 1 2
Bit 1 = 1: PN. Like paritet.
Bit 0 = 1: P. Paritet skal benyttes.
Skriveregister 5
Bit 7: Ikke i bruk.
Bit 5-6: TN Antall bits pr. tegn i senderen
Bit 6 Bit 5 Antall
0 0 5
0 1 7
1 0 6
1 1 8
Bit 4 = 1: SB. Send Break, dvs legg serieutgangen på -V.
Bit 3 = 1: TXE. Start senderfunksjonen.
Bit 2: Ikke i bruk.
Bit 1 = 1: RTS. Slå på Request To Send.
Bit 0: Ikke i bruk.
Interrupts
Jeg er usikker på en del av DART's interruptgenerering. Dette er hva jeg tror:
Interruptvektor deles mellom kanalene.
Dersom "Status Affects Vector" er satt, vil interruptvektoren som benyttes
forandres avhengig av status. Vektoren forandres slik:
Sender B, normal: Bit 3 = 0, bit 2 = 0, bit 1 = 0
Sender B, feil: Bit 3 = 0, bit 2 = 0, bit 1 = 1
Mottaker B, normal: Bit 3 = 0, bit 2 = 1, bit 1 = 0
Mottaker B, feil: Bit 3 = 0, bit 2 = 1, bit 1 = 1
Sender A, normal: Bit 3 = 1, bit 2 = 0, bit 1 = 0
Sender A, feil: Bit 3 = 1, bit 2 = 0, bit 1 = 1
Mottaker A, normal: Bit 3 = 1, bit 2 = 1, bit 1 = 0
Mottaker A, feil: Bit 3 = 1, bit 2 = 1, bit 1 = 1
---
28 juni 2001
Asbjørn Djupdal, djupdal@stud.ntnu.no