200 likes | 317 Views
HCS12 – uporaba SCI. Priprava vmesnika: Določimo oz. izberemo hitrost delovanja, t.j. hitrost pošiljanja/sprejemanja. Določimo obliko podatkov, t.j. število podatkovnih bitov, parnost, ... Določimo način delovanja, t.j. način pošiljanja/sprejemanja, po potrebi omogočimo prekinitve.
E N D
HCS12 – uporaba SCI • Priprava vmesnika: • Določimo oz. izberemo hitrost delovanja, t.j. hitrost pošiljanja/sprejemanja. • Določimo obliko podatkov, t.j. število podatkovnih bitov, parnost, ... • Določimo način delovanja, t.j. način pošiljanja/sprejemanja, po potrebi omogočimo prekinitve. • Pošiljanje/sprejemanje • Pošiljanje/sprejemanje posameznega podatka. • To je osnova poljubne nadgradnje, t.j. • sprejem/oddaja niza, • formatiranje “izpisa”, • komunikacijski protokoli, ...
HCS12 – uporaba SCI • Oddaja • Preverimo stanje TDRE • Če je TDRE = 1, oddamo podatek, to je vpišemo v podatkovni register. S tem se TDRE briše. • (lahko pa oddajamo s prekinitvami) • Sprejem • Preverimo stanje RDRF • Če je RDRF = 1, sprejmemo podatek, to je beremo podatkovni register. S tem se RDRF briše. Po potrebi preverimo bite napak. • (lahko pa sprejemamo preko prekinitev).
HCS12 – uporaba SCI • Preprost primer priprave vmesnika SCI0 ; -------------------------------------------------------- ; Subrutina za začetno pripravo vmesnika SCI0 ; Predpostavimo, da je osnovni takt 24 MHz ; InitSCI0: LDD #156 ;24MHz/(16 x 156) 9600 STD SCI0BRH ;hitrost odd./spr. naj je 9600 bps CLRA STAA SCI0CR1 ;8 bitov, brez parnosti, običajen način LDAA #%00001100 ;RE=1, TE=1 STAA SCI0CR2 ;omogočimo odd. in spr., prekinitev pa ne RTS
HCS12 – uporaba SCI • Preprost način sprejemanja podatkov ; -------------------------------------------------------- ; Subrutina za sprejem enega podatka z vmesnikom SCI0 ; Klic: JSR RxSCI0 ; Vrne podatek v akumulatorju A ; v primeru napake postavi bit C v CCR RXDRF EQU $20 ;Maska bita RDRF RxSCI0: BRCLR SCI0SR1,#RXDRF,RxSCI0 ;Čakam na podatek LDAA SCI0SR1 ;Preveriti hočemo še bite napak CLC ;Brišem znak napake BITA #$00001111 ;Kakršnakoli napaka? BEQ RxSCI01 ;Ne, brez napake SEC ;Da, javi napako RxSCI01: LDAA SCI0DRH ;berem (in zavržem) R8 LDAA SCI0DRL ;Berem podatek, s tem se RXDRF briše RTS
HCS12 – uporaba SCI • Preprost način oddajanja podatkov ; -------------------------------------------------------- ; Subrutina za oddajo enega podatka z vmesnikom SCI0 ; Klic: JSR TxSCI0 ; Pošlje podatek v akumulatorju A ; TXDRE EQU $80 ;Maska zastavice “odd. reg. prazen” TxSCI0: BRCLR SCI0SR1,#TXDRE,TxSCI0 ;Oddaja možna? STAA SCI0DRL ;Da, oddam podatek RTS
HCS12 – izpis prevajanja ;**************************************************************** ;* GSPV 2004/05 ;* Preprost primer uporabe asinhronega serijskega komunikacijskega ;* vmesnika SCI ;* ;* Program pripravi vmesnik (9600 b/s, 8 bitni podatek, brez parnosti) ;* in nato v zanki sprejema in posilja podatke s preverjanjem ;* zastavic v registru SCISR1. ;* V primeru napake ali sprejemu znaka ESC = $1B, konca s SWI. ;* ; --- vstopna tocka XDEF Start ABSENTRY Start ; --- nekaj splosnih definicij, kje je ram, rom, sklad,.. 0000 1000 Program EQU $1000 ;tu naj bo program 0000 2000 Ram EQU $2000 ;tu naj bo pomnilnik RAM 0000 0400 RamSize EQU $400 ;naj bo 1K RAM-a 0000 2400 RamEnd EQU Ram+RamSize 0000 0100 SkladSize EQU $100
HCS12 – izpis prevajanja ; --- definicije naslovov registrov vmesnika SCI1 0000 00D0 SciBase EQU $00d0 ;zacetni naslov SCI1 0000 00D0 SCIBRH EQU SciBase 0000 00D1 SCIBRL EQU SCIBRH+1 0000 00D2 SCICR1 EQU SCIBRH+2 0000 00D3 SCICR2 EQU SCIBRH+3 0000 00D4 SCISR1 EQU SCIBRH+4 0000 00D5 SCISR2 EQU SCIBRH+5 0000 00D6 SCIDRH EQU SCIBRH+6 0000 00D7 SCIDRL EQU SCIBRH+7 ; --- definicije nekaterih ASCII znakov 0000 001B ESC EQU $1B ;koda ASCII znaka ESC 0000 000A LF EQU $0A ;nova vrstica 0000 000D CR EQU $0D ;zacetek vrstice ;
HCS12 – izpis prevajanja ; --- podatkovni del pomnilnika, sklad org RamEnd-SkladSize a002300 rmb SkladSize 0000 2400 Sklad: equ * ; --- vstopna tocka, priprava vmesnika, sprejem in oddaja org Program a001000 CF24 00 Start: lds #Sklad a001003 1610 1F jsr InitSCI ;priprava vmesnika ; a001006 1610 2C Zanka: jsr RxSCI ;sprejmi podatek a001009 2509 bcs Konec ;napaka, koncaj a00100B 811B cmpa #ESC ;je escape? a00100D 2705 beq Konec ;da, koncaj a00100F 1610 3F jsr TxSCI ;ne, oddaj podatek in pojdi po naslednjega a001012 20F2 bra Zanka ; a001014 860A Konec: ldaa #LF ;poslji LF - pomik v novo vrstico a001016 1610 3F jsr TxSCI a001019 860D ldaa #CR ;poslji CR - pomik na zacetek vrstice a00101B 1610 3F jsr TxSCI a00101E 3F SWI ;povratek k DBUG12
HCS12 – izpis prevajanja ;---------------------------------------------------- ; ; Subrutina za zacetno pripravo vmesnika SCI ; Osnovna frekvenca 24 MHz ; a00101F CC00 9C InitSCI: ldd #156 ;9600 bps a001022 5CD0 std SCIBRH a001024 87 clra a001025 5AD2 staa SCICR1 a001027 860C ldaa #%00001100 a001029 5AD3 staa SCICR2 a00102B 3D rts
HCS12 – izpis prevajanja ;---------------------------------------------------- ; ; Subrutina za sprejem podatka ; Podatek bo v akumulatorju A, ; v primeru napake bo postavljen C v CCR ; 0000 0020 RXDRF equ %00100000 0000 000F RXERR equ %00001111 a00102C 4FD4 20FC RxSCI: brclr SCISR1,#RXDRF,RxSCI ;cakam podatek a001030 96D4 ldaa SCISR1 ;zanima me pravilnost sprejema a001032 10FE clc ;ce ni napake, naj bo C=0 a001034 850F bita #RXERR ;kakrsnakoli napaka? a001036 2702 beq RxSCI01 ;ne, vejitev - ni napake a001038 1401 sec ;da, postavi C a00103A 96D6 RxSCI01: ldaa SCIDRH ;nini ni potrebno a00103C 96D7 ldaa SCIDRL ;sprejmi podatek a00103E 3D rts
HCS12 – izpis prevajanja ;---------------------------------------------------- ; ; Subrutina za oddajo podatka ; Odda podatek v akumulatorju A ; 0000 0080 TXDRE EQU %10000000 a00103F 4FD4 80FC TxSCI: brclr SCISR1,#TXDRE,TxSCI a001043 5AD7 staa SCIDRL a001045 3D rts
RS232 Standard EIA RS232C/D (zadnji popravek 1986) • povezava DCE < --> DTE • DCE - (Data Communication Equipment) • DTE - (Data Terminal Equipment)
RS232 • RS232 določa mehanske, električne in funkcionalne lastnosti povezav in tokokrogov. • Nosilec informacije je napetostni nivo, +- 12 V tipično • Hitrosti (b/s): 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, ..., 115200 • Razdalje: do cca 15 m (in več).
RS232 • 25 polni (DB25) konektor in (važnejši) signali • “preslikava” signalov na 9 polni (DB9) konektor
RS232 • Tipični načini povezovanja DTE <---> DCE stran računalnika
RS232 • Tipični načini povezovanja DTE <---> DTE (“ničelni modem”) križan kabel
RS485 • Večtočkovno povezovanje na podlagi parice (sukanega voda) (“angl. Twisted Pair”, UTP, STP) • Hitrosti: do 10Mb/s • Razdalje: do 1200 m.