View
46
Download
3
Category
Preview:
DESCRIPTION
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. - PowerPoint PPT Presentation
Citation preview
http://vision.fe.uni-lj.si/classes/GSPV
GSPV (9-a)
HCS12, SCI primer,
“RS232”
Stanislav Kovačič
Univerza v Ljubljani
Fakulteta za elektrotehniko
HCS12 – uporaba SCI 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 SCIHCS12 – 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 SCIHCS12 – 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 SCIHCS12 – 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 SCIHCS12 – 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 prevajanjaHCS12 – 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 RamEQU $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 prevajanjaHCS12 – 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 prevajanjaHCS12 – 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 prevajanjaHCS12 – 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 prevajanjaHCS12 – 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 prevajanjaHCS12 – 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
RS232RS232
Standard EIA RS232C/D (zadnji popravek 1986) povezava DCE < --> DTE DCE - (Data Communication Equipment) DTE - (Data Terminal Equipment)
RS232RS232
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č).
RS232RS232
25 polni (DB25) konektor in (važnejši) signali
“preslikava” signalov na 9 polni (DB9) konektor
RS232RS232
Tipični načini povezovanja DTE <---> DCE
stran računalnika
RS232RS232
Tipični načini povezovanja DTE <---> DTE (“ničelni modem”)
križan
kabel
RS485RS485
Večtočkovno povezovanje na podlagi parice
(sukanega voda) (“angl. Twisted Pair”, UTP, STP) Hitrosti: do 10Mb/s Razdalje: do 1200 m.
RS232, ..., RS485RS232, ..., RS485
Recommended