Chế độ khụng đồng bộ được chon bằng cỏch xúa bit SYNC (TXSTA<4>).
Trong
chếđộnày ,EUSARTsử dụngkhungdữ liệuchuẩn Non-Return-to-Zero
(NRZ)(một
bitStart,tỏm hoặcchớnbitdữliệuvà mộtbitStop).Thụngthườngkhungdữ liệ uđược
dựng phổ biến nhất là 8 bits. Trờn một chip, một bộ phỏt tốc độ 8-bit/16- bit Baud
đượcsửdụngđểtạotốcđộchuẩn từbộdaođộng.
Trong EUSART thỡ bit truyền hoặc nhận đầu tiờn là bit cú trọng số thấp n hất. Sự
truyền và nhậntrong EUSART làchức năngđộc lậpnhưng sửdụng khung dữ
liệu và
tốcđộbaudlàgiốngnhau.Bộphỏt tốcđộbaudsinhratốc độxungnhịpgấp x
16 hoặc
x64 tốc độ thay đổi bit phụ thuộc vào bit BRGHvà bit BRG16 (TXSTA<
BAUDCON<3>). Bit chẵn lẻ khụng được cung cấp bởi phần cứng nhưng cú thể cài
đặttrongphầnmềmvàđượclưunhưbitdữliệuthứ9.
Khi chế độ khụng đồng bộ hoạt động, module EUSART bao gồm nhữn
g thành phầnquantrọngsau: •Bộphỏttốcđộbaud. •Mạchtạomẫu. •Truyềnkhụngđồngbộ. •Nhậnkhụngđồngbộ. •Tựđộngkớchhoạtkớtựngắtđồngbộ. •Truyền12bitkớtựngắt. •Tựđộngdũtốcđộbaud. CHẾĐỘTRUYỀNKHễNGĐỒNGBỘEUSART.
Sơ đồ khốitruyềnEUSART trong hỡnh 18-3.Trung tõm của khốitruyền
là thanh
ghidịch truyền (nối tiếp)(TSR).Thanhghi dịch chứadữ liệutừ thanhghi đệm truyền
đọc /ghi TXREG. Thanh ghi TXREG nạp dữ liệu từ phần mềm.Thanh ghi dị
ch TSR
sẽkhụngnạpdữ liệuchođếnkhibitStopcủa lầnvừanạpđượctruyềnxong.N gaykhi
bitStopđượctruyềnxong, thanhghidịch TSRđượcnạpgiỏ trịmớitừ thanhg hiđệm
TXREG(nếuđượcchophộp).
Khi thanh ghi đờm truyền TXREG truyền dữ liệu cho thanh ghi dịch TSR
(xảy ra
trong TCY), thỡ thanh khi TXREG sẽ trống và cờ ngắt truyền TXIF (PIR1<4 >) được
set. Đõy là ngắtcú thể cho phộphoặc khụngcho phộpbằng cỏchset hoặcxúa bitcho
phộp ngắt TXIE (PIE1<4>).bit TXIF will besẽ được set dự cho trạng thỏi của bit
TXIE như thế nào; nú khụng thể xúa trong phần mềm. bit TXIF cũng khụng t
hể xúa
ngay lập tức khi dữ liệu đang nạp trờn thanh ghi TXREG, nhưng nú trở nờn
hợp lệ
trongchukỡ lệnhthứhaisaulệnhvừa nạp.Kiểmtrabit TXIFngay saukhinạp lạigiỏ
trichothanhghiTXREG.
Trongkhi TXIFxỏc địnhtrạng thỏi thanh ghi TXREG,một bitkhỏc làbit TRMT
(TXSTA<1>),chỉratrạngthỏi củathanhghidịch TSR.bitTRMTlàbitchỉđư ợcđọc
và núđược setkhi thanh ghi TSRtrống rỗng. Khụngcú ngắt logic từ bit này vỡ vậy
người sử dụng phảikiểm tra bit này để xỏc địnhtrạng thỏi của thanh ghi TSR nếu nú
trống.
Đểđặtchếđộtruyềnkhụngđồngbộcúcỏcbướcsau:
1. Khởi tạo cho thanh khi SPBRGH:SPBRG để cú tốc độ baud tương ứn
g . Đặt
hoặc xúa bit BRGH và bit BRG16, cần thiết , để đạt được tốc độ bau
d mong
muốn.
PhạmVănCường- HồngVănQũn.Lớp ĐKTĐ1-K49
43
ViđiềukhiểnPic iểnPic
2. Cho phộp cổng khụng đồng bộ nối tiếp bằng cỏch xúa bit SYNC, và
đặt bit SPEN.
3.Nếumuốncú ngắt,setbitchophộpTXIE.
4.Nếu truyền khungdữ liệu 9 bit, set bittruyền TX9. Cúthể được sử dụ
ngnhư
bitđịachỉhoặcdữliệu.
5.ChophộptruyềnbằngcỏchsetbitTXEN, VàbitTXIFcũngsẽđượcset.
6. Nếu chọn truyền 9 bit trong khung dữ liệu ,thỡ bit thứ 9 sẽ được nạp vào bit
TX9D.
7.NạpdữliệutừthanhghiTXREG(bắt đầuquỏtrỡnhtruyền). 8.Nếusửdụngngắt,thỡphảiđảmbảorằnghaibit GIEvàPEIE trongthanhghi INTCON(INTCON<7:6>)đĩđượcset.
CHẾĐỘNHẬNKHễNGĐỒNGBỘEUSART.
Sơđồkhốinhậnlàkhốitronghỡnh18-6.Dữliệuđượcnhậntrờn chõn RX
đưa tớikhối khụiphụcdữ liệu. Khốikhụi phụcdữ liệu thực tếcú tốc độdịch c ao gấp
16lầntốcđộbaud,vỡvậy khốinhậnhoạt độngở tốcđộbithoặctầnsốdao độn g.Chế
độnàythườngđượcsửdụngtronghệthốngRS232. Cỏcbướcthiếtlậpchếđộnhậnkhụngđồngbộ:
1.Khởitạochothanh ghi SPBRGH:SPBRG để cútốcđộbaudthớchhợp.s
ethoặc
xúabitBRGHvà BRG16đểcú đượctốcđộbaudmongmuốn.
2. Cho phộp cổng khụng đồng bộ nối tiếp bằng cỏch xúa bit SYNC, và
set bit SPEN.
3.Nếumuốncúngắt,thỡsetbitchophộpngắt RCIE. 4.Nếumuốnnhõnkhungdữliệu9bitthỡsetbit RX9. 5.Chophộpquỏtrỡnhnhậnbằngcỏchset bitCREN.
6. Cờ bỏo nhõn RCIFsẽ được set khi quỏ trỡnh nhận hồn thành và sẽ xu
ất hiện
mộtngắt nếunhưbitchophộpngắtnhậnRCIEđĩđượcset.
7.Đọcthanh ghiRCSTAđểlấy bitthứ9(nếunhậnlà9bit)và xỏcđịnhlỗi đĩ xảy
ratronglỳcnhõn.
8.Lấy8bitdữliệucũnlạibằngcỏchđọcthanhghiRCREGregister.
9. Nếu cú lỗi trong quỏ trỡnh nhận thỡ xúa lỗi bằng cỏch xúa bit cho phộ
p nhận
CREN.
10. Nếu sử dụng ngắt thỡ phải đảm bảo rằng cỏc bit GIEvà PEIE trong th
anh ghi
INTCON(INTCON<7:6>)phảiđượcset.
PhạmVănCường-Hồng VănQũn.Lớp ĐKTĐ1-K49
44
ViđiềukhiểnPic iểnPic
THIẾTLẬPCHẾĐỘ9BITDềĐỊACHỈ.
Chếđộnàythườngđượcsửdụngtronghệthống RS-485.
Thiếtlậpchochếđộnhõnkhụngđồngbộcú dũđịachỉ:
1.Khởitạochothanhghi SPBRGH:SPBRGđểcú tốcđộbaudthớchhợp.seth
oặcxúa
bitBRGHvà BRG16đểcúđượctốcđộbaudmongmuốn.
2. Cho phộp cổng truyền khụng đồng bộ nối tiếp bằng cỏch xúa bit SYNC và
set bit SPEN.
3.Nếu cầnsửdụngngắtthỡsetbitRCENvà chọnmứcđộưutiờnmongmuốnb
ằngbit RCIP.
4.SetbitRX9đểchophộpnhận9bit. 5.Setbit ADDENđểchophộpdũđịachỉ.
6.Chophộpnhõnbằngcỏchset bitCREN.
7.BitRCIF sẽđượcsetkhikhiquỏ trỡnhnhậnhồnthành. Ngắtsẽđượcxỏcn
hậnnếu
bitRCIEvàbitGIE bitsareseđượcset.
8.Đọcthanh ghiRCSTAđểxỏcđịnhlỗitrongquỏtrỡnhnhận,hoặcđọcbitdữ l iệuthứ
9(nếucúthểdựng).
9.Đọcthanhghi RCREGđểxỏcnếuthiếtbịlàđịachỉ. 10.Nếucú lỗithỡxúabitCREN.
11. Nếuthiết bịđĩ xỏc địnhđượcđịa chỉ,xúa bitADDENvàcho phộpnhõntấ t cả dữ
liệuvàođệmvàngắt CPU.
TỰĐỘNGKÍCHHOẠTKÍTỰNGẮTĐỒNGBỘ.
Trongsuốtchếđộsleep,tấtcả cỏcxungcủa chếđộEUSARTbịtreo.Bởi vỡvậy ,
bộphỏttốcđộbaudkhụnghoạtđộngvànhõnmột bytekhụngthểthựchiệnđư ợc.Đặc
điểm của chế độ kớch hoạt tự động cho phộp kớch hoạt hoạt động trở lại trờn đường
RX/DTtrongkhiEUSARThoạtđộngtrongchếđộkhụngđồngbộ.
Đặc điểm của kớch hoạt tự động được cho phộp hoạtđộng bằng việc set bi
t WUE
(BAUDCON<1>). Một khi set bit này, thụng thường nhận liờn tiếp trờn R
X/DT là
khụngthểvà EUSARTcũn lạitrong trạngthỏi Idle,sự kiện kớchhoạtđộc lập vớichế
độcủaCPU.Sự kiệnkớchhoạtbaogồmkhixuấthiệnsườnxuốngtrờnđườngR
(Nútrựngvớikớtựngắtđồngbộvà kớtựkớch hoạtgiaothứcLIN)
PhạmVănCường- HồngVănQũn.Lớp ĐKTĐ1-K49
45
ViđiềukhiểnPic iểnPic
Sausự kiệnkớchhoạt,modulesẽ phỏtramột ngắtRCIF.Ngắtnàyđượcph ỏtđồng
bộvớixungQtrongchếđộhoạtđộngbỡnhthường.
(hỡnh 18-8) vàchế độkhụngđồng bộ, nếuchớphoạtđộng trongchế độ sleep(hỡnh
18-9).ĐiờukiệnxảyrangắtlàphảixúabằngcỏchđọcthanhghiRCREG.
Bit WUE đượctựđộngxúamộtkhitrờn đườngRXxuấthiệnsườn lờnsau
sựkiện
kớch hoạt ngắt. Vào thời điểmđú, module EUSART trong chế độIdle và trở l
ại hoạt
độngbỡnhthường.Tớnhiệusửdụngtrongsựkiệnngắtđồngbộlàsựkiềntràn.
Phảithõntrọngkhisửdụng Auto-Wake-up
Khimàchứcnăngtựđộngkớchhoạtđượcnhậnbiếtbởisườnlờntrờnchõn RX/DT,
thụng tin về thay đổi trạng thỏi trước khi bit Stop là tớn hiệu lỗi End-of- Character
(EOC)vànguyờn nhõnlàlỗidữliệuhoặclỗikhungtruyền.Đểlàmviệcđỳngt hỡkớtự
truyềnbanđầuphảilà ‘0’s.Đõy cúthểlà00h(8bits) theiochuẩnthiếtbịRS-
232hoặc
000h(12bits)theochuẩn LIN.
Bộdaođộngbắtđầu hoạtđộngcũngphảiđược xemxột,đặcbiệtlàứngdụn gtrong
việc sử dụng bộdao độngbắt đầu ngưnghoạtđộng (i.e.,XT or HS mode).Kớ tự ngắt
đồngbộ(tớn hiệukớch hoạt) phải đủ dài vàsau đúphảichophộpđủ thờigian để cho
phộpbộdaođộngbắtđầuvàcungcấpgiỏtrịkhởitạochoEUSART.
Cầnphảiđặcbiệtthậntrọngkhisửdụngbit WUE.
Thời giancủa sự kiệnbit WUE và bitRCIF cú thểbịrối loạn khinúxỏc đ ịnhgiỏ
trịcủadữliệunhậnwhenitcomestodetermining thevalidity of
received data.Như đĩ lưuý,setbit WUE khisử dụngEUSART .Bit WU
Eđược
xúa sau khi trờn chõn RX/DT xuất hiện sườn lờn.Điều kiện của ngắt là núph ải được
xúa bằng cỏchđọc thanh ghi RCREG. Thụngthường ,dữ liệu trong RCREG s ẽlà dữ
liờugiảvànờnđượcbỏ.
Thực tế là bit WUE đĩ được xúa (hoặc vẫn được set) và cờ RCIF được s
et nờn
khụngđượcsử dụngnhưdữ liệubanđầu trongthanhghiRCREG.Ngườisử dụ
ngnờn
xem xộtcỏctriểnkhaiphươngphỏpsongsongtrong firmware(làphần mềmnh ớtrong
bộnhớchỉđọc)để nhậndữliệunguyờn vẹn.
Đểđảm bảo rằngkhụngbị mấtdữ liệu, kiểmtra bit RCIDL đểxỏc nhậnrằ
ng một
hoạtđộngnhậndữliệulàkhụngxảyratrongquỏtrỡnhnày.Nếuhoạtđộngnhận khụng
xảyrathỡbitWUEcúthểsauđúđượcđặttrướckhi vàochếđộ Sleep
KÍTỰNGẮT LIấNTIẾP
Module EUSART cú thể gửikớ tự ngắt liờn tiếp đặc biệt . Kớ tự ngắt này c ần cho
chuẩn LIN. Kớ tự ngắt truyền bao gồm bit Start theo sau là 12 bit và một b
it Stop.
Khung kớ tự ngắt được gửi bất cứ khi nào bit SENDB và bit TXEN (TXSTA
<3> và
TXSTA<5>) được set trong khi thanh ghi dịch truyền được nạp dữ liệu . Chỳ ý rằng
giỏtrịdữ liệughivàothanh TXREGsẽđược bỏqua vàtấtcảcỏcbit ‘0’s(kớh iệucho
cỏc bit) sẽ được truyền. Bit SENDB sẽ được tự động reset bởi phần cứng b
it Stop
tươngứng đượcgửi. Điềunày chophộpngười sửdụng nạplạigiỏ trị truyềnFI
FOvới
bytetruyềntiếptheosaukớtựngắt(thụngthườngkớtựđồngbộchỉrừtrongLI
N).Chỳ
ýrằnggiỏ trị dữ liệughivào TXREG chokớ tựngắtđược bỏqua.Cỏch viếtđ ơngiản
chỉphụcvụchocỏcmụcđớch khởiđộngđơngiản.
Bit TRMT để chỉ ra rằng khi quỏ trỡnh truyền là khụng hoạt động hoặc
chế độ
Idle,giốngnhưquỏ trỡnhtruyềnbỡnhthường .Xemhỡnh18-10cho thờigian củachuỗi
kớtựngắt.
Ngắtvàtruyềnđồngbộliờntiếp.
PhạmVănCường- HồngVănQũn.Lớp ĐKTĐ1-K49
ViđiềukhiểnPic iểnPic
Sau khicúngắtthỡ chuỗiliờn tiếpsẽđược gửibắtđầubằngkhungthụngđi ệp,sau
đú là byte n Auto-Baud Sync . Đõy một số thành phần chớnh thụng thường c
ủa một
LINbus.
1.CấuhỡnhEUSARTđểcúchếđộmongmuốn.
2.SetbitTXENvàbitSENDBđểđặtchếđộkớtựngắt.
3.NạpvàoTXREGmộtkớtựgiảđểbắtđầutruyền(giỏtrịnàysẽđượcloạibỏ) .
4.Ghi ‘55h’vàoTXREGđểnạpkớtựđồngbộvàođệmtruyềnFIFO.
5.Saukhingắtđượcgửi,bitSENDBđượcresetbởiphầncứng.Kớtựđồngbộ bõygiờ
đượctruyềntrongchếđộcấuhỡnhsẵnrồi.
Khi thanh ghiTXREG trở nờn rỗng, đượcbiết bởibit TXIF, byte dữ liệu tiếp t heo cú
thểghivàoTXREG.
NHẬNMỘTKÍTỰNGẮT.
Module USART mở rộng cú thể nhận một kớ tự ngắt bằng haicỏch. Phươn
g phỏp
đầu tiờn là cấu hỡnhtốc độbaudbằng 9/13 tần số bỡnhthường. Điều này cho p hộp bit
Stop truyềnđỳng vị trớ lấy mẫu(13 bits cho bitStart chốngngắt và 8 bitdữ l iệu cho
dữliệubỡnhthường).
Phươngphỏpthứ2sửdụngđặcđiểmcủatựđộngkớch hoạt( auto-wake-up)
mụtả
trong mục 18.2.4 “Auto-Wake-up on Sync Break Character”. Bởi việc cho
phộp đặc
điểm này, EUSART sẽ lấy mẫu ở hai lần truyền tiếp theo trờn RX/DT,bởi
vỡ ngắt
RCIFvànhậndữliệuởbytetiếptheosaumột ngắtkhỏc.