181 lines
6.5 KiB
Plaintext
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<EFBFBD>lgende lese/skrive-operasjoner til kanalens kommandoregister. F<>rst
|
|||
|
skrives en peker til kommandoregisteret som angir hvilket register som <20>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 <20> 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
|
|||
|
<20>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 <20>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<73>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 <20> 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<53> 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<EFBFBD>rn Djupdal, djupdal@stud.ntnu.no
|
|||
|
|