Professional Documents
Culture Documents
PIC16F84 Uputstvo
PIC16F84 Uputstvo
UPUTSTVO ZA RUKOVANJE
1. Predgovor
Zato ba PIC16F84? Taj ikrokontrol!r j! za"tar!o# v!liki# "por# "kup$$$
M!%uti &a li j! ba "v! tako$ Star? Pa ta$ 'ij!&an oj ko pjut!r nij! (u tr!nutku kupovin!) bio la%i o& 4 *o&ina$ Prvi put "a na int!rn!t izaao aino "a 1++M,z i 16Mb$ -koliko i &alj! o! po"luiti# *o&in! u ni"u bitn!$ .ak zato i a i j!&nu pr!&no"t/ i a *a na "vako 0oku1 'j!*ova v!li2ina za po2!tnik! o! pr!&"tavljati "a o po*o&no"t$ Po2!tniku j! &al!ko lak! l! lj!nj! o"a na!"topin"ko* 3IP n!*o !z&!"!t2!tvoropin"ko* T4FP ku0ita# naravno na j!&no"lojnoj ta panoj plo2ici$ 5rzina ikrokontrol!ra pri u2!nju n! i*ra nikakvu ulo*u$ 6tavi!# na vi! pro*ra i a &ati u uput"tvu na !rno "! oralo izazivati kanj!nj!$ !"ta u
C!na ikrokontrol!ra1 7!"t! "kup$ 3ana" "! o*u kupiti no*o o0niji ikrokontrol!ri po anjoj c!ni$ 8li ukoliko "! uz ! u obzir i c!na o&*ovaraju0!* pro*ra atora (po*otovu o*u0no"t "a o*ra&nj!)# PIC16F84 j! i &alj! najj!9tiniji ikrokontrol!r$ Po2!tniku u "v!tu ikrokontrol!ra najt!! j! napraviti onaj prvi korak$ 'a&a "! &a 0! u ovo uput"tvo 0! po o0i u to putu$ 8 po"l!? :ako 0! "! "a "t!2!ni znanj! nau2iti i no*o ko plikovaniji i "avr! !niji ikrokontrol!ri$ Iako "! ;ar&v!r"k! o*u0no"ti ikrokontrol!ra n!pr!ki&no u"avravaju# "o9tv!r u*lavno o"taj! i"ti$ Za lak! razu !vanj! ovo* uput"tva po!ljan j! pri"tup int!rn!tu i potr!bna "u o&r!%!na pr!&znanja/
<"novno poznavanj! !l!ktron"ki; kola (ano&a i kato&a :=3# pov!zivanj! :=3 &i"pl!ja# 9unkcija ta"t!r pr!ki&a2a# ob!l!avanj! izvo&a int!*ri"ani; kola# poja pina# 9unkcija &io&! u lo*i2ki koli a# napon"ki nivoi lo*i2k! + i 1# vi"okoi p!&an"no "tanj!# 6 itov oki&a2) <"novno poznavanj! binarni; "i"t! a (bit# bajt# binarno# &!ci alno# ;!k"a&!ci alno# 5C3 i ozna2avanj! n!*ativni; broj!va) <"novn! lo*i2k! op!racij! (5ulova al*!bra) Poja ultipl!k"a
'! ojt! &ozvoliti &a >a" ovaj "pi"ak ob!";rabri$ >!liki &!o ovo*a j! objanj!n u uput"tvu$ ?ra&ivo u uput"tvu izlo!no j! o& poznati; ka n!poznati i o& laki; ka t!i l!kcija a$ Za &o"ta "p!ci9i2no"ti &ati "u pri !ri pro*ra a u koji a "! upotr!bljavaju$ Tru&io "a "! &a *ra&ivo to int!r!"antnij! izloi $ 'a&a "! &a "a u"p!o$ @
i"li
-koliko "tavit! A (ta2kuBzar!z) bilo *&! u >a! pro*ra u# ko pajl!r 0! i*nori"ati "v! karakt!r! iza nj!*a "v! &ok n! &o%! &o znaka za novi r!&$ <vo zna2i &a o!t! "taviti ko !ntar unutar pro*ra a kako bi >a" po&"!tio ta "! uopt! u nj! u ra&i$ <vo j! &obra prak"a# 2ak i za najj!&no"tavnij! pro*ra !$ Mo&a "a&a u potpuno"ti razu !t! ta pro*ra ra&i# ali za par !"!ci# "a o 0!t! "! 2!kati po *lavi$ Zbo* to*a# ko !ntariit! to vi!$ '! a o*rani2!nja$ Mo!t! pri&ruiti i !na kon"tanta a i r!*i"tri a (vi! o ovo ! ka"nij!)$ 3o"ta j! lak! 2itati na "rp"ko u ta upi"uj!t!# ili ta ozna2ava broj# n!*o &a pokuavat! &a "! "!tit! ta zna2! "vi ti broj!vi$ Zbo* to*a# kori"tit! opi"na i !na kao npr$ Z5IC$ Pri !tili "t! &a "a napi"ao i ! v!liki "lovi a$ <no "! tako i"ti2!$ 'apravit! za*lavlj! pro*ra a kori"t!0i ta2kuBzar!z$ Pri !r j! &at i"po&$ ADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD A 8utor / P!ra E&!ra 3atu / 1@$4$@++8$ A >!rzija / +$F 'a"lov / T!"t A A <pi" ;ar&v!ra / A B CC o"cilator @++G,z$ A B Svi ta"t!ri "u pov!zani o& pinova ka a"i$ A T1 na C5+# T@ na C51$ -klju2!ni "u int!rni PullBup otpornici$ A B Sv! :=3 o& HF> ka pinovi a$ :=31 na C8+# :=3@ na C8@$ A A <pi" "o9tv!ra / A B Stanj! :=31 !nja "! priliko "vako* int!rapta "a T1 A B Stanj! :=3@ !nja "! taj !ro na "vaki; +#FS j!&ino A ukoliko j! i"tovr! !no priti"nut T@ A A 3o&atni 9ajlovi / p16F84$inc ADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD -o2ili "t! &a j! napravlj!na n!ka vr"ta kock!$ <vako iz*l!&a pr!*l!&nij!$
Iz&vojit! in"trukcij! o& po2!tka r!&a i lab!la "a par raz aka ili ITabJ &u* !to $ 'a taj na2in a"! bl!r pr!poznaj! &a li j! r!2 o in"trukciji ili lab!li# a pro*ra iz*l!&a pr!*l!&nij!$ 'ajza&# i"probajt! i &oku !ntujt! >a pro*ra i na papiru$ Mo!t! kori"titi *ra9ik!# al*orit ! ili ta *o& !lit!$ To 0! va po o0i u pi"anju pro*ra a# korak po korak# kao i u nj!*ovoj ka"nijoj analizi$
). Reg#!"r#
C!*i"tar j! C8M ! orij"ka lokacija unutar ikrokontrol!ra u koju "! o! upi"ivati# "a koj! "! o! 2itati# ili obavljati ob! ov! 9unkcij!$ 'ajlak! j! &a "vaki o& nji; za i"lit! kao kutiju u koju o! "tati &o @FF klik!ra (razli2iti; "tanja)$ Sl!&!0a "kica prikazuj! ra"por!& r!*i"tara unutar PIC16F84 ikrokontrol!ra$ Slika prikazuj! a&r!"! na koji a j! " !t! a C8M ! orija (u obliku o" obitni; r!*i"tara) unutar ikrokontrol!ra# to 0! >a po o0i pri razu !vanju nji;ovo* a&r!"iranja$ 8&r!"a 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C . . . . . 0x4F 0x50 . . . 0x7F M B '!i pl! !ntovana B 'ij! 9izi2ki r!*i"tar M M 68 C!*i"tra opt! na !n! ("tati2ka C8M ! orija) Mapirani u 58'G+ 58'G+ I'3F(1) TMC+ PC: ST8T-S FSC P<CT8 P<CT5 M ==38T8 ==83C PC:8T, I'TC<' 58'G1 I'3F(1) <PTI<'LC=? PC: ST8T-S FSC TCIS8 TCIS5 M ==C<'1 ==C<'@
(1)
8&r!"a 0x80 0x81 0x82 0x83 0x84 0x85 0x86 0x87 0x88 0x89 0x8A 0x8B 0x8C . . . . . 0xCF 0xD0 . . . 0xFF
PC:8T, I'TC<'
(1)
Pri !0uj!t! &a "u r!*i"tri po&!lj!ni u &v! *rup!# ozna2!n! "a 58'G+ i 58'G1$ 58'G1 "! u*lavno kori"ti za kon9i*uri"anj! tr!nutno* ;ar&v!r"ko* "tanja ikrokontrol!ra$ -*lavno u j! (za j!&no"tavnij! pro*ra !) &ovoljno pri"tupiti "a o priliko po2!tn! inicijalizacij! ikrokontrol!ra$ Gako "! najbitniji r!*i"tri (P<CT8 i P<CT5) nalaz! u 58'G+# pro*ra 0! u*lavno biti u njoj$ Sl!&!0u "p!ci9i2no"t pr!&"tavljaju prvi; 1@ r!*i"tara u banka a (+N++ O +N+5)$ 'ji a "! &ir!ktno upravlja ra&o ikrokontrol!ra to i; 2ini povla0!ni (!n*$ Sp!cial Function R!*i"t!r" B r!*i"tri "p!cijaln! na !n!)# &ok j! obi2na C8M ! orija (!n*$ *!n!ral Purpo"! R!*i"t!r" B r!*i"tri opt! na !n!) &o"tupna u r!*i"tri a o& +N+C &o +N4F# a i"tovr! !no joj "! o! pri"tupiti i pr!ko +N8C &o +NCF a&r!"a$ Si*urno "t! v!0 vi&!li ra p! za prolaznik! po "up!r ark!ti a ili autobu"ki "tanica a$ <n! proputaju prolaznik! "a o u j!&no " !ru$ -nutar ikrokontrol!ra TCIS (TCIS8 i TCIS5) r!*i"tri izvravaju ovu 9unkciju$ <ni "! nalaz! na a&r!"a a +N8F i +N86# r!"p!ktivno$ 3a bi"t! pro*ra irali !lj!ni pin tako &a bu&! ulazni ili izlazni (proputa prolaznik! unutra ili napolj!)# poalj!t! 1 ili + na nj!*ov bit u o&*ovaraju0! TCIS r!*i"tru$ Pri to ! o!t! kori"titi bilo koji (binarni# &!ci alni ili ;!k"a&!ci alni) 9or at broj!va# !%uti binarni "! "likovitij! pr!&"tavlja "tanj! !lj!no* pina$ -koliko ni"t! vi2ni pr!tvaranju binarni; u &!ci aln! ili ;!k"a&!ci aln! broj!v! i obratno# kori"tit! bilo koji napr!&niji kalkulator$ Svi C8 (C8+ &o C84) i C5 (C5+ &o C5P) pinovi ikrokontrol!ra i aju &vojaku 9uknciju$ <ni o*u biti ulazni ili izlazni$ 3a li 0! biti ulazni ili izlazni po&!ava "! u o&*ovaraju0! TCIS r!*i"tru$ 'a pri !r ukoliko "! u TCIS5 nalazi "l!&!0a binarna vr!&no"t/ bQ++1+1111Q pinovi 0! biti kon9i*uri"ani kao na "lici$ Pri !0uj!t! &a bit P (!n*$ MS5 O +o"t Sin*l! ,it B bit najv!0! t!in! ) o&*ovara pinu C5P i &a "! on priliko binarno* ozna2avanja nalazi "a l!v! "tran!$ 'a"uprot nj! u bit +# bit naj anj! t!in! (!n* :S5 O -oR Sin*l! ,it) o&*ovara pinu C5+$ Potpuno i"ta "ituacija j! i "a TCIS8 r!*i"tro # "a to razliko to "u nj! u *ornji bitovi n!i"kori0!ni (j!r n! aju pripa&aju0i; pinova)$ 'a *ornjoj "lici pinovi "u kon9i*uri"ani po "l!&!0! / pin RB7 RB6 6 0 I RB5 5 1 U RB4 4 0 I RB3 3 1 U RB2 2 1 U RB1 1 1 U RB0 0(LSB) 1 U
Gako "! TCIS5 nalazi u banci 1 (58'G1) potr!bno j! pr!baciti "! ta o$ 3a bi "! pr!bacili iz bank! u banku kori"ti "! bit F ST8T-S r!*i"tra$ Za pr!bacivanj! iz bank! + u banku 1 potr!bno *a j! "!tovati# a za vra0anj! u banku +# r!"!tovati$ ST8T-S r!*i"tar "! nalazi na a&r!"i +N+K (0x03 ili h'03' ozna2ava broj!v! u ;!k"a&!ci alno 9or atu$ 5inarni 9or at "! pi! kao b'00000011'# a &!ci alni kao .03 ili d'03')$ F
.! u kon9i*uri"anj! pinova? -koliko j! o&*ovaraju0i pin kon9i*uri"an (pr!ko "vo* TCIS r!*i"tra) kao izlazni# na nj!*a "! iz ikrokontrol!ra o*u po"lati napon"ki nivoi o& +> i HF># o&no"no na nj! u 0! "! u "vako tr!nutku nalaziti j!&an o& ovi; napona$ Pri to ! "! napon"ki nivo o& +> pr!&"tavlja kao lo*i2ka +# a napon o& HF> kao lo*i2ka 1$ -koliko j! pak pin kon9i*uri"an kao ulazni# ikrokontrol!r 0! u "vako tr!nutku o0i &a o2ita *or! po !nut! vr!&no"ti napona na pinu# i u zavi"no"ti o& lo*i2ko* nivoa na pinu pr!&uz ! o&*ovaraju0u akciju$ Pinov! koji "! n! upotr!bljavaju u !l!ktri2noj ! i potr!bno j! kon9i*uri"ati kao izlazn!$ - protivno varijacij! napona na nji a prouzrokuju pov!0anu potronju i *r!janj! ikrokontrol!ra# a !v!ntualno i nj!*ovu n!i"pravno"t$ 3a bi"t! po"tavili j!&an o& izlazni; pinova na vi"oki lo*i2ki nivo# j!&no"tavno tr!ba po"lati J1S na nj! u o&*ovaraju0i bit u P<CT8 ili P<CT5 r!*i"tru$ For at zapi"a j! i"ti kao i za TCIS r!*i"tr!$ Sli2no to !# &a bi"t! pro2itali &a li "! n!ki pin (ranij! kon9i*uri"an kao ulazni) nalazi na lo*i2koj + ili 1# tr!ba &a prov!rit! &a li j! o&*ovaraju0i bit u P<CT8 ili P<CT5 r!*i"tru u "!tovano ili r!"!tovano "tanju$ Pr! n!*o to prou2it! pri !r a"! bl!r"ko* kT&a# tr!ba obja"niti 9unkciju jo j!&no* r!*i"tra/ U$ U (!n*$ .orkin* B ra&ni) r!*i"tar j! r!*i"tar opt! na !n! u koji o!t! " !"titi bilo koju broj2anu vr!&no"t (u op"!*u o& $+ &o $@FF) "a kojo !lit! ra&iti$ 'akon to "t! pri&ruili o&r!%!nu vr!&no"t r!*i"tru U# o!t! u pri&ruiti n!ku &ru*u vr!&no"t (opr!z O ti ! bi"t! auto at"ki obri"ali pr!t;o&nu) ili zapa 0!nu vr!&no"t iz nj!*a pr! !"titi na n!ku &ru*u ! orij"ku lokaciju (r!*i"tar)$ Za razliku o& o"tali; r!*i"tara on n! a "voju a&r!"u# v!0 j! int!*ri"an u "klopu "a o* ikrokontrol!ra$ opi"i a in"trukcija "! o*u "r!"ti oznak! 9# k# b i &$ Pri to ! j! "a / (!n*$ /il!) ozna2!na a&r!"a j!&no* o& r!*i"tra iz tab!l! "a po2!tka ovo* po*lavlja# 0 ozna2ava kon"tantnu vr!&no"t# b j! r!&ni broj bita u r!*i"tru a d ozna2ava o&r!&it! (!n*$ d!"tination) r!zultata op!racij!$ Ilu"trova0! o "v! &o "a&a nau2!no$ '! ojt! jo uv!k i"probavati ni ko pajlirati kT& B to 0!t! ura&iti ka&a &o%!t! &o prvo* c!lovito* pro*ra a$ Za "a&a pokuajt! &a pr!poznat! na2in na koji "! kon9i*uriu portovi# i pripr! it! "! &a nau2it! par a"! bl!r"ki; in"trukcija$ Za pi"anj! kT&a o!t! kori"triti bilo koji t!k"t !&itor koji "ni a 2i"t $tNt 9ajl b!z ikakvi; 9or atiranja$ 'a pri !r o&li2an 'ot!pa&HH (u*ra&io "a u pr!poznavanj! i na*laavanj! a"! bl!r"ki; in"trukcija)# Co&! =&it Pro ("a na*laava in"trukcij!)# Uin&oR"ov 'ot!pa& ili :inuNov :!a9pa&$ - j!&no o& nar!∋ po*lavlja# upozna0!t! "! "a MP:85 razvojni okru!nj! # i nj!*ovi !&itoro $ 'ajpr! j! potr!bno pr!baciti pro*ra iz bank! + u banku 1$ <vo "! ra&i "!tuju0i bit F ST8T-S r!*i"tra# 2ija j! a&r!"a +N+K$ bsf 0x03,5 5SF 9#b zna2i J"!tuj bit b u r!*i"tru 9S (!n*$ ,it S!t /)$ <v&! j! 9V+N+K to j! a&r!"a ST8T-S r!*i"tra (po*l!&ajt! raniju tab!lu) i bVF to ozna2ava r!&ni broj bita u ST8T-S r!*i"tru$ 3akl! ovi j! r!2!no J"!tuj bit F na a&r!"i +N+KS$ 6
<vo in"trukcijo " !ta "! binarni broj bQ++1+1111Q u U r!*i"tar$ <vo i"to "t! &a ura&it! "a ;!k"a&!ci alni broj! i ta&a bi in"trukcija iz*l!&ala ovako/ movlw 0x2F
o*li
<b! in"trukcij! ra&! potpuno i"tu "tvar$ M<>:U k zna2i Jubaci vr!&no"t koja "l!&i &ir!ktno u r!*i"tar US (!n*$ +ov! -it!ral to .)$ Sa&a tr!ba pr! !"titi ovu vr!&no"t u TCIS5 r!*i"tar# &a bi "! kon9i*uri"ali pinovi P<CT5 r!*i"tra$ movwf 0x86 In"trukcija M<>UF 9 zna2i/ Jpr! !"ti vr!&no"t r!*i"tra U u 9 r!*i"tarS (!n*$ +ov! . to /)$ - ovo "lu2aju a&r!"a 9 j! a&r!"a r!*i"tra TCIS5 (vi&it! u tab!li)$ 5itno j! pri !titi &a ovo nij! pr! !tanj! u "vo bukvalno zna2!nju# j!r j! U r!*i"tar nakon in"trukcij! o"tao n!pro !nj!n$ Pr! bi joj o&*ovarao pr!vo& kopiraj (!n*$ copW)$ TCIS5 r!*i"tar "a&a "a&ri !lj!nu vr!&no"t# 2i ! "u kon9i*uri"ani ulaznoMizlazni ("kra0!no -MI) pinovi$ Sa&a j! potr!bno pr!baciti pro*ra u banku +# kako bi "! &alj! o*lo anipuli"ati "i*nali a na -MI pinovi a$ bcf 0x03,5 <va in"trukcija j! "uprotna o& 5SF$ 5CF 9#b zna2i Jr!"!tuj bit b u r!*i"tru 9S (!n*$ ,it Cl!ar /)$ 5roj!vi koji "l!&! "u a&r!"a r!*i"tra (9)# u ovo "lu2aju ST8T-S r!*i"tra i broj bita (b)# u ovo "lu2aju bit F$ 3akl! ovi j! u "tvari r!"!tovan bit F ST8T-S r!*i"tra$ Po"l!&ica po"l!&nj! in"trukcij! j! &a "! pro*ra ponovo nalazi u 58'G+$ Pri !0uj!t! &a j! a&r!"a ST8T-S r!*i"tra i"ta# iako bi u 58'G1 tr!bala biti +N8K$ '! oj &a va" to buni$ Svi r!*i"tri a u 58'G1 o! "! pri"tupati pr!ko a&r!"a r!*i"tra u 58'G+# j!&ino j! bitno pravilno po&!"iti u kojoj "! banci nalazi pro*ra $ Ipak# n! pr!t!rujt! "a ovi $ Cazu ljivij! j! 2itati pro*ra "a nor alni a&r!"a a$ Za r!*i"tr! koji "u zaj!&ni2ki za ob! bank!# ovo j! potpuno "v!j!&no$ C!o pr!t;o&ni kT& zapi"an u j!&no bsf movlw movwf bcf bloku iz*l!&a ovako/ A I&i u 58'G1 A Stavi bQ++1+1111Q u U A Pr!baci bQ++1+1111Q u TCIS5 A >rati "! u 58'G+ u
'akon to "ni it! 9ajl# pro !nit! u tNt !k"t!nziju u a" $ Za ovo 0! va Uin&oR"u tr!bati Total Co an&!r# a u :inuNu npr$ ?no ! Co an&!r$
Prou2it! pr!t;o&ni pri !r n!koliko puta# "v! &ok n! bu&!t! u "tanju &a *a u potpuno"ti razu !t!$ Za "a&a "t! nau2ili 4 in"trukcij!$ 7o "a o K11 P
4. I1$ 1#
- pr!t;o&no po*lavlju "t! nau2ili kako &a kon9i*uri!t! -MI pinov! porta tako &a bu&u ulazni ili izlazni$ - ovo po*lavlju 0!t! nau2iti kako &a poalj!t! o&*ovaraju0i lo*i2ki nivo na portov!$ - pri !ru koji "l!&i cilj 0! >a biti &a o o*u0it! tr!ptanj! j!&n! :=3 (!n*$ -i*;t E ittin* Dio&!)# i u nj! u 0!t! vi&!ti j!&an potpuni pro*ra $ '! ojt! jo uv!k i"probavati# ko pajlirati ni pro*ra irati >a PIC li"tinzi a koji "l!&!# j!r "u oni &ati "a o kao ilu"tracija$ 'ajpr! tr!ba po&!"iti &ru*i bit P<CT8 r!*i"tra tako &a bu&! izlazni/ bsf movlw movwf bcf 0x03,5 A I&i u banku 1 b'00000000' A Stavi +++++ u U 0x85 A Pr!baci +++++ u TCIS8 O "vi pinovi "u izlazni 0x03,5 A >rati "! u 58'G+
<vo bi tr!balo &a >a bu&! poznato iz pr!t;o&no* pri !ra$ 7!&ina razlika j! u to ! to "t! "a&a po&!"ili "v! pinov! P<CT8 r!*i"tra kao izlazn!# alju0i +N++ u TCIS8 r!*i"tar$ Zati tr!ba uklju2iti :=3$ Zato tr!ba na j!&an o& pinova (onaj na ko ! j! pov!zana :=3) po"lati lo*i2ku 1$ =vo kako "! to ra&i$ (<bratit! panju na ko !ntar! kT&a)/ movlw movwf b'00000100' A -pii $4 u U r!*i"tar$
0x05 A Pr!baci "a&raj iz U ($4) u P<CT8# 2ija a&r!"a j! A +N+F$ To po"tavlja lo*i2ku 1 "a o na pinu C8@$
A Poto j! :=3 uklju2!na# tr!ba j! i"klju2iti$ movlw movwf b'00000000' A -pii $+ u U r!*i"tar$
<vi "t! po"ti*li &a j!&no uklju2it!# i zati i"klju2it! :=3$ <no to !lit! &a po"ti*n!t! j!"t! &a :=3 n!pr!ki&no tr!p!ri$ To "! o! i pl! !ntirati vra0aju0i izvr!nj! pro*ra a na po2!tak$ Po"tavit! Jlab!luS (oznaku) na po2!tak pro*ra a# i zati r!cit! pro*ra u &a na"tavi "voj! izvravanj! "a tako ozna2!n! pozicij!$ :ab!la "! po"tavlja v!o a j!&no"tavno/ upiit! i !# r!ci o Poc# i zati "l!&!0i kT&/ Poc movlw movwf b'00000100' A -pii $4 u U r!*i"tar$ pr!piit!
0x05 A Pr!baci "a&raj iz U ($4) u P<CT8# 2ija a&r!"a j! A +N+F$ To po"tavlja lo*i2ku 1 "a o na pinu C8@$
A Poto j! :=3 uklju2!na# tr!ba j! i"klju2iti$ movlw movwf goto b'00000000' A -pii $+ u U r!*i"tar$
0x05 A Pr!baci "a&raj iz U ($+) u P<CT8# 2ija a&r!"a j! +N+F A To po"tavlja lo*i2ku + na "v! pinov! (C8+ &o C84) Poc A 'a"tavi &alj! izvravanj! pro*ra a o& lab!l! Poc
Gao to pri !0uj!t!# najpr! j! i"pr!& in"trukcij! na po2!tku r!&a "tavlj!na lab!la JPocS$ 'a "a o kraju pro*ra a j! J*oto PocS in"trukcijo na"tavlj!no &alj! izvravanj! pro*ra a o& lab!l!$ In"trukcija ?<T< k zna2i Ji&i naS (!n*$ *oBi&i# ToB na) a&r!"u (k) ili lab!lu$ Pro*ra 0! "a&a n!pr!ki&no uklju2ivati i i"klju2ivati :=3 o& tr!nutka &ovo%!nja napona napajanja# a pr!"ta0! po nj!*ovo n!"tanku$ Po*l!&ajt! jo j!&no bsf movlw movwf bcf movlw movwf movlw movwf goto i"ti pro*ra / 0x03,5 b'00000000' 0x85 0x03,5 b'00000100' 0x05 b'00000000' 0x05 Poc
Poc
Go !ntari "u na !rno izo"tavlj!ni i "v! to o!t! vi&!ti j!"u nizovi in"trukcija i broj!va$ <vo o! &a bu&! krajnj! zbunjuju0! ukoliko ka"nij! pokuavat! &a i"pravit! !v!ntualno otkriv!nu *r!ku u pro*ra u# ali v!0 i toko prvobitno* pi"anja pro*ra a# ka&a tr!ba zapa titi "v! t! poj!&ina2n! a&r!"!$ .ak i ka&a bi"t! &o&ali ko !ntar!# pro*ra bi i &alj! &!lovao n!ja"no$ Zbo* to*a tr!ba "vi broj!vi a &ati i !na$ <vo o! &a "! ura&i nar!&bo J!XuS# koja j!&no"tavno zna2i Jj!&nako n!2! u &ru*o S (!n*$ E23al O j!&nak)$ >ano j! &a pri !tit! &a ovo nij! in"trukcija za PIC v!0 tzv$ &ir!ktiva koja i a uticaj na "a a"! bl!r (vi! o nj! u ka"nij!)$ Pro*ra koji "a&ri J!XuS &ir!ktivu 0!# &akl!# nakon a"! bliranja u ain"ki kT& PICBa# biti i&!nti2an pro*ra u b!z J!XuS &ir!ktiv!$ <vo &ir!ktivo "a o za !njuj!t! !lj!ni broj i !no $ Po"tupit! ovako/ izbacit! "v! ko !ntar! ali i !nujt! r!*i"tr! u >a! zati oc!nit! 2itljivo"t takvo* pro*ra a$ STATUS TRISA e ! e ! pro*ra u# a
0x03 A <vo pri&ruuj! naziv ST8T-S broju +N+K# koji A pr!&"tavlja a&r!"u ST8T-S r!*i"tra 0x85 A <vo pri&ruuj! naziv TCIS8 broju +N8F# koji A pr!&"tavlja a&r!"u TCIS8 r!*i"tra
P"RTA RP0
e ! e !
0x05 A <vo pri&ruuj! naziv P<CT8 broju +N+F# koji A pr!&"tavlja a&r!"u P<CT8 r!*i"tra 0x05 A <vo pri&ruuj! r!2 CP+ broju +N+F# koji pr!&"tavlja A r!&ni broj bita unutar ST8T-S r!*i"tra$
I !na oraju biti &!9ini"ana pr! n!*o to bu&u upotr!blj!na# i zbo* to*a i; uv!k &!9iniit! na po2!tku "vako* pro*ra a$ 'akon i !novanja r!*i"tara# un!"it! nji;ova i !na i u aktivni &!o pro*ra a$ -koliko "a&a pr!pi!t! pro*ra b!z ko !ntara# ali "a i !novani r!*i"tri a# o0i 0!t! &a upor!&it! pr!*l!&no"t i 2itljivo"t takvo* li"tin*a "a pr!t;o&ni / STATUS TRISA P"RTA RP0 e e e e ! ! ! ! 0x03 0x85 0x05 0x05 STATUS,RP0 b'00000000' TRISA STATUS,RP0 b'00000100' P"RTA b'00000000' P"RTA Poc
Poc
Si*urno "t! pri !tili &a i !novani r!*i"tri 2in! pra0!nj! pro*ra a znatno laki # 2ak i b!z ikakvi; ko !ntara$ Tako%! o!t! pri !titi &a "! i !novani r!*i"tri razlikuju o& lab!l! po to ! to "u i "va "lova v!lika$ 'a taj na2in n! o!t! &o0i u "ituaciju &a ka"nij! raz iljat! &a li j! n!ka takva oznaka lab!la ili i !novani r!*i"tar$ Mo&a va &!luj! 2u&no to P<CT8 r!*i"tar i CP+ bit ST8T-S r!*i"tra i aju i"tu vr!&no"t (+N+F)$ M!%uti # razlika j! o2i*l!&na$ P<CT8 pr!&"tavlja a&r!"u r!*i"tra# a CP+ bit F ST8T-S r!*i"tra$ 8"! bl!r n! pravi razliku iz !%u nji; j!r i j! vr!&no"t i"ta (2ak "! o*u i za !niti)# ali vo&i ra2una o nji;ovo r!&o"l!&u unutar in"trukcij!$ Tako%! o!t! vi&!ti &a "u in"trukcij! o&voj!n! o& po2!tka r!&a$ To j! obav!zno# &a i; a"! bl!r n! bi pr!v!o kao lab!l!$
1+
4. Pr 1'e %e"$(e
- pr!t;o&no pro*ra u po"toji ala *r!ka$ Skoro "vaka in"trukcija za;t!va j!&an in"trukcijki ciklu" &a bi "! izvrila$ In"trukcij"ki ciklu" j! 4 puta v!0i o& takta o"cilatora$ -koliko kao o"cilator za takt za PIC16F84 kori"tit! kvarcni kri"tal o& 4M,z trajanj! "vak! in"trukcij! 0! biti 4M,zM4ciklu"a# ili 1ZS$ Gako "! kori"ti "a o F in"trukcija# :=3 0! "! uklju2iti i i"klju2iti u "a o 6ZS$ Zbo* 2!*a 6 a n! F? Zbo* to*a to in"trukcij! koj! !njaju "tanj! pro*ra "ko* broja2a (!n*$ Pro*ra Count!r O vi! o nj! u ka"nij!) poput ?<T< za "voj! izvr!nj! tro! @ in"trukcij"ka ciklu"a$ Gako j! to tr!ptanj! pr!vi! brzo &a bi"t! *a uopt! o*li pri !titi# zbo* "poro"ti oka &!lova0! >a kao &a :=3 "v!tli kon"tantno# ali "a pola "na*!$ 3akl! potr!bno j! napraviti a&!kvatno kanj!nj! iz !%u tr!nutka uklju2!nja i i"klju2!nja :=3$ -obi2aj!ni princip po ko ! "! i pl! !ntira kanj!nj! j!"t! &a ikrokontrol!ru za&at! &a o&brojava o& pr!t;o&no po"tavlj!no* broja &o nul!# i &a u tr!nutku &o"tizanja nul! pr!kin! o&brojavanj!$ 'ulta vr!&no"t# &akl!# pr!&"tavlja kraj i izlazak iz p!tlj!# nakon 2!*a PIC na"tavlja "a izvravanj! &alj!* pro*ra a$ 'ajpr! tr!ba &!9ini"ati kon"tantnu vr!&no"t koja 0! pr!&"tavljati inicijalnu vr!&no"t broja2a$ 'azovit! j! 5C<78C$ Zati tr!ba o&lu2iti kolika 0! biti "tvarna vr!&no"t ovo* broja$ 'ajv!0i broj koji "! o! za&ati j! &Q@FFQ o&no"no +NFF$ M!%uti # kao to j! napo !nuto u pr!t;o&no po*lavlju# nar!&ba !Xu pri&ruuj! i !na obi2ni broj!vi a# n! prav!0i razliku iz !%u a&r!"a r!*i"tra i bitova$ Zato 0!t!# ukoliko probat! njo pri&ruiti vr!&no"t +NFF# &obiti *r!ku pri ko pajliranju pro*ra a$ <vo "! &!ava j!r ! orij"ka a&r!"a +NFF nij! i pl! !ntovana u PIC16F84# i zbo* to*a joj n! o!t! pri"tupiti$ Pa kako on&a pri&ruiti !lj!ni broj? Za to j! potr!bno &a "a "tran! "a*l!&at! "ituaciju$ -koliko i !nu 5C<78C pri&ruit!# na pri !r a&r!"u +N+C# ona 0! ukazivati na a&r!"u r!*i"tra opt! na !n! (C8M ! oriju koju o!t! "lobo&no kori"titi)$ Priliko &obijanja napona napajanja# "vi n!i"kori0!ni r!*i"tri u ikrokontrol!ru (o"i r!*i"tara "p!cijaln! na !n!) po"tavljaju "! na vr!&no"t +NFF$ Zato 0! 5C<78C i ati vr!&no"t +NFF$ 8li# kako on&a po&!"iti 5C<78C na &ru*u vr!&no"t? Sv! to tr!bat! ura&iti j! &a ubacit! !lj!nu vr!&no"t u taj r!*i"tar$ 'a pri !r# ukoliko !lit! &a 5C<78C "a&ri vr!&no"t +N8F# n! o!t! napi"ati 5C<78C !Xu +N8F# j!r 0! on&a 5C<78C "a&rati a&r!"u TCIS8 r!*i"tra$ Zato tr!bat! ura&iti "l!&!0!/ movlw movwf 0x85 0x0# A 'ajpr! "tavit! broj +N8F u U r!*i"tar# A a on&a *a pr!bacit! u +N+C r!*i"tar
Sa&a o!t! "lobo&no napi"ati 5C<78C !Xu +N+C$ >r!&no"t unutar i !novano* r!*i"tra 5C<78C koji "! nalazi na a&r!"i +N+C 0! biti +N8F$ Gori0!nj! n!inicijalizovani; (+NFF) vr!&no"ti o! &ov!"ti &o zabun! priliko ka"nij! analiz! pro*ra a$ >!rovatno 0!t! "! pitati kako "t! o*li " anjiti vr!&no"t u r!*i"tru b!z nj!*ov! pr!t;o&n! inicijalizacij!$ - pri !ri a u ovo uput"tvu on! "u kori0!n! i"klju2ivo zbo* t!&nj! pro"tora$ -koliko i; >i bu&!t! kori"tili u "voji pro*ra i a obav!zno to na*la"it! o&*ovaraju0i ko !ntari a$ 11
3alj! "! tr!ba " anjivati vr!&no"t r!*i"tra 5C<78C "v! &ok n! &o"ti*n! vr!&no"t +N++$ -nutar PIC po"toji in"trukcija kojo "! o! ovo ura&iti# uz alu po o0 in"trukcij! *oto i lab!l!$ Ta in"trukcija i a "l!&!0i oblik/ decfsz BR"$A#,1
In"trukcija 3=CFSZ 9#& (!n*$ De5r! !nt /# Skip i9 1!ro) zna2i JS anji vr!&no"t r!*i"tra 9 (u ovo "lu2aju 5C<78C o&no"no +N+C) i "tavi &obij!nu vr!&no"t u U ako j! &V+# o&no"no u r!*i"tar 9 ako j! &V1$ -koliko j! r!zultat nakon " anj!nja j!&nak + pr!"ko2i "l!&!0u in"trukcijuS$ Gako "! o&r!&it! r!zultata kori"ti u &o"ta in"trukcija# a kao to "t! v!0 nau2ili lak! j! pa titi i !na u !"to broj!va# o*u0! j! i bitu o&r!&ita &ati i !# na "l!&!0i na2in/ % F e ! .0 e ! .1
Mno*o r!2i# za j!&nu in"trukciju$ Po*l!&ajt! nj!nu pri !nu u prak"i$ BR"$A# Pe& e ! 0x0# decfsz BR"$A#,F goto Pe& 'a"tavi o&av&!
<v&! j! najpr! (inicijalno) po"tavlj!na kon"tanta 5C<78C na +NFF$ - "l!&!0! r!&u &!9ini"ana j! lab!la nazvana P!t# i za&ana j! &!c9"z in"trukcija$ 3!c9"z 5C<78C#F " anjuj! vr!&no"t r!*i"tra 5C<78C za 1# i r!zultat vra0a u r!*i"tar 5C<78C$ <na i"tovr! !no prov!rava &a li j! nova vr!&no"t r!*i"tra 5C<78C j!&naka +$ -koliko nij!# pro*ra "! na"tavlja o& "l!&!0! linij!$ - "l!&!0oj liniji i a o in"trukciju *oto# koja vra0a izvr!nj! pro*ra a na &!c9"z in"trukciju$ To "! ponavlja "v! &ok vr!&no"t r!*i"tra 5C<78C n! bu&! j!&naka nuli$ <n&a pro*ra pr!"ka2! "l!&!0u in"trukciju (u ovo pri !ru *oto) i na"tavlja o& !"ta *&! j! napi"ano J'a"tavi o&av&!S$ Gao to vi&it!# ovi "! pro*ra JvrtiS u j!&no !"tu ta2no o&r!%!no vr! ! (kao brojanj! u urka a)# pr! n!*o to na"tavi &alj!$ To "! naziva Jprazna p!tljaS$ Gako bi "! j!&no p!tljo po"ti*lo ak"i alno kanj!nj! o& KZS D @F6 V P68ZS# bi0! >a potr!bn! bar &v! p!tlj! (j!&na unutar &ru*!) ukupno* kanj!nja o& KZS D @F6 D @F6 V +#@S &a bi"t! o*li pri !titi kako :=3 tr!p!ri$ - prolo po*lavlju to nij! na*la!no# ali "vako pro*ra u potr!bno j! &!9ini"ati po2!tak (a&r!"u unutar PIC16F84 "a koj! po2inj! "ni anj! kT&a) i kraj (po"l! ko*a n! a vi! in"trukcija)$ Po2!tak pro*ra a "! &!9ini! "l!&!0o &ir!ktivo "R' 0x00 Sa&a ubacit! ov! p!tlj! u pro*ra # i &ovrit! *a prav!0i pravi pro*ra ko !ntari a/ "a
1@
A DDDDDD I !novanj! r!*i"tra DDDDDD STATUS e ! 0x03 A 8&r!"a ST8T-S r!*i"tra TRISA e ! 0x85 A 8&r!"a TCIS8 r!*i"tra P"RTA e ! 0x05 A 8&r!"a P<CT8 r!*i"tra BR"$A#1 e ! 0x0# A Prvi broja2 za praznu p!tlju$ Inicijalno +NFF BR"$A#2 e ! 0x0( A 3ru*i broja2 za praznu p!tlju$ Inicijalno +NFF RP0 e ! 0x05 A <znaka bita F ST8T-S r!*i"tra F e ! .1 A <znaka o&r!&ita r!zultata in"trukcij! A DDDDDD Po&!avanj! porta DDDDDD o)* 0x00 bsf STATUS,RP0 movlw b'00000000' movwf TRISA movwf TRISB bcf STATUS,RP0 A DDDDDD -klju2i :=3 DDDDDD Poc movlw movwf b'00000100' A -klju2uj! :=3 "tavljaju0i vr!&no"t P"RTA A bQ+++++1++Q u U# a zati i u P<CT8
A Pr!bacuj! pro*ra u banku 1 A Po"tavlja "v! pinov! A kao izlazn! A A >ra0a pro*ra u banku +
A DDDDDD Prva p!tlja aktivna pri uklju2!noj :=3 oko +#@S DDDDDD Pe&1 decfsz goto decfsz goto BR"$A#1,F Pe&1 BR"$A#2,F Pe&1 A S anji 5C<78C1 za 1 A -koliko j! 5C<78C1 j!&nak +# na"tavi &alj! A S anji 5C<78C@ za 1 A -koliko j! 5C<78C@ j!&nak +# na"tavi &alj!# A u "uprotno vrati "! na po2!tak p!tlj!$ A <vaj broja2 broji na&ol! o& @FF &o +# @FF puta A To j! tzv$ p!tlja unutar p!tlj!$
A DDDDDD Ganj!nj! zavr!no$ Sa&a i"klju2i :=3 DDDDDD movlw movwf b'00000000' A I"klju2i :=3 "tavljaju0i + u U r!*i"tar# P"RTA A a zati u P<CT8
A DDDDDD 3ru*a p!tlja aktivna pri i"klju2!noj :=3 oko +#@S DDDDDD Pe&2 decfsz goto decfsz goto BR"$A#1,F Pe&2 BR"$A#2,F Pe&2 A 3ru*a p!tlja &ri :=3 i"klju2!no A &ovoljno &u*o &a bi "! to o*lo pri !titi A A
A DDDDDD Sa&a "! pro*ra vra0a na po2!tak DDDDDD goto Poc A >ra0anj! na po2!tak pro*ra a A DDDDDD Graj pro*ra a DDDDDD e+d A 3ir!ktiva za ozna2avanj! kraja pro*ra a$ 1K
'aravno# !l!0!t! &a i"probat! pro*ra &a bi vi&!li &a li zai"ta ra&i$ =vo !l!ktri2n! ! ! koju tr!bat! napraviti za t!"t ovo* pro*ra a$ Takt ikrokontrol!ra o&r!%!n j! upotr!blj!ni CC o"cilatorni kolo (otpornik o& 1+k[ i kon&!nzator o& KKpF)$ Iako za &ati pri !r nij! potr!bno kon9i*uri"ati pinov! oba porta# to j! po!ljno ukoliko "u pinovi na P<CT5 n!pov!zani$ 5olj! j! utroiti in"trukciju vi! n!*o rizikovati n!pouz&an ra& ili ot!0!nj! ikrokontrol!ra$ I"to tako :=3 j! o*u0! pov!zati &ir!ktno na pin (b!z otpornika)# poto PIC16F84 i a int!rno o*rani2!nj! izlazn! "truj! na aN$ @F 8$ M!%uti to nij! po!ljno$ C!na otpornika j! zan! arljiva u o&no"u na c!nu ikrokontrol!ra$ - prak"i "! 2!0! "r!0! inv!rzna lo*ika za pov!zivanj! :=3 tako to "! ano&a :=3 pov!! na HF># a kato&a (pr!ko otpornika) na pin$ Pri to ! 0! :=3 "v!tl!ti po &ovo%!nju lo*i2k! + na pin$ <vo j! o*u0! j!r pin pri lo*i2koj + o! upijati "truju &o @F 8# a i po!ljno zbo* anj!* *r!janja i potronj! ikrokontrol!ra$ .!"tita o$ -pravo "t! napravili "voj prvi pro*ra # i napravili kolo koji "! :=3 uklju2uj! i i"klju2uj!$ Za "a&a "t! "l!&!0i ova uput"tva nau2ili P o& ukupno KF in"trukcija# i v!0 kontroli!t! ulazno izlazni port$ - "l!&!0! po*lavlju nau2i0!t! kako &a "voj kT& ko pajlirat! i "ni it! u PIC$
14
6. +P-A, A!e&b$er
- ovo po*lavlju upozna0!t! "! "a MP:85 razvojni 9unkcija a nj!*ovo* !&itora$ okru!nj! # i "p!cijalni
Sa "ajta ;ttp/MMRRR$ icroc;ip$co M tr!bat! "kinuti pro*ra "ki pak!t MP:85$ <n i a int!*ri"an !&itor (u !"to Uin&oR" 'ot!pa&a)# a"! bl!r# "i ulator i &rajv!r! za "voj! pro*ra ator!$ 'a alo"t na" "a &ialBup v!zo # "a pak!t t!i oko 6FMb$ Funkcija !&itora bi tr!balo &a va j! ja"na$ ?!n!ri"anj! 2i"to* $a" 9ajla$ 8"! bl!r "lui &a t!k"tualn! in"trukcij! iz $a" 9ajla pr!tvori u ain"ki kT& koji PIC razu !$ - protivno # u !"to in"trukcij! ovlR +N+1 tr!bali bi pi"ati binarni ain"ki kT& 11++++ +++++++1$ >!rovatno >a j! v!0 &o"a&ilo &a iznova i iznova pi!t! ST8T-S !Xu +N+K i o"tala "tan&ar&na i !na$ MP:85 a"! bl!r i a o*u0no"t u2itavanja 9ajla koji "a&ri "va ova i !na$ 7o bolj!# u "!bi i a i pr!&!9ini"an! obra"c! (!n*$ "tan&ar& co&! t! plat!) za upi" a"! bl!r"ko* pro*ra a "a za*lavlj! # uobi2aj!ni &ir!ktiva a# po"!bni &!lo za int!rapt! (vi! o nji a ka"nij!)$$$ MP:85 i a j!&an poznat ba* koji "! o*l!&a u n! o*u0no"ti ra&a "a putanjo &o 9ol&!ra &uo o& F1 karakt!ra$ Zato &ir!ktno u C/ napravit! 9ol&!r IMoji pro*ra iJ$ - nj!*a kopirajt! "l!&!0i 9ajl/ P16,84.-+c B "a&ri "v! "tan&ar&n! lab!l!
<vaj 9ajl tr!balo bi &a "! nalazi u 9ol&!ru #./P)o*)01 F-2e3/4-c)och-5/4PAS4 S!-&e/P16,84.-+c <n&a u >a! t!k"t !&itoru napravit! "l!&!0! za*lavlj!#
ADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD A 8utor / A 3atu / A >!rzija / A 'a"lov / A A <pi" ;ar&v!ra / A <pi" "o9tv!ra / A Potr!bni 9ajlovi / p16F84$inc A ADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 2-3& 7-+c2!de 5616F84 8516F84.-+c9 A 3!9ini! upotr!blj!ni ikrokontrol!r
1F
::#";FI'
:#P:"FF < :%(T:"FF < :P%RT=:"; < :R#:"S# A Po&!ava kon9i*uracion! bitov!$ A >i! o nji a ka"nij!$ A 3!9ini! "tart pro*ra a
"R'
0x00
-nutar 9ol&!ra I#./4o>- 5)o*)01-J napravit! 9ol&!r IP)ob0J$ <vo za*lavlj! o!t! kori"titi za "vaki novi pro*ra koji pravit!# o!t! pro !niti# tako &a o&*ovara >ai "p!ci9i2ni potr!ba a$ !%uti uv!k *a
-koliko zavirit! u "trukturu 516F84.-+c 9ajla (FK iz Total Co an&!ra)# o!t! pri !riti &a "u u nj! u i !novani "vi r!*i"tri# pa 2ak i bitovi poj!&ini; r!*i"tra$ -koliko >a nj!*ova tr!nutna "truktura iz bilo ko* razlo*a n! o&*ovara# i ovaj 9ajl o!t! !&itovati po "op"tv!ni potr!ba a$ - to "lu2aju uv!k *a 2uvajt! zaj!&no "a $a" pro*ra o $ Sa&a uklju2it! MP:85 I3=$ '! obazirit! "! na prozor! koj! j! otvorio# v!0 "l!&it! "l!&!0u proc!&uru/ Proj!ct# Proj!ct Uizar&# '!Nt# izab!rit! PIC16F84# '!Nt Izab!rit! (ukoliko v!0 nij!) Microc;ip MP8SM Tool"uit!$ Gliknit! na IMP8SM 8""!b l!r (Mpa" Rin$!N!)J# i prov!rit! &a li "! nalazi u 9ol&!ru #./P)o*)01 F-2e3/4-c)och-5/4PAS4 S!-&e$ -koliko *a n! a# locirajt! *a ru2no kliko na 5roR"!$ <"tala &va 9ajla >a (za "a&a) ni"u bitna$ '!Nt# -piit! i ! proj!kta (npr$ Proba) i izab!rit! putanju &o ranij! napravlj!no* 9ol&!ra #./4o>- 5)o*)01-/P)ob0 '!Nt# -%it! u #./4o>- 5)o*)01-$ Gliknit! naiz !nicno na P16,84.-+c# ?0*2.031# i na 8&&# tako &a "! oba 9ajla pojav! u &!"no prozoru$ Gliknit! na "lova 8 por!& nji; &ok "! n! pro !n! u C (CopW)$ 'a taj na2in "! o&abrani 9ajlovi kopiraju u tr!nutni proj!kat (u 9ol&!ru Proba)# tako &a ori*inali o"taju n!pro !nj!ni za i&u0i put$ <"tal! o*u0! opcij! "u - (-"!r) O r!lativna putanja &o 9ajlova# S (SW"t! ) O ap"olutna putanja i 8 (8uto) O MP:85 "a o&lu2uj!$ '!Nt i kliknit! na Fini";$ - novootvor!no prozoru IProba$ cRJ &uplo kliknit! na Za*l$a" $ <tvara "! prozor !&itora u ko ! o!t! pi"ati >a pro*ra $ Mo&a va ovaj po"tupak tr!nutno iz*l!&a ko plikovano# ali u prak"i j! potr!bno ponoviti *a @ &o K puta &a bi po"tao to to i j!"t!$ <bi2na rutina$
16
Sa "vi
ovi
ADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD A 8utor P!ra 3!tli0 A 3atu @K$K$@++8 A >!rzija P#8 A 'a"lov Tr!ptanj! :=3 A A <pi" ;ar&v!ra / B CC o"cilator# :=3 o& pina C8@ ka a"i A <pi" "o9tv!ra / B <vi pro*ra o o o*u0!no j! tr!ptanj! :=3 A A Potr!bni 9ajlovi / p16F84$inc ADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD A DDDDDD Inicijalizacija a"! bl!ra DDDDDD 2-3& 7-+c2!de ::#";FI' 5616F84 A 3!9ini! upotr!blj!ni ikrokontrol!r 8516F84.-+c9 A -bacuj! naziv! r!*i"tra u pro*ra :#P:"FF < :%(T:"FF < :P%RT=:"; < :R#:"S# A Po&!ava kon9i*uracion! bitov!$
A DDDDDD I !novanj! r!*i"tra DDDDDD BR"$A#1 BR"$A#2 e ! e ! 0x0# A Prvi broja2 za praznu p!tlju$ Inicijalno +NFF 0x0( A 3ru*i broja2 za praznu p!tlju$ Inicijalno +NFF
A DDDDDD Po&!avanj! porta DDDDDD o)* bsf movlw movwf movwf bcf 0x00 STATUS,RP0 b'00000000' TRISA TRISB STATUS,RP0 A Pr!bacuj! pro*ra u 58'G1 A Po"tavlja "v! pinov! A kao izlazn! A >ra0a pro*ra u 58'G+
A DDDDDD -klju2i :=3 DDDDDD Poc movlw movwf b'00000100' P"RTA A -klju2i :=3 "tavljaju0i bQ++1++Q A u U r!*i"tar# a zati i u P<CT8
A DDDDDD Prv! p!tlja aktivna pri uklju2!noj :=3 oko +#@S DDDDDD Pe&1 decfsz goto decfsz goto BR"$A#1,F Pe&1 BR"$A#2,F Pe&1 A S anji 5C<78C1 A -koliko j! 5C<78C1 j!&nak +# na"tavi &alj! A S anji 5C<78C@ A -koliko j! 5C<78C@ j!&nak +# na"tavi &alj!# A u "uprotno vrati "! na po2!tak p!tlj!$ A <vaj broja2 broji na&ol! o& @FF &o +# @FF puta A To j! tzv$ p!tlja unutar p!tlj!$
1P
A DDDDDD Ganj!nj! zavr!no$ Sa&a i"klju2i :=3 DDDDDD movlw movwf b'00000000' P"RTA A I"klju2i :=3 "tavljaju0i + u U r!*i"tar# A a zati u P<CT8
A DDDDDD 3ru*a p!tlja aktivna pri i"klju2!noj :=3 oko +#@S DDDDDD Pe&2 decfsz goto decfsz goto BR"$A#1,F Pe&2 BR"$A#2,F Pe&2 A 3ru*a p!tlja &ri :=3 i"klju2!no A &ovoljno &u*o &a bi "! to o*lo pri !titi A A
A DDDDDD >ra0anj! pro*ra a na po2!tak DDDDDD goto Poc A >ra0anj! na po2!tak pro*ra a
Gao to "t! i "a i pr!tpo"tavili &ir!ktiva 7-+c2!de 8516F84.-+c9 ubacuj! 9ajl 516F84.-+c i"pr!& va!* a"! bl!r"ko* pro*ra a$ Sa a"! bl!r 0! pri konv!rziji in"trukcija u ain"ki kT& uz!ti iz 9ajla naziv! "a o oni; i !novani; r!*i"tra koji "! kori"t! u pro*ra u$ 'a taj na2in pro*ra j! pr!*l!&niji# >a a j! "kra0!no vr! ! pi"anja pro*ra a (za i !novanj! r!*i"tra)# a pro*ra nij! nita &ui n!*o ina2!$ Sa&a o!t! ko pajlirati pro*ra $ Za ko pajliranj! priti"nit! ta"t!r F1+ na ta"taturi$ - novootvor!no prozoru I<utputJ vi&!0!t! kratak opi" u"p!no"ti op!racij!$ Mo!t! "lobo&no i*nori"ati M!""a*! \K+@]$ <na >a" po&"!0a &a upotr!blj!ni r!*i"tri (npr$ TCIS8) ni"u u 58'G+$ -koliko >a" ova poruka n!rvira# o!t! pr! prv! in"trukcij! napi"ati ^=CC<C:=>=: BK+@^$ - I<utputJ prozoru najbitnija j! za&nja poruka$ <na S-CC==3=3J$ - 9ol&!ru IProbaJ "a&a "! nalazi par 9ajlova$ 5itni "u va $!rr# $l"t i $;!N$ - 9ajlu "a $!rr !k"t!nzijo # a"! bliranju pro*ra a$ Fajl "a $l"t !k"t!nzijo ko !ntara$$$ Iz nj!*a a"! bliranju$ ora biti I5-I:3
pr!&"tavlja &!taljan pr!*l!& "vi; upotr!blj!ni; in"trukcija# o!t! vi&!ti u ko tr!nutku j! ta2no na"tupila *r!ka u
Fajl "a $;!N !k"t!nzijo pr!&"tavlja 9ajl "pr! an za "ni anj! u PIC$ Po"tupak "ni anja# nau2i0!t! u nar!&ni po*lavlji a$
18
I op!t pr! kupovin! pr!trait! int!rn!t$ >a novac j! u pitanju$ -nutar ikrokontrol!ra nalaz! "! takozvani kon9i*uracioni bitovi$ 'ji a "! o&r!%uju ;ar&v!r"k! "p!ci9i2no"ti ikrokontrol!ra$ Iako "u inicijalno uba2!ni u LLC<'FI? &iir!ktivu# n!ki pro*ra atori j! i*noriu i po"tupaju po "op"tv!ni "!tovanji a$ Za PIC16F84 kon9i*uracioni bitovi "u/ .atc;do* Ti !r O &ozvoljava o&no"no zabranjuj! upotr!bu U3T u pro*ra u Po7!r -p Ti !r Enabl! O prouzrokuj! kanj!nj! pri &ovo%!nju napona napajanja &a bi "! o"cilator ikrokontrol!ra "tabilizovao Co&! Prot!ction O on! o*u0ava i2itavanj! kT&a iz PIC O kopiranj! pro*ra a O!5illator O o o*u0uj! izbor j!&no* o& 4 "tan&ar&na tipa o"cilatora# o&no"no CC O (!n*$ R!"i"tor Con&!n"ator) 1 otpornik i 1 kon&!nzator :P O (!n*$ -oR PoR!r) Za kri"taln! o"cilator! al! potronj! K@G,zB@++G,z `T O Za kla"i2n! kri"taln! o"cilator! 1++G,zB4M,z ,S O (!n*$ 8i*; Sp!!&) Za kri"taln! o"cilator! v!0! brzin! 4M,zB1+M,z -potr!bu Uatc;&o* Ti !ra nau2i0!t! ka"nij!$ Za "koro "v! pri !r! u ovo on tr!ba biti i"klju2!n O U3T <FF$ uput"tvu#
PoR!r -p Ti !r =nabl! bit j! (o"i ka&a i at! kvalit!tan o"cilator i ka&a va j! potr!ban brz "tart ikrokontrol!ra) pr!poru2ljivo o"taviti uklju2!ni O PUCT= <'$ Co&! Prot!ction j! po!ljno i"klju2iti# kako bi"t! o*li v!ri9ikovati pro*ra nakon pro*ra iranja$ M!%uti # ukoliko tr!bat! pro&ati PIC "a >ai pro*ra o na koji "t! utroili K !"!ca ra&a# obav!zno *a uklju2it!$ - ovo uput"tvu# n!ka bu&! i"klju2!n B CP <FF$ 1Y
>r"t! o"cilatora nau2i0!t! ka"nij!$ Za "a&a j! bitno &a znat! &a ov&! kori"tit! CC (R!"i"tor O Capacitor) o"cilator$ 3o"ta j! to*a o a"! bl!ru i ;ar&v!ru$ >r! ! j! za u2!nj! novi; in"trukcija$ "l!&!0! po*lavlju nau2i0!t! upotr!bu potpro*ra a koji 0! >a po o0i &a pro*ra bu&! anji i j!&no"tavniji$
@+
8. Po"%rogr &#
Potpro*ra j! &!o kT&a# ili pro*ra # koji o! o pozvati kao takav ka& *o& j! potr!ban$ Potpro*ra i "! kori"t! u "lu2aj!vi a vi!"truko* izvravanja j!&n! i"t! 9unkcij!# kao na pri !r rutin! "a prazno p!tljo za kanj!nj!$ Pr!&no"ti kori0!nja potpro*ra a "u u lako0i !njanja vr!&no"ti broja2a j!&no unutar potpro*ra a# n!*o npr$ &!"!t puta kroz *lavni pro*ra # i u " anj!nju koli2in! ! orij! koju pro*ra zauzi a unutar PIC$ Po*l!&ajt! "trukturu j!&no"tavno* potpro*ra a/ BR"$A# Pe& e ! 0x0# decfsz goto return A -zi a inicijalnu vr!&no"t +NFF BR"$A#,F Pe& A S anjuj! i prov!rava A "v! &o + A Povratak iz potpro*ra a
Prvo tr!bat! lab!lo &ati potpro*ra u i !# i u ovo "lu2aju izabrano j! &a to bu&! JP!tS$ <n&a "! upi"uj! kT& koji "! izvrava u okviru potpro*ra a$ - ovo "lu2aju# to j! kanj!nj! za pro*ra "a :=3$ 'a kraju "! potpro*ra zavrava C=T-C' in"trukcijo $ 3a bi"t! pozvali potpro*ra iz *lavno* pro*ra a# j!&no"tavno upiit! C8:: in"trukciju i lab!lu po2!tka potpro*ra a$ Ga&a *lavni pro*ra &o%! &o &!la "a in"trukcijo C8:: k (!n*$ C $$ Subroutin!) Jpozovi potpro*ra S# *&! j! k a&r!"a ili lab!la potpro*ra a# on "ka2! na !"to na koj! "! nalazi potpro*ra $ Ta o na"tavlja "a izvravanj! ko an&i unutar potpro*ra a "v! &o naila"ka na in"trukciju C=T-C' (!n*$ Re"3r' 9ro Subroutin!) Jpovratak iz potpro*ra aS$ Po naila"ku na C=T-C' pro*ra na"tavlja izvravanj! o& in"trukcij! koja "! nalazi iza C8:: in"trukcij!$ Mo!t! pozvati potpro*ra koliko *o& puta !lit!# i zbo* to*a "! kori0!nj! potpro*ra a " anjuj! ukupna &uina pro*ra a$ Ipak po"toj! &v! "tvari na koj! orat! obratiti panju$ Prvo# u *lavno pro*ra u# "vi r!*i"ti oraju biti i !novani i inicijalizovani pr! n!*o to "! upotr!b!$ <ni "! o*u i !novati u "a o potpro*ra u# ili na po2!tku *lavno* pro*ra a$ 'ajprakti2nij! j! i !novati i; na po2!tku pro*ra a$ 'a taj na2in 0!t! znati &a "u "u "vi na i"to !"tu$ 3ru*o# orat! biti "i*urni &a 0! izvravanj! *lavno* pro*ra a zaobi0i potpro*ra $ -koliko "tavit! potpro*ra na kraj >a!* pro*ra a i zaboravit! &a "tavit! in"trukciju *oto koja bi na"tavila izvravanj! &alj! o& potpro*ra a# pro*ra 0! na"taviti "a izvravanj! i izvriti i potpro*ra !l!li >i to ili n!$ PIC n! pravi razliku iz !%u potpro*ra a i *lavno* pro*ra a$ <v&! tr!ba napo !nuti i o*u0no"t i"tovr! !no* i !novanja vi! r!*i"tara$ To "! izvo&i IcblockJ i I!n&cJ &ir!ktiva a$ -koliko u pro*ra u i at! &v! pro !nljiv!# tr!bat! i; pa titi u &va r!*i"tra opt! na !n!$ M!%uti # za v!0i broj r!*i"tara# prakti2nij! j! &!9ini"ati i; unutar j!&no* bloka$ 'a taj na2in ikrokontrol!r pr!uzi a obav!zu o&r!%ivanja a&r!"a poj!&ina2ni; r!*i"tara (o&r!%uj!t! u "a o prvu)# i poboljavat! portabilno"t pro*ra a za o0nij! "!rij! ikrokontrol!ra$ <2i*l!&no &a ovo nij! v!lika ut!&a pri kori0!nju "a o &va r!*i"tra$ M!%uti # pri vi! r!*i"tara ovo o! biti o& po o0i$ @1
Pr!pravit! pro*ra
A DDDDDD Inicijalizacija i i !novanj! DDDDDD 2-3& 5616F84 A 3!9ini! upotr!blj!ni ikrokontrol!r 7-+c2!de 8516F84.-+c9 A -bacuj! naziv! r!*i"tra u pro*ra ::#";FI' :#P:"FF < :%(T:"FF < :P%RT=:"; < :R#:"S# A Po&!ava kon9i*uracion! bitov!$ cb2oc@ 0x0# A Po2!tak "lobo∋ r!*i"tara BR"$A#1 A Prvi broja2 za p!tlju$ Inicijalno +NFF BR"$A#2 A 3ru*i broja2 za p!tlju$ Inicijalno +NFF e+dc A Graj bloka r!*i"tara A DDDDDD Po&!avanj! porta DDDDDD o)* 0x00 bsf STATUS,RP0 movlw b'00000000' movwf TRISA movwf TRISB bcf STATUS,RP0 A DDDDDD -klju2i :=3 DDDDDD Poc movlw b'00000100' movwf P"RTA A DDDDDD 3o&aj kanj!nj! DDDDDD call Pe& A DDDDDD Ganj!nj! zavr!no# "a&a i"klju2i :=3 DDDDDD movlw b'00000000' A I"klju2i :=3 "tavljaju0i bQ+++++Q movwf P"RTA A u U r!*i"tar# a zati i u P<CT8 A DDDDDD 3o&aj jo j!&no kanj!nj! DDDDDD call Pe& A DDDDDD Sa&a "! vrati na po2!tak pro*ra a DDDDDD goto Poc A DDDDDD Potpro*ra Pe& decfsz goto decfsz goto return za kanj!nj! o& oko +#@S DDDDDD BR"$A#1,F A <v! &v! p!tlj! "lu! za brojanj! na&ol! o& Pe& A @FF &o +# @FF puta# o o*u0avaju0i &a BR"$A#2,F A "! o! pri !titi kako :=3 tr!p!ri Pe& A Povratak iz potpro*ra a A Graj pro*ra a$
A Pr!bacuj! pro*ra u 58'G1 A Po"tavlja "v! pinov! A kao izlazn! A >ra0a pro*ra u 58'G+
Mo!t! vi&!ti &a j! kori0!nj! potpro*ra a " anj!na v!li2ina pro*ra a$ Svaki put ka&a j! potr!bno napraviti pauzu# b!z obzira "v!tli li :=3 ili n!# pozov! "! potpro*ra $ 'a kraju potpro*ra a pro*ra "! vra0a na r!& iza C8:: in"trukcij!$ @@
- pri !ru "! najpr! uklju2uj! :=3$ <n&a "! poziva potpro*ra $ 'akon povratka iz potpro*ra a o! "! i"klju2iti :=3$ <p!t "! poziva potpro*ra # i po povratku iz nj!*a# izvrava "! "l!&!0a in"trukcija# o&no"no J*oto PocS$ 5itno j! napo !nuti i to &a j! o*u0! pozivanj! &ru*o* potpro*ra a unutar prvo*$ 'a pri !r ovo j! potpuno o*u0!/ Poce&0@ P)o*1 P)o*2 call P)o*1 goto Poce&0@ call P)o*2 return return A Pozivanj! prvo* potpro*ra a A '!pr!ki&no vra0anj! na po2!tak u A Pozivanj! &ru*o* potpro*ra a A Povratak iz prvo* potpro*ra a A Povratak iz &ru*o* potpro*ra a rtvoj p!tlji
<vako "! o! i0i "a o &o o" o* nivoa &ubin! na ta "! ora obratiti panja$ Za on! koj! int!r!"uj!# ori*inalan pro*ra bio j! &u* 1@1 bajtova$ Gori0!nj! potpro*ra a# " anj!n j! na 1+4 bajta$ <vo o&a i n! iz*l!&a no*o# ali i ajt! u vi&u &a ! orija PIC16F84 ikrokontrol!ra izno"i "a o 1+@4 bajta$ Svaki bajt j! bitan$ - "l!&!0! po*lavlju nau2i0!t! kako &a PIC o2ita "poljn! "i*nal!$
@K
9. U$ 1#
3o "a&a "t! "a o pi"ali po portu 8 &a bi "! uklju2ivala i i"klju2ivala :=3$ - ovo po*lavlju nau2i0!t! upotr!bu ulazni; pinova$ 'a taj na2in o*u0! j! na pinov! ikrokontrol!ra pov!zati "poljno !l!ktron"ko kolo# i pro*ra irati PIC &a razli2ito r!a*uj! u zavi"no"ti o& "poljni; "i*nala$ Gao to >a j! poznato# &a bi kon9i*uri"ali -MI pinov! tr!ba pr!baciti pro*ra bank! + u banku 1$ 'ajpr! to ura&it!/ bsf STATUS,RP0 A 5anka 1 iz
3a bi "! kon9i*uri"ao o&*ovaraju0i pin na portu 8 kao izlazni# tr!ba po"lati + na nj! u o&*ovaraju0! !"to u TCIS8 r!*i"tru$ 3a bi "! kon9i*uri"ao kao ulazni# tr!ba po"lati 1$ movlw movwf bcf b'00000001' A Stavi bQ++++1Q u U# a zati u TRISA A TCIS8 r!*i"tar$ Tako j! pin C8+ ulazni$ STATUS,RP0 A 5anka +
<vi j! C8+ pin kon9i*uri"an kao ulazni$ Sa&a j! potr!bno prov!riti &a li j! na nj! u pri"utan nivo lo*i2k! j!&inic! ili nul!$ Za ovo "! kori"ti in"trukcija 5TFSC ili 5TFSS$ 5TFSC 9#b (!n*$ ,it T!"t /# Skip i9 Cl!ar) in"trukcija zna2i JT!"tiraj bit b r!*i"tra 9$ 8ko j! bit j!&nak +# pr!"ko2i "l!&!0u in"trukcijuJ$ 5TFSS 9#b (!n*$ ,it T!"t /# Skip i9 S!t) zna2i JT!"tiraj bit b r!*i"tra 9$ 8ko j! bit j!&nak 1# pr!"ko2i "l!&!0u in"trukcijuJ$ Goju in"trukciju 0!t! kori"titi zavi"i o& to*a kako !lit! &a pro*ra r!a*uj! ka&a t!"tirat! !lj!ni bit$ 'a pri !r# ukoliko 2!kat! &a "! na ulazno pinu javi nivo lo*i2k! 1# o!t! i"kori"titi in"trukciju 5TFSS ovako/ Po2!tak pro*ra a Te3& btfss P"RTA,0 goto Te3& 'a"tavi o&av&!
Pro*ra 0! na"taviti izvravanj! o& J'a"tavi o&av&!S "a o ukoliko j! bit : P<CT8 r!*i"tra "!tovan# o&no"no ukoliko j! na pinu C8+ pri"utan nivo lo*i2k! 1 (HF>)$ 'apiit! "a&a pro*ra koji 0! :=3 tr!ptati j!&no brzino # a ukoliko "! priti"n! pr!ki&a2# ona 0! tr!ptati &uplo "porij!$ Mo!t! probati &a "a i napi!t! c!o pro*ra # &a bi"t! vi&!li &a li "t! ";vatili po"tupak$
@4
A DDDDDD Inicijalizacija i i !novanj! DDDDDD 2-3& 5616F84 A 3!9ini! upotr!blj!ni ikrokontrol!r 7-+c2!de 8516F84.-+c9 A -bacuj! naziv! r!*i"tra u pro*ra ::#";FI' :#P:"FF < :%(T:"FF < :P%RT=:"; < :R#:"S# A Po&!ava kon9i*uracion! bitov!$ BR"$A#1 e ! 0x0# A Prvi broja2 p!tlj!$ Inicijalno +NFF BR"$A#2 e ! 0x0( A 3ru*i broja2 p!tlj!$ Inicijalno +NFF o)* 0x00 A DDDDDD Po&!avanj! porta DDDDDD bsf STATUS,RP0 movlw b'00000001' movwf TRISA movlw b'00000000' movwf TRISB bcf STATUS,RP0 A DDDDDD -klju2!nj! :=3 DDDDDD Poc movlw b'00000100' movwf P"RTA A 5anka 1 A Stavi bQ++++1Q u TCIS8$ Tako j! pin A C8+ ulazni# a C8@ izlazni$ A Stavi bQ++++++++Q u TCIS5$ Tako "u A "vi pinovi izlazni$ A 5anka + A -klju2i :=3 "tavljaju0i bQ++1++Q u A U r!*i"tar# a zati i u port 8
A DDDDDD Prov!ri &a li j! pr!ki&a2 zatvor!n DDDDDD btfsc P"RTA,0 A T!"tiraj "tanj! bita + porta 8$ 8ko j! + A pr!"ko2i prvu pauzu$ 8ko j! 1 pro%i kroz call Pe& A ob! pauz!# kao &a "! nita n! &o*a%a A DDDDDD 3o&avanj! jo j!&n! pauz! DDDDDD call Pe& A <va pauza "! uv!k izvrava
@F
A DDDDDD Pauza zavr!na$ Sa&a i"klju2i :=3 DDDDDD movlw b'00000000' A I"klju2i :=3 "tavljaju0i bQ+++++Q movwf P"RTA A u U r!*i"tar# a zati i u port 8 A DDDDDD Prov!ri &a li j! pr!ki&a2 i &alj! zatvor!n DDDDDD btfsc P"RTA,0 A T!"tiraj "tanj! C8+ pina$ 8ko j! na lo*i2koj + A pr!"ko2i prvu pauzu$ 8ko j! na 1 pro%i kroz call Pe& A ob! pauz!# kao &a "! nita n! &o*a%a A DDDDDD 3o&avanj! jo j!&n! pauz! DDDDDD call Pe& A <va pauza "! uv!k izvrava A DDDDDD Pauza zavr!na$ Sa&a "! vrati na po2!tak DDDDDD goto Poc A >rati "! na po2!tak A DDDDDD Potpro*ra Pe& decfsz goto decfsz goto return za kanj!nj! o& oko +#@S DDDDDD BR"$A#1,F A <v! &v! p!tlj! "lu! za brojanj! na&ol! o& Pe& A @FF &o +# @FF puta# o o*u0avaju0i &a BR"$A#2,F A "! o! pri !titi &a :=3 tr!p!ri Pe& A Povratak iz potpro*ra a A Graj pro*ra a$
<tpornik o& 4kP[ obav!zan j! &a bi pin C8+ i pri otvor!no pr!ki&a2u bio u "tabilno lo*i2ko "tanju (lo*i2ka +)$ - protivno # pin bi zbo* "voj! vi"ok! ulazn! i p!&an"! po"tao pr!vi! o"!tljiv na "poljnj! " !tnj! (npr$ *r ljavinu)# ili bi pak n!pr!"tano bio u lo*i2koj 1 b!z obzira na "tanj! pr!ki&a2a$ - prak"i "! u !"to otpornika pr! a a"i# 2!0! "r!0! otpornik pr! a naponu napajanja$ >i! o potr!bi za ovi (pullBup i pullB&oRn) otpornici a nau2i0!t! u nar!&ni po*lavlji a$ Pro*ra najpr! uklju2uj! :=3$ <n&a prov!rava &a li j! pr!ki&a2 zatvor!n$ -koliko nij! (na ulazu j! lo*icka +)# pro*ra "! izvrava kao &a "! nita nij! &!"ilo# i prolazi kroz oba poziva za potpro*ra $ -koliko j!"t! (na ulazu j! nivo lo*i2k! 1)# prvi poziv za potpro*ra "! pr!"ka2!# pa j! pauza u to "lu2aju i"ta kao ko& ranij! napi"ani; pro*ra a$ I"to "! &!ava i nakon to "! i"klju2i :=3$ Mo!t! ko pajlirati i i"probati ovaj pro*ra $ Ipak &a >a" o& a; upozori $ Golo i pro*ra n!0! i pr!"ionirati n!ko* ko*a n! int!r!"uj! pro*ra iranj! ikrokontrol!ra$ Zato "! n! ojt! uzn! iravati ka&a "vojoj poro&ici i prijat!lji a poka!t! kako o!t! !njati brzinu tr!ptanja :=3 pr!ki&a2! # a oni za to pokau v!o a alo int!r!"ovanja$ -koliko "t! iz po2!tka pratili ova uput"tva# on&a bi"t! o&a vol!li &a znat! &a "t! &o "a&a nau2ili 1+ o& ukupno KF in"trukcija za PIC16F841 Sv! "u nau2!n! uklju2ivanj! i i"klju2ivanj! :=3 i t!"tiranj! pr!ki&a2a$
@6
3a bi"t! uklju2ili "i ulator i&it! na 3!bu**!r# S!l!ct Tool# MP:85 SIM$ - toolbaru 0! "! pojaviti n!koliko novi; ikonica$ Gliknit! na tr!0u (8ni at! B &v! "tr!lic! na&!"no) i pratit! izvravanj! pro*ra a u prozoru "a $a" 9ajlo $ >i&it! kako j! &oao &o p!tlj! i kako n!pr!"tano izvrava &v! i"t! in"trukcij!$ 'a &ru*oj ikoni (,alt) pauzirat! pro*ra $ 'a prvoj (Cun B j!&na "tr!lica na&!"no) "! pro*ra izvrava ak"i alno brzino # ali b!z ani irano"ti nj!*ovo* izvravanja$ .!tvrto ikono (St!p Into) "! ka&a j! pro*ra u pauzirano "tanju vri pr!laz na "l!&!0u in"trukciju# korak po korak$ P!to (St!p <v!r) "! ak"i alno brzino izvrava potpro*ra ili nar!&na in"trukcija$ 6!"to ikono (St!p <ut) na"ilno "! izlazi iz potpro*ra a$ Za&njo ikono "! vri r!"!t pro*ra a# i tako nj!*ovo izvravanj! o! po2!ti iz po2!tka$ C!*i"tri opt! na !n! pri to ! za&ravaju "voj! vr!&no"ti$ 3a bi"t! vi&!li aktu!lni "a&raj r!*i"tara 5C<78C1 i 5C<78C@ o!t! za&rati i izna& nji;# ili i0i na >i!R# Fil! C!*i"t!r"$ - prozoru koji "! otvorio o!t! vi&!ti &a "! r!*i"tar na a&r!"i +N+C (koja j! izabrana za 5C<78C1) u koraci a " anjuj! &o +$ Ga&a &o"ti*n! +# " anjuj! "! 5C<78C@ na a&r!"i +N+3$ >!rovatno 0! >a laki biti prikaz lab!la# a n! a&r!"a$ Pro !nit! prikaz kliko na ISW bolicJ tab$ 3onji &!o MP:85 prozora prua >a kori"n! in9or acij! o tr!nutno "tanju bank!# U r!*i"tra i poj!&ini; bitova ST8T-S r!*i"tra$ >!lika "lova Z# 3C i C pri &nu !krana ozna2avaju &a "u ti bitovi "!tovani$ -potr!bu ovi; bitova nau2i0!t! ka"nij!$ 3!taljnij! pra0!nj! pro !na r!*i"tara# o!t! uklju2iti pr!ko >i!R# Uatc; opcij!$ <"!n2it! !lj!ni r!*i"tar# i pr!vucit! *a u Uatc; prozor$ 3!"ni kliko pr!ko r!*i"tra unutar Uatc; prozora i izboro opcij! Prop!rti!" &obijat! o*u0no"t po&!avanja !lj!no* 9or ata broj!va$ Za 5C<78C1 i 5C<78C@ najpr!*l!&niji bi bio &!ci alni 9or at$ 3upli kliko na vr!&no"ti por!& r!*i"tara# o!t! i; na"ilno pro !niti$ Mo&a va j! ani acija brzin! izvravanja pro*ra a pr!vi! "pora? Pov!0ajt! j! na 3!bu**!r# S!ttin*"# 8ni ation M C!alti ! -p&at!" po& 8ni at! "t!p ti !$ - !"to F++ S "tavit! npr$ F+$ 5rzina "i uliranja o*rani2!na j! brzino va!* ko pjut!ra$ @P
-koliko >a" int!r!"uj! r!alna brzina (!n*$ C!al Ti !) kojo bi pro*ra ra&io# o!t! j! prov!riti pr!ko 3!bu**!r# StopRatc; (!n*$ "topRatc; O top!rica) opcij!$ 3ovoljno j! izabrati brzinu o"cilatora u 3!bu**!r# S!tin*"# <"c M trac! opciji$ Za &at! vr!&no"ti CC o"cilatora (1+k[ i KKpF)# ona j! oko K#FM,z$ '!ka&a n! a "vr;! 2!kati &a "! zavri o&r!%!ni proc!" (npr$ prazna p!tlja)$ MP:85 "i ulator >a o o*u0ava &a u pro*ra u po"tavit! ta2k! pr!ki&a (!n*$ 5r!akpoint) &upli kliko na !lj!nu in"trukciju$ Crv!na oznaka 5 pojavljuj! "! l!v! "tran! prozora !&itora$ .i "i ulator nai%! na taj &!o# zau"tavi0! &alju "i ulaciju to 0! >a o o*u0iti pr!*l!& "tanja r!*i"tara ili prora2un vr! !na (pr!ko top!ric!) potr!bno* za izvravanj! in"trukcija$ -potr!ba top!ric! o! biti izuz!tno kori"na$ 'a pri !r &a bi"t! ta2no o&r!&ili vr! ! za koj! j! :=3 aktivna# &ovoljno j! po"taviti j!&nu ta2ku pr!ki&a na call in"trukciju$ <n&a "! pro*ra izvri (Cun B b!z ani iranja) &o prv! ta2k! pr!ki&a# i tu "! r!"!tuj! top!rica i klikn! na St!p <v!r$ Potpro*ra "! izvrava ak"i alno brzino (b!z ani iranja) i nakon to "! zavri i2ita "! prot!klo vr! ! iz top!ric!$ Iako j! prikaz "vi; izlazni; pinova portova v!o a lako i pl! !ntirati# ukoliko j! potr!bno "i ulirati pro*ra koji tr!ba r!a*ovati na "i*nal! "a ulazni; pinova (tipa priti"nut pr!ki&a2 T1) "tanj! "! iz o"nova !nja$ 3a bi to bilo o*u0! ora "! &!9ini"ati o&r!%!ni "ti ulan" (!n*$ Sti ulu") po ko ! 0! "! o&vijati pro !n!$ E!lj!ni "c!nario pro !na &!9ini!t! "a 3!bu**!r# Sti ulu" Controll!r# '!R Sc!nario$ 'a pri !r# ukoliko j! pr!ki&a2 na C8+ pinu "vo vr! ! priti"nut (a pin j! &!9ini"an kao ulazni)# potr!bno j! izabrati a"in;roni (8"Wnc;) tab# a zati u j!&no o& r!&ova ubaciti C8+ i S!t ,i*; akciju$ 3a bi "! !njalo ulazno "tanj! o&r!%!no* pina potr!bno j! izabrati !lj!ni pin (npr$ i"to C8+) i To**l! akciju$ Pri njoj "! kliko na Fir! polj! por!& !lj!no* pina !nja nj!*ovo lo*i2ko "tanj!# to o!t! pratiti u Fil! C!*i"t!r" ili Uatc; prozoru$ -koliko j! potr!bno &a pin u o&r!%!no lo*i2ko "tanju bu&! ta2no o&r!%!no vr! !# o!t! izabrati Pul"! ,i*; ili Pul"! :oR akciju$ - to "lu2aju tr!bat! o&r!&iti i !lj!nu &uinu i pul"a &atu u vr! !nu ili broju in"trukcij"ki; ciklu"a$ Po2!tak i pul"a "! tako%! o&r!%uj! kliko na Fir! polj! por!& !lj!no* pina$ - a"in;rono tabu potr!bno j! u !lj!no tr!nutku 9izi2ki kliknuti na polj! za pokr!tanj! o&r!%!ni; opcija$ - C!*i"t!r Inj!ction tabu !lj!ni tr!nutci pro !n! "tanja pinova (bitova) o*u "! &!9ini"ati !k"t!rni 9ajlo # a u C!*i"t!r Trac! tabu o! "! &!9ini"ati !k"t!rni 9ajl koji 0! "ni ati "tanj! o&r!%!ni; bitova po unapr!& za&ati krit!riju i a$ Clock Sti ulu" tabo &!9iniu "! lo*i2ka "tanja pinova koja 0! "! javljati u ta2no o&r!%!ni tr!nutci a$ Za "lo!nija "tanja# orao bi "! kori"titi C!*i"t!r Inj!ction tab$ Pin M C!*i"t!r 8ction" i 8&vanc!& Pin M C!*i"t!r tabovi a &!9iniu "! "lo!nij! akcij! koj! 0! "! o&vijati po pro !ni ili &o"tizanju unapr!& za&ato* "tanja bita ili r!*i"tra$ Za po2!tak# kori"tit! j!&ino a"in;roni tab$ - "l!&!0! po*lavlju nau2i0!t! kako "! pro*ra "ka ! orija ikrokontrol!ra o! !9ika"nij! i"kori"titi$
@8
'ajpr! j! uba2!na vr!&no"t +N+4 u U r!*i"tar# zati j! pro"l!%!na na P<CT8 &a bi "! uklju2ila :=3$ 3a bi "! i"klju2ila obri"an j! U r!*i"tar# i ponovo j! nj!*ova vr!&no"t pro"l!%!na na P<CT8$ Iz !%u ovi; rutina pozivan j! potpro*ra za kanj!nj! &a bi "! o*lo pri !titi &a :=3 tr!p!ri$ Zna2i &va puta "u pr!bacivana @ "!ta po&ataka (j!&no u U r!*i"tar# a on&a u P<CT8) i &va puta j! pozivan potpro*ra (j!&no nakon uklju2!nja i j!&no nakon i"klju2!nja :=3)$ Gako "! ovo o! !9!ktnij! r!iti? Gori"t!0i lo*i2ku op!raciju zvanu `<C$
`<C (!n*$ ==clu"iv! Or) op!racija izvrava lo*i2ku op!raciju J!k"kluzivno iliS na r!*i"tru koji o&r!&it!# "a vr!&no0u koju u &at!$ Tr!balo bi ovo alo bolj! obja"niti$ XOR + + 1 1 + 1 + 1 + 1 1 + 00101110 A"R 10010110 6 10111000 C!zultat `<C op!racij! 0! biti lo*i2ka 1 "a o ukoliko "u u oba op!ran&a razli2ita$ -koliko "u i"ta (ob! + ili ob! 1)# r!zultat 0! biti lo*i2ka +$
`<C (kao i "v! o"tal! lo*i2k! in"trukcij!) "! o! izvriti j!&ino na& c!li bajtovi a# pri 2! u "! vo&i ra2una o nji;ovo poloaju$ :S5 bit r!zultata "a&ra0! r!zultat `<C op!racij! na& :S5 bitovi a prvo* i &ru*o* op!ran&a$
@Y
-o2avat! li &a `<C op!racijo na& bito koji j! "talno na lo*i2koj 1 i pr!t;o&ni "tanj! bita !nja "tanj! r!zultata "a + na 1 i "a 1 na +? I 00000000 A"R 00000001 6 00000001 Ta "p!ci9i2no"t `<C op!racij! i"klju2ivanj! :=3$ II 00000001 A"R 00000001 6 00000000 o! biti i"kori0!na za naiz !ni2no uklju2ivanj! i
7o j!&na int!r!"antna o"obina `<C op!racij! j! &a bilo koja vr!&no"t &va puta `<CB ovana i"ti broj! vra0a ori*inalnu vr!&no"t$ I 00101110 A"R 10010110 6 10111000 `<C op!racija II 10111000 A"R 10010110 6 00101110
1$ `<C:U k *&! "! `<C op!racija izvrava na& U i kon"tantno vr!&no0u k$ >r!&no"t k ora biti u op"!*u o& + &o @FF (+N++ O +NFF)$ C!zultat op!racij! 0! biti u U r!*i"tru$ @$ `<CUF 9#& *&! "! `<C op!racija izvrava na& U i vr!&no"ti unutar r!*i"tra 2ija j! a&r!"a ozna2!na "a 9$ Sa I&J j! ozna2!no *&! 0! biti " !t!n r!zultat `<C op!racij!$ -koliko j! &V+# r!zultat 0! biti u U r!*i"tru# a ukoliko j! &V1# r!zultat 0! biti " !t!n u 9 r!*i"tru$ -potr!bo ov! in"trukcij! "u za naiz !ni2no uklju2!nj! i i"klju2!nj! :=3 &ovoljn! "a o &v! linij! kT&a/ movlw xorwf b'00000100' P"RTA,F A bQ+++++1++Q u U A Pro !ni "tanj! bita @ u P<CT8 r!*i"tru
<v&! j! vr!&no"t +N+4 (bQ++1++Q) `<CBovana "a raniji "a&raj! porta 8$ -koliko j! bit @ u portu 8 bio 1# po"ta0! +# a ukoliko j! bio + po"ta0! 1$ .ak n! a ni potr!b! za inicijalizacijo vr!&no"ti u portu 8$ Zbo* 2!*a? Pa ukoliko j! nj!*ov bit @ bio +# pro !ni0! "!$ -koliko j! bio 1# op!t 0! "! pro !niti$ M!%uti # n!&o"tatak inicijalizacij! porta 8 o! uticati na "tanj! o"tali; pinova# tako &a j! ona "vakako pr!poru2ljiva$ Iako j! &ir!ktna anipulacija na& portovi a "a"vi o*u0a# &ir!ktno !njanj! P<CT8 (ili P<CT5) r!*i"tra n! "pa&a u &obru pro*ra !r"ku prak"u$ Zbo* 2!*a? Zbo* int!rno* CMU (!n*$ R!a& +o&i9W .rit!) ciklu"a ikrokontrol!ra$ CMU ciklu" zna2i &a ikrokontrol!r priliko pro !n! "tanja n!ko* o& bitova o&*ovaraju2!* r!*i"tra najpr! o2ita c!o r!*i"tar ("vi; 8 bitova)# zati izvri !lj!nu op!raciju na& nji # i na kraju vrati r!zultat u taj i"ti r!*i"tar$ K+
Za i"lit! &a j! kori"nik r!io &a izvu2! :=3 na n!ko u&alj!nij! !"to (kao to no*i izvla2! "i*nalizaciju j!9tin! "truj! "a "trujo !ra)$ Gablovi pr!ko koji; j! pov!zana :=3 ponaaju "! u"l!& "voj! v!lik! &uin! i al! &aljin! j!&an o& &ru*o* kao kon&!nzator al! kapacitivno"ti$ Zato j! ukoliko !lit! brzo uklju2iti i i"klju2iti :=3 o*u0! &a ona n!po"r!&no nakon uklju2!nja n! za"v!tli zbo* pr!vi! al! otporno"ti na nj!ni vo&ovi a (&ok "! takav virtu!lni kon&!nzator n! napuni)$ -koliko o& a; po uklju2!nju o2itat! "tanj! "a P<CT5 r!*i"tra# vi&!0!t! &a :=3 i &alj! nij! uklju2!na$ P<CT5 (i P<CT8) "! pri o2itavanju "tanja ponaaju kao &a "u pov!zani kao ulazi# b!z obzira na ranij! kon9i*uri"ano "tanj! pinova$ To o! &ov!"ti &o o2itavanja po*r!no* "tanja# a "a i ti i n!pravilno* ra&a pro*ra a$ PIC j! ;ar&v!r"ki kon"trui"an tako &a j! o*u0! 2ak i &a "! o2itavanj! "tanja "a portova o! zavriti i pr! ranij! za&at! pro !n! nji;ovi; "tanja$ Zbo* to*a j! pouz&anij! "v! op!racij! izvravati na& o&r!%!ni r!*i"tro opt! na !n! (obi2no "! taj r!*i"tar naziva ";a&&oR r!*i"tar (!n*$ S;a&&oR O "!nka))# a t!k on&a ka&a j! to n!op;o&no kopirati r!zultat iz nj!*a u o&*ovaraju0i port$ >i! o ";a&&oR r!*i"tri a o!t! nau2iti na ;ttp/MMRRR$picli"t$co Mt!c,C=FMr!a& o&Rrit!$;t "ajtu$ Po*l!&ajt! "a&a novi a"! bl!r"ki kT&$ Prvi j! ori*inalni pro*ra za tr!p!r!nj! :=3# a u &ru*o j! &o&at pr!ki&a2$ - oba pro*ra a kao ";a&&oR r!*i"tar upotr!blj!n j! U r!*i"tar# j!r "! nj!*ovo "tanj! n! !nja u o"tali &!lovi a pro*ra a$ 3a "! !nja# kori"tio bi "! n!ki o& r!*i"tara opt! na !n!$ Treptua LED A DDDDDD Inicijalizacija i i !novanj! DDDDDD 2-3& 5616F84 A 3!9ini! upotr!blj!ni ikrokontrol!r 7-+c2!de 8516F84.-+c9 A -bacuj! naziv! r!*i"tra u pro*ra ::#";FI' :#P:"FF < :%(T:"FF < :P%RT=:"; < :R#:"S# A Po&!ava kon9i*uracion! bitov!$ BR"$A#1 e ! 0x0# A Prvi broja2 p!tlj!$ Inicijalno +NFF BR"$A#2 e ! 0x0( A 3ru*i broja2 p!tlj!$ Inicijalno +NFF o)* 0x00 A DDDDDD Inicijalizacija i po&!avanj! porta DDDDDD bsf STATUS,RP0 A 5anka 1 clrf TRISA A Po"tavlja "v! pinov! clrf TRISB A kao izlazn!$ bcf STATUS,RP0 A 5anka + clrw A U j! inicijalizovan na +N++ A DDDDDD -klju2!nj! i i"klju2!nj! :=3 DDDDDD Poc xorlw b'00000100' A Pro !ni "tanj! bita @ u U r!*i"tru movwf P"RTA A Gopiraj U u P<CT8 A DDDDDD Pauza DDDDDD call Pe& A DDDDDD Pauza zavr!na$ >rati "! na po2!tak pro*ra a DDDDDD goto Poc A >rati "! na po2!tak
K1
za kanj!nj! o& oko +#@S DDDDDD BR"$A#1,F A <v! &v! p!tlj! "lu! za brojanj! na&ol! o& Pe& A @FF &o +# @FF puta# o o*u0avaju0i &a "! BR"$A#2,F A o! pri !titi kako :=3 tr!p!ri Pe& A Povratak iz potpro*ra a A Graj pro*ra a
Treptua LED a pre!"#a$e% A DDDDDD Inicijalizacija i i !novanj! DDDDDD 2-3& 5616F84 A 3!9ini! upotr!blj!ni ikrokontrol!r 7-+c2!de 8516F84.-+c9 A -bacuj! naziv! r!*i"tra u pro*ra ::#";FI' :#P:"FF < :%(T:"FF < :P%RT=:"; < :R#:"S# A Po&!ava kon9i*uracion! bitov!$ BR"$A#1 e ! 0x0# A Prvi broja2 p!tlj!$ Inicijalno +NFF BR"$A#2 e ! 0x0( A 3ru*i broja2 p!tlj!$ Inicijalno +NFF o)* 0x00 A DDDDDD Po&!avanj! porta DDDDDD bsf STATUS,RP0 movlw b'00000001' movwf TRISA clrf TRISB bcf STATUS,RP0 clrw A 5anka 1 A Stavi bQ++++1Q u TCIS8$ Tako j! bit + A porta 8 ulazni# a bit @ izlazni$ A Svi pinovi na portu 5 "u izlazni$ A 5anka + A U j! inicijalizovan na +N++
A DDDDDD -klju2!nj! i i"klju2!nj! :=3 DDDDDD Poc xorlw b'00000100' A Pro !ni "tanj! bita @ u U r!*i"tru movwf P"RTA A Gopiraj U u port 8 A DDDDDD Prov!ri &a li j! pr!ki&a2 zatvor!n DDDDDD btfsc P"RTA,0 A -z i vr!&no"t "a pina C8+$ -koliko j! + A pr!"ko2i prvu pauzu$ -koliko j! 1 pro%i kroz call Pe& A ob! pauz!# kao &a "! nita n! &o*a%a A DDDDDD 3o&avanj! jo j!&n! pauz! DDDDDD call Pe& A <va pauza "! uv!k izvrava A DDDDDD Pauza zavr!na$ >rati "! na po2!tak pro*ra a DDDDDD goto Poc A >rati "! na po2!tak
K@
za kanj!nj! o& oko +#@S DDDDDD BR"$A#1,F A <v! &v! p!tlj! "lu! za brojanj! na&ol! o& Pe& A @FF &o +# @FF puta# o o*u0avaju0i &a "! BR"$A#2,F A o! pri !titi kako :=3 tr!p!ri Pe& A Povratak iz potpro*ra a A Graj pro*ra a
'a&a "! &a "t! uo2ili &a j! upotr!bo novi; in"trukcija prili2no " anj!na v!li2ina pro*ra a$ 3a bi"t! lak! uo2ili ovu razliku# i"po& "u prikazni nazivi pro*ra a# iz !n! koj! "u izvr!n!# i nji;ov! v!li2in!$ Pro*ra Tr!ptu0a :=3 Tr!ptu0a :=3 Tr!ptu0a :=3 :=3 "a pr!ki&a2! :=3 "a pr!ki&a2! Iz !na >!li2ina (in"trukcija) 18 1P 14 @@ 1P
<ri*inal 3o&at potpro*ra 3o&ata !k"kluzivno ili 9unkcija <ri*inal 3o&ata !k"kluzivno ili 9unkcija
>i&it! &a "t! n! "a o nau2ili nov! in"trukcij!# v!0 "t! i " anjili v!li2inu pro*ra a$
KK
1$ 8'3:U k koja izvrava 8'3 op!raciju na& r!*i"tro vr!&no0u k$ C!zultat op!racij! 0! biti u U r!*i"tru$
@$ 8'3UF 9#& koja izvrava 8'3 op!raciju na& vr!&no0u U i vr!&no0u 9 r!*i"tra$ Sa I&J j! ozna2!no *&! 0! biti " !t!n r!zultat op!racij!$ -koliko j! &V+# r!zultat 0! biti u U r!*i"tru# a ukoliko j! &V1# r!zultat 0! biti u 9 r!*i"tru$ Sl!&i I<C op!racija/ 'OR + + 1 1 + 1 + 1 + 1 1 1 01101011 I"R 10100101 6 11101111 C!zultat I<C op!racij! bi0! lo*i2ka 1 ukoliko j! bar na j!&no op!ran&u pri"utna lo*i2ka 1$ -koliko "u oba na lo*i2koj +# i r!zultat 0! biti j!&nak lo*i2koj +$
I ona "! javlja u &va oblika$ 1$ I<C:U k koja izvrava I<C op!raciju na& r!*i"tro vr!&no0u k$ C!zultat op!racij! 0! biti u U r!*i"tru$ U i kon"tantno
@$ I<CUF 9#& koja izvrava I<C op!raciju na& vr!&no0u U r!*i"tra i 9 r!*i"tra$ -koliko j! &V+# r!zultat 0! biti u U r!*i"tru# a ukoliko j! &V1# r!zultat 0! biti u 9 r!*i"tru$ Za&nja lo*i2ka op!racija koju po&rava PIC16F84 j! ko pl! !nt$ CO( + 1 1 + #"4 01101011 6 10010100 Go pl! !nt# n!*acija ili inv!rtovanj! j! lo*i2ka op!racija u kojoj "vaki bit unutar bajta !nja "voj! "tanj!$ K4
Za razliku o& o"tali; lo*i2ki; op!racija ko pl! !n "! izvrava na& "a o j!&ni bajto $ Zbo* to*a ova op!racija i a "a o j!&an oblik in"trukcij!$ C<MF 9#& in"trukcijo "! inv!rtuju "vi bitovi u r!*i"tru 9$ -koliko j! &V+ r!zultat 0! biti u U# a ukoliko j! 1 u 9 r!*i"tru$ >!rovatno uo2avat! &a "t! ovu lo*i2ku op!raciju o*li upotr!biti u ranij! pro*ra u u !"to `<C$ 7!&ina razlika j! u to ! to bi "! on&a inv!rtovali "vi bitovi P<CT8 r!*i"tra# a n! "a o onaj koji j! potr!ban$ Sli2no kao `<C op!racija# &uplo ko pl! !ntovana vr!&no"t vra0a ori*inalnu/ I #"4 01101011 6 10010100 II #"4 10010100 6 01101011
Sv! &o "a&a nau2!n! lo*i2k! op!racij! !njaju vr!&no"t bita @ ST8T-S r!*i"tra u "lu2aju &a j! r!zultat nji;ov! op!racij! j!&nak nuli$ Gako j! bit @ po to ! "p!ci9i2an on i a "voju po"!bnu oznaku Inulti bitJ (!n*$ Z!ro 9la*)$ T!r in I9la*J kori"ti "! za ozna2avanj! bitova koj! ikrokontrol!r "a "!tuj! ili r!"!tuj! u zavi"no"ti o& "vo* tr!nutno* "tanja (u ovo "lu2aju r!zultata pr!t;o&n! lo*i2k! in"trukcij!)$ 3akl! ukoliko j! r!zultat `<C op!racij! "l!&!0i/ A"R 6 00011010 00011010 00000000
Z!ro 9la* ST8T-S r!*i"tra 0! biti "!tovan$ <vo "! o! i"kori"titi za brzo por!%!nj! vr!&no"ti u r!*i"tru tako to "! u U r!*i"tar po"tavit! !lj!ni oblik bitova a on&a izvri `<C op!raciju na& nji i !lj!ni r!*i"tro $ -koliko j! "tanj! unutar r!*i"tra j!&nako "tanju u U r!*i"tru# Z!ro 9la* 0! biti "!tovan$ Iako n! a no*o " i"la Z!ro 9la* ko pl! !ntovanja$ #"4 6 o!t! "!tovati 2ak i op!racijo
11111111 00000000
- prilo*u ovo* uput"tva o!t! vi&!ti upor!&ni prikaz in"trukcija u ko ! j! nav!&!no koj! "v! in"trukcij! !njaju "tanj! Z!ro 9la*a$
KF
3akl! ka&a j!&inica &o%! &o kraja# &o*a%a "! "l!&!0!/ CarrW 9la* 0 0 1 0 0 5itovi +N+C r!*i"tra 76543210 01000000 10000000 00000000 00000001 00000010 .
>i&it! &a j! CarrW 9la* ov&! i"kori0!n kao o" i bit r!*i"tra$ -koliko va j! to potr!bno o!t! ubaciti + ili 1 u CarrW 9la* pr! rotacij! in"trukcija a b"9 ST8T-S#C i bc9 ST8T-S#C (C j! i !novani bit + ST8T-S r!*i"tra)$ Tako 0! "! vr!&no"t iz CarrW 9la*a pojaviti na bitu + nakon rl9 in"trukcij!$ Pr!poru2ljivo j! ovo ura&iti n!po"r!&no pr! rotacij! kako na bitu + nakon rotacij! n! bi &obili n!poznatu vr!&no"t$ '! uti2! "a o C:F in"trukcija na CarrW 9la*$ Int!r!n"antno j! &a "! rotacijo unutar r!*i"tra noi "a @$ # 0 0 1 76543210 01011001 10110010 01100100 ul!vo ("a pr!t;o&no r!"!tovani CarrW 9la*o ) broj
6 6 6
-koliko va j! potr!bno no!nj! "a @ v!0i; broj!va o!t! kori"titi uza"topnu rotaciju &va ili vi! r!*i"tra$ CarrW 9la* iz prvo* r!*i"tra pr!n!0! "! na po2!tak &ru*o*$ Ga&a v!0 po"toji in"trukcija za rotaciju ul!vo# lo*i2no bi bilo &a po"toji i in"trukcija za rotaciju bitova u&!"no$ Po"toji1 K6
CCF (Rotat! Ri*;t / T;rou*; CarrW) Sintak"a in"trukcij! j! i"ta kao i ko& C:F$ Gako "! rl9 in"trukcijo "a&raj u r!*i"tru noi "a @# rr9 in"trukcijo (i r!"!tovani CarrW 9la*o ) "! "a&raj r!*i"tra &!li "a @$ :S5 "! pr! !ta u CarrW 9la* po "l!&!0! / CarrW 9la* 0 0 1 0 5itovi +N+C; r!*i"tra 76543210 00000010 00000001 00000000 10000000 "lu2aju
In"trukcij! C:F i CCF o*u "! upotr!biti za "i ulaciju tr2!0!* "v!tla$ - to o*u0i al*orita bi bio/ SP"RTB e ! rlf movf movwf 0x0# SP"RTB,F SP"RTB,% P"RTB A Cotacija u S,833<U r!*i"tru A Gopiranj! iz S,833<U u U A Gopiranj! iz U u P<CT5$
In"trukcija ov9 9#&$ (!n*$ +ov! /) vr!&no"t iz r!*i"tra 9 pr!bacuj! u U (pri &V+) ili u taj i"ti r!*i"tar 9 (pri &V1)$ Zbo* 2!*a bi iko !l!o &a "a&raj r!*i"tra upi! u taj i"ti r!*i"tar? - prak"i "! ta o*u0no"t kori"ti j!&ino pri t!"tiranju "a&raja r!*i"tra na vr!&no"t +N++# j!r ov9 in"trukcija uti2! na Z!ro 9la*$ Sl!&!0o ! o ilu"trovana j! upotr!ba lo*i2ki; i in"trukcija rotacij!/
KP
)p*tre+a ,*-"$!". " "/ tru!0"1a r*ta0"1e A DDDDDD Inicijalizacija i i !novanj! DDDDDD 2-3& 5616F84 A 3!9ini! upotr!blj!ni ikrokontrol!r 7-+c2!de 8516F84.-+c9 A -bacuj! naziv! r!*i"tra u pro*ra ::#";FI' :#P:"FF < :%(T:"FF < :P%RT=:"; < :R#:"S# A Po&!ava kon9i*uracion! bitov!$ (ATA e ! 0x0# A C!*i"tar za privr! !n! po&atk! o)* 0x00 A DDDDDD Po&!avanj! porta DDDDDD bsf STATUS,RP0 movlw b'00000011' movwf TRISA clrf TRISB bcf STATUS,RP0 A Pr!bacuj! pro*ra u 58'G1 A Stavi bQ+++11Q u TCIS8$ Tako "u bit + i A bit 1 ulazni# a bit @ izlazni$ A Svi pinovi na P<CT5 "u izlazni$ A >ra0a pro*ra u 58'G+
A DDDDDD T!"tiranj! pr!ki&a2a DDDDDD Poc rlf P"RTA,% A Cotiraj "a&raj P<CT8 i "tavi r!zultat u U A r!*i"tar# Tako j! bit + &oao na !"to bita 1 xorwf P"RTA,% A Izvri `<C na& P<CT8 i U r!*i"tro # A i "tavi r!zultat u U (int!r!"uj! na" A `<C na& bito 1 ova &va r!*i"tra)$ A DDDDDD Pr!bacivanj! r!zultata na izlaz DDDDDD movwf (ATA A Pr! !"ti "a&raj iz U u 38T8 j!r "! rotacija A n! o! izvriti &ir!ktno na& U r!*i"tro rlf (ATA,% A Cotiraj "a&raj$ Tako j! bit 1 &oao na !"to A bita @ (na !"to izlazno* bita) i vrati r!zultat A u U r!*i"tar$ movwf P"RTA A Stavi r!zultat u P<CT8$ Gako "u bit + i bit 1 A ulazni# n!0! r!a*ovati# a na bitu @ 0! "! A pojaviti r!zultat `<C op!racij! na& A po"tavlj!ni "tanj! pr!ki&a2a$ goto Poc A Povratak na po2!tak$ A DDDDDD Graj DDDDDD e+d A Graj pro*ra a$
Go pajlirajt! pro*ra # pro*ra irajt! PIC i i"probajt! nj!*ov ra&$ Iz ko !ntara "! o! lako zaklju2iti ta pro*ra ra&i$ =vo ta 0! "! &o*o&iti u pro*ra u u "lu2aju &a "u oba pr!ki&a2a zatvor!na/ PIC uzi a vr!&no"t iz P<CT8$ Gako "u oba ta"t!ra priti"nuta ona j! bQ+++11Q$ Ta vr!&no"t "! rotira# i po"taj! bQ++11+Q$ C!zultat "! " !ta u U r!*i"tar$ 3alj! "! izvrava !k"kluzivno ili na& to vr!&no0u i tr!nutno vr!&no0u P<CT8 koji j! i &alj! bQ+++11Q$
K8
Sa&a "! r!zultat bQ++1+1Q pr!bacuj! u privr! !ni r!*i"tar 38T8 *&! "! rotira$ Cotirana vr!&no"t j! bQ+1+1+Q# i ona "! pr!ko U r!*i"tra " !ta u P<CT8$ Gako "u na P<CT8 bit + i bit 1 ulazni# vr!&no"t koja 0! &o0i na nji; bi0! i*nori"ana# a bit K na" ionako n! int!r!"uj! i nj!*ova vr!&no"t "! o! i*nori"ati$ Gao to vi&it! na kraju "v!*a bit @ "a&ri vr!&no"t `<C op!racij! (u ovo "lu2aju +)$ Gako j! ovaj bit izlazni# :=3 n!0! "v!tl!ti$ Mo!t! prov!riti r!zultat 9unkcij! priti"kanj! pr!ki&a2a po tablici `<C op!racij!$ Pro*ra j! napi"an tako &a inicijalna vr!&no"t CarrW 9la*a n! a uticaja na nj!*ovo izvravanj!# pa nj!*ovo bri"anj! ov&! nij! pot!bno$ bitovi P<CT8 U po"l! rotacij! P<CT8 U po"l! `<C P<CT8 po"l! rotacij! 43210 00011 00110 00011 00101 01011
Gako j! ovaj pro*ra &at kao ilu"tracija kori0!nja in"trukcija n! a potr!b! za o*rani2!nj! "!tovanja bita K P<CT8 r!*i"tra$ - prak"i taj pin n! bi bio pov!zan# ili bi "! bit K I a"kiraoJ$ Pr!pravit! "a&a pro*ra - !"to napiit! xorwf andwf po "l!&!0! / P"RTA,% P"RTA,% A Izvri `<C na& P<CT8 i U A Izvri 8'3 na& P<CT8 i U
Pro*ra ra&i i"to to i ranij!# " to razliko to u !"to `<C pri !njuj! 8'3 op!raciju$ Priti"kanj! pr!ki&a2a o!t! vi&!ti &a 0! :=3 "v!tl!ti j!&ino ukoliko "u oba pr!ki&a2a (T1 i T@) zatvor!na (na oba ulaza &ov!&!na lo*i2ka j!&inica)$ -koliko u pro*ra u za !nit! in"trukciju 8'3UF in"trukcijo I<CUF o!t! i"probati ra& ov! op!racij!$ :=31 0! "v!tl!ti ukoliko j! uklju2!n bar j!&an pr!ki&a2$ 8 ukoliko upotr!bit! C<MF in"trukciju# :=3 0! "v!tl!ti "uprotno o& "tanja pr!ki&a2a T1 i*noriu0i "tanj! pr!ki&a2a T@$ 3o "a&a "t! nau2ili @@ o& KF in"trukcija$ .!"tita o$ To j! vi! o& polovin!$
KY
-koliko va j! potr!bna inkr! !ntacija &o v!0i; vr!&no"ti o!t! &!t!ktovati "tanj! Z!ro 9la*a# i on&a pokr!nuti "l!&!0i r!*i"tar za inkr! !ntaciju$ Ili za jo v!0! broj!v! o!t! kao u pri !ru "a prazno p!tljo "taviti p!tlju unutar p!tlj!$ In"trukcija "uprotna ovoj j! 3=CF 9#& (!n*$ De5r! !nt /)$ <va in"trukcija " anjuj! vr!&no"t r!*i"tra 9 za 1# o&no"no &!kr! !ntuj! *a$ Sintak"a joj j! i"ta kao ko& I'CF in"trukcij!$ - "lu2aju &a broja2 &o%! &o + &!"i0! "! "l!&!0!/ 5itovi 76543210 00000001 00000000 11111111 11111110 ST8T-S Z!ro 9la* 0 1 0 0
3va "p!cijalna oblika ovi; in"trukcija "u/ 3=CFSZ 9#& koju "t! v!0 nau2ili u praznoj p!tlji i I'CFSZ 9#& (I'5r! !nt /# Skip i9 1!ro) koja pov!0ava "a&raj r!*i"tra 9 za 1 po i"to principu kao I'CF in"trukcija# i koja pr!"ka2! "l!&!0u in"trukciju u "lu2aju &a j! r!zultat op!racij! j!&nak +$ Poc incfsz 0x0#,F goto Poc 'a"tavi o&av&! <v! in"trukcij! za razliku o& obi2ni; I'CF i 3=CF n! uti2u na Z!ro 9la*$ A Pov!0aj vr!&no"t u r!*i"tru +N+C za 1# A i vrati "! na po2!tak$ -koliko "! nakon pov!0anja A &obij! +# pr!"ko2i *oto in"trukciju i na"tavi &alj!$
4+
833 (!n*$ "ab!ri) op!racija "abira &va broja$ Po*l!&ajt! kako "! izvrava op!racija "abiranja u binarno ADD + + 1 1 + 1 + 1 + 1 1 1+ A(( 6 # 1 11001101 10111000 10000101 brojno .205 .184 .38B "i"t! u/
Priliko "abiranja &v! lo*i2k! 1 javlja "! pr!no" u bit v!0! t!in!$ -koliko ni MS5 nij! &ovoljan za pr!no"# "!tova0! "! CarrW 9la*$
Go& ovakvi; "lu2aj!va bit pr!kora2!nja " !ta "! u CarrW 9la*$ -koliko j! potr!bno "abirati broj!v! 2iji zbir o! biti v!0i o& @FF# CarrW 9la* ora "! uz!ti u obzir pri pr!no"u u bajt v!0! t!in!$ - in"trukcija a za PIC op!racija "abiranja i a &va oblika/ 833:U k "abira "a&raj U r!*i"tra i kon"tantn! vr!&no"ti k$ C!zultat 0! "! na0i u U r!*i"tru$ 833UF 9#& "abira "a&raj U r!*i"tra i r!*i"tra 9$ Sa & "! o&r!%uj! *&! 0! "! na0i r!zultat$ 8rit !ti2k! op!racij! "abiranja (i o&uzi anja) por!& CarrW i Z!ro 9la*a uti2u jo i na tzv$ 3C 9la* (!n*$ Di*it CarrW)# o&no"no bit 1 ST8T-S r!*i"tra$ <n 0! biti "!tovan pri pr!kora2!nju &onj!* 2!tvorobitno* &!la bajta (tzv$ nibla)$ M!nja "! po i"to principu kao i CarrW 9la*$ # (# A(( 6 1 1 1111 1111 0000 0001 0000 0000 A(( 6 # (# 0000 1111 0000 0001 0 1 0001 0000
3!lj!nj! bajta na niblov! i a " i"la ukoliko j! potr!bno j!&ni niblo prikazivati j!&nu ci9ru# a &ru*i &ru*u (npr u &i*italno 2a"ovniku za inut! *ornji nibl o& + &o F# a &onji o& + &o Y)$ -v!0anj! "a o *ornj!* nibla r!ava "! "abiranj! "a bQ+++1++++Q$
41
Gao to vi&it!# ovako po"toji "a o j!&no"truko pr!&"tavljanj! broja +$ Takav po"tupak naziva "! &ru*i ko pl! !nt ili ko pl! !nt &vojk!$ Ca2unanj! &ru*o* ko pl! !nta broja comf BR"$,F incf BR"$,F o! "! izvriti "l!&!0i al*orit o /
Cu2no pr!tvaranj! pozitivni; u n!*ativn! broj!v! najlak! o!t! izvriti ra2unaju0i &ru*i ko pl! !nt broja$ Ca2unanj! 0! va biti utoliko lak! ukoliko "! pri"!tit! obi2no* ko pl! !ntovanja (ili inv!rtovanja ako va j! tako lak!)$ 3ru*i ko pl! !nt pr!&"tavlja obi2an ko pl! !nt ko ! j! &o&at broj 1$ #"4 01011011 10010000 C 1 6 10100101 C.B1 D.B1
Gao to vi&it!# MS5 i a ulo*u znaka (+Bpozitivan# 1Bn!*ativan)$ Za prikazivanj! r!zultata o"taj! va jo P bitova# tako &a "! unutar o" obitno* bajta o*u na0i pozitivni (+ &o 1@P) i n!*ativni (B1 &o B1@8) broj!vi$ <vakvi broj!vi nazivaju "! ozna2!ni # za razliku o& obi2ni; n!ozna2!ni; (+B@FF) broj!va$ Zato j! bitno unapr!& o&r!&iti &a li 0!t! ra&iti "a ozna2!ni ili n!ozna2!ni broj!vi a$ ?ranic! ozna2!ni; broj!va n! " !ju "! pr!kora2iti# j!r PIC n! pravi razliku iz !%u ozna2!ni; i n!ozna2!ni; broj!va# pa o! &o0i &o n!ta2no* r!zultata op!racij!$ <p!racija "uprotna "abiranju j! S-5 (!n*$ S3b"tract) Io&uz iJ$ <&uzi anj! "! unutar ikrokontrol!ra izvrava upravo "abiranj! prvo* broja "a ko pl! !nto &vojk! &ru*o* broja$ Za razliku o& "abiranja# ko& ko*a "! CarrW 9la* "!tuj! pri pr!kora2!nju# ko& o&uzi anja j! pri !nj!na n!*ativna lo*ika# tako &a j! CarrW 9la* "!tovan ukoliko n! a pr!kora2!nja (ta2nij! pozaj ic!)$ Zna2i ko& o&uzi anja anj!* broja o& v!0!* (i u "lu2aju &a "u broj!vi j!&naki)# CarrW 9la* 0! biti "!tovan$ 'j!*ovo "tanj! "! ta&a tr!ba i*nori"ati$ Po*l!&ajt! to na "l!&!0! pri !ru/ 1++BFF$ 4@
# 1
C.55 D.55
00110111 11001001
Go& o&uzi anja v!0!* o& anj!* broja# priliko "abiranja "a ko pl! !nto &vojk! n! a pr!kora2!nja# pa "! CarrW 9la* n! "!tuj!$ Po*l!&ajt! to na pri !ru/ F6B8P$ C.56 C(D.87) 6 D.31 # 0 00111000 10101001 11100001 C.87 D.87 01010111 10101001
T!"tiranj! MS5 o!t! utvr&iti &a li j! ozna2!ni r!zultat pozitivan ili n!*ativan# a t!"tiranj! Z!ro 9la*a &a li j! r!zultat +$ I"to kao i "abiranj!# i in"trukcija za o&uzi anj! o! "! javiti u &va oblika$ S-5:U k o&uzi a "a&raj U r!*i"tra o& kon"tantn! vr!&no"ti k$ C!zultat 0! "! na0i u U r!*i"tru$ S-5UF 9#& o&uzi a "a&raj U r!*i"tra o& r!*i"tra 9$ Sa & "! o&r!%uj! *&! 0! "! na0i r!zultat$ -koliko >a j! o&uzi anj! i t!"tiranj! CarrW 9la*a naporno# ura&it! i"to to i ikrokontrol!r$ Sab!rit! j!&an broj "a &ru*i ko pl! !nto &vojk! &ru*o* broja$ -koliko "! rotacijo izvrava no!nj! ili &!lj!nj! "a @ na& ozna2!ni broj!vi a# obav!zno "! ora obratiti panja na MS5# j!r on ozna2ava pripa&no"t pozitivni # o&no"no n!*ativni broj!vi a$ - prak"i "! r!tko ka&a "r!0! potr!ba za pri !no ozna2!ni; broj!va$ Skoro "v! op!racij! izvravaju "! na& n!ozna2!ni broj!vi a$ <zna2!ni broj!vi o*li bi i ati pri !nu u 9unkciji ikrokontrol!ra kao t!r o !tra# ka&a j! potr!bno iz !riti i prikazati t! p!ratur! izna& i i"po& nul!$
4K
Go& ikrokontrol!ra n! a I"ivo*J "tanja$ Stanj! na nj!*ovo pinu ora biti ili crv!no ili b!lo (navija za Zv!z&u)$ -koliko "! ulazno pinu ikrokontrol!ra &ov!&! ovako n!&!9ini"an napon# on o! pro2itati +# a o! i 1$ '! a pravila$ -koliko ulazni pin (u naj*or! o*u0! "lu2aju) nij! pov!zan na !k"t!rno kolo# napon na nj! u o! zao"cilovati# pa 2ak prouzrokovati unit!nj! ikrokontrol!ra$ - prak"i "! n!ka& javi "ituacija &a j! potr!bno na ikrokontrol!r &ov!"ti upravo ovakav I"iviJ napon$ - to "lu2aju po!ljno j! kori"titi uzlaz! "a itovi oki&a2! (!n*$ Sc; itt tri**!r)# ili i; &o&ati !k"t!rno (npr$ pr!ko P414 !"to"truko* inv!rtora)$ - PIC16F84 itov oki&a2 nalazi "! na C84 pinu$ 'a C5+ pinu nalazi "! "a o ka&a j! ovaj &!9ini"an kao izvor int!rapta (vi! o nji a ka"nij!)$ Go& ulaza "a itovi oki&a2! n! a n!&!9ini"ani; "tanja ulazno* pina$ Stanj! na pinu pro !ni0! "! t!k ka&a "! "i*nal &ovoljno priblii nj!*ovoj &!9ini"anoj obla"ti$ 8ko "! nakon to*a vrati ka "r!&njoj ("ivoj) obla"ti# ulaz 0! i &alj! javljati nj!*ovo po"l!&nj! "tabilno &!9ini"ano "tanj!$ >i! o ovo ! i at! na "ajtu ;ttp/MM!n$Rikip!&ia$or*MRikiMSc; ittLtri**!r$ <2i*l!&no j! &a 0! pri pov!zivanju ta"t!r pr!ki&a2a na ulaz! PIC16F84 ikrokontrol!ra biti potr!bno &a nj!*ovi ulazi bu&u u "vako tr!nutku na ta2no &!9ini"ano lo*i2ko nivou$ <vo "! ;ar&v!r"ki r!alizuj! PullBup (povu0i na*or!) ili PullB&oRn (povu0i na&ol!) otpornici a$ Pull up otpornik j! otpornik pov!zan iz !%u napona napajanja ikrokontrol!ra i ulazno* pina# pri 2! u "! ta"t!r pr!ki&a2 v!zuj! iz !%u pina i a"!$ Ga&a j! ta"t!r otput!n# pull up otpornik &ovo&i napon napajanja &ir!ktno na pin# po"tavljaju0i *a tako u "tanj! lo*i2k! j!&inic!# "v! &ok "! n! priti"n! ta"t!r$ 5!z nj!*a bi napon na pinu v!rovatno zaao u n!&!9ini"ano "tanj!$ <vaj otpornik n! tr!ba biti pr!vi! al! vr!&no"ti zbo* anj! potronj! "truj! pri priti"nuto ta"t!r pr!ki&a2u$ Pr!poru2!n! vr!&no"ti "u o& 4#Pk[ &o 1+k[$ 'a i"ti na2in na !lj!ni pin ikrokontrol!ra o! "! po"taviti pull &oRn otpornik pr! a a"i# ka&a bi "! pr!ki&a2 po"tavio pr! a naponu napajanja# to j! ilu"trovano u raniji ! a a$ >i! o pullBup otpornici a o!t! "aznati na ;ttp/MM!n$Rikip!&ia$or*MRikiMPullBupLr!"i"tor$ Po"tavljanj! !k"t!rni; pull up otpornika ko plikuj! izra&u ta pan! plo2ic!$ Sto*a "u na pinovi a P<CT5 r!*i"tra oni ;ar&v!r"ki i pl! !ntirani# a uklju2uju "! r!"!tovanj! bita P (Port , Pull Up) <PTI<'LC=? r!*i"tra$ Pri !0uj!t! &a j! ovo "uprotno o& ono*a to bi"t! o*li o2!kivati1 Zato "! takvi In!lo*i2niJ bitovi ozna2avaju "a crtico izna& nji; ili '<TL pr!&znako $ To ozna2ava &a j! lo*i2ka + nji;ovo aktivno "tanj!$ C!"!tovanj! '<TLC5P- bita pov!zuju "! int!rni otpornici ikrokontrol!ra na "vaki o& ulaza P<CT5 r!*i"tra pr! a naponu napajanja ikrokontrol!ra$ Int!rni otpornici "pajaju "! na "v! ulazn! pinov! porta 5$ Por!& t!# <PTI<'LC=? r!*i"tar i a i razn! &ru*! 9unkcij!# pa j! "to*a najprakti2nij! n! !njati "a&raj nj!*ovi; o"tali; bitova$ 7o j!&na "tvar vr!&na panj! j! !l!krto a*n!tna int!r9!r!ncija$ 3a bi "! zatitili o& nj!# po!ljno j! na "vaki pin pr! bilo kakvo* ;ar&v!ra pov!zati r!&ni otpornik$ 4F
46
A DDDDDD Inicijalizacija i i !novanj! DDDDDD 2-3& 5616F84 A 3!9ini! upotr!blj!ni ikrokontrol!r 7-+c2!de 8516F84.-+c9 A -bacuj! naziv! r!*i"tra u pro*ra ::#";FI' :#P:"FF < :%(T:"FF < :P%RT=:"; < :R#:"S# A Po&!ava kon9i*uracion! bitov!$ BR"$ e ! 0x0# A Pro !nljiva za broj koji "! prikazuj! (+N++B+N+Y) BR"$A# e ! 0x0( A 5roja2 za pauzu$ Inicijalno +NFF o)* 0x00 A DDDDDD Po&!avanj! porta DDDDDD bsf STATUS,RP0 A Pr!bacuj! pro*ra u 58'G1 movlw 0x01 A Gon9i*uri! pinov! tako &a "u C51 &o movwf TRISB A C5P izlazni# a &a j! C5+ ulazni$ clrf TRISA A Svi pinovi na P<CT8 "u izlazni$ bcf "PTI";:R=',;"T:RBPU A -klju2!ni int!rni Ipull upJ A otpornici na P<CT5 bcf STATUS,RP0 A >ra0a pro*ra u 58'G+ A DDDDDD Inicijalizacija DDDDDD I+- clrf BR"$ call (-35 A Po"tavljanj! na + A Prikaz broja na &i"pl!ju
4P
A DDDDDD T!"tiranj! pr!ki&a2a DDDDDD #e@1 btfss P"RTB,0 A T!"tiranj! otput!no"ti pr!ki&a2a goto #e@1 A 'ij! otput!n call P0! A 7!"t! otput!n$ Pozovi pauzu$ btfss P"RTB,0 A 7o j!&no t!"tiranj! zbo* i uno"ti na goto #e@1 A !v!ntualna varni2!nja kontakta$ #e@2 btfsc P"RTB,0 A T!"tiranj! priti"nuto"ti pr!ki&a2a goto #e@2 A 'ij! priti"nut call P0! A 7!"t! priti"nut$ Pozovi pauzu$ btfsc P"RTB,0 A 7o j!&no t!"tiranj! zbo* i uno"ti na goto #e@2 A !v!ntualna varni2!nja kontakta$ A DDDDDD 5rojanj! DDDDDD movlw 0xF6 addwf BR"$,% btfsc STATUS,# goto I+incf BR"$,F call (-35 goto #e@1 A DDDDDD Potpro*ra (-35 call movwf return A $@46 u U ($@46H$YH$1 V "!tovan CarrW 9la*) A Sab!ri "a 5C<7# r!zultat u U A 3a li j! &olo &o pr!kora2!nja (CarrW 9la*)? A 7!"t!# r!"!tuj broja2 A 'ij!# uv!0aj broja2# A prikai r!zultat i$ A na"tavi "a t!"tiranj! i brojanj!
za prikaz na :=3 &i"pl!ju DDDDDD T0b2 A <brazac za prikaz u U P"RTB A Prikai na &i"pl!ju A Povratak iz potpro*ra a
A DDDDDD Tab!la DDDDDD T0b2 movf BR"$,% A - pro !nljivoj 5C<7 nalazi "! vr!&no"t o& addwf P#E,F A $+ &o $Y$ Ta vr!&no"t "! &o&aj! na PC:$ retlw b'01111110' A <brazac za crtanj! ci9r! + B 0 retlw b'00001100' A <brazac za crtanj! ci9r! 1 B 1 retlw b'10110110' A <brazac za crtanj! ci9r! @ B 2 retlw b'10011110' A <brazac za crtanj! ci9r! K B 3 retlw b'11001100' A <brazac za crtanj! ci9r! 4 B 4 retlw b'11011010' A <brazac za crtanj! ci9r! F B 5 retlw b'11111010' A <brazac za crtanj! ci9r! 6 B 6 retlw b'00001110' A <brazac za crtanj! ci9r! P B 7 retlw b'11111110' A <brazac za crtanj! ci9r! 8 B 8 retlw b'11011110' A <brazac za crtanj! ci9r! Y B 9 A DDDDDD Pauza DDDDDD P0! decfsz BR"$A#,F goto P0! return A DDDDDD Graj pro*ra a DDDDDD e+d A Pauza zbo* &!bouncin* A rutin! A Povratak iz potpro*ra a A Graj pro*ra a$
48
3upli t!"tiranj! priti"nuto"ti ta"t!r pr!ki&a2a "a pauzo iz !%u t!"tiranja r!alizovana j! &!bouncin* rutina$ T!"tiranj! na otput!no"t# a zati na priti"nuto"t "pr!2ava na"tavak brojanja ukoliko "! pr!ki&a2 n!pr!ki&no &ri priti"nut# i o o*u0ava pro !nu "tanja priliko priti"ka# a n! priliko otpu"ta ta"t!ra$ T!"tiranj! pr!kora2!nja r!alizovano j! "abiranj! vr!&no"ti "a broj! @46 i t!"tiranj! CarrW 9la*a$ Za vr!&no"ti o& + &o Y "abran! "a $@4Y CarrW 9la* n!0! biti "!tovan# ali ;o0! za vr!&no"ti v!0! o& nji; ($1+)$ <n! 0! prouzrokovati ponovnu inicijalizaciju broja2a# i ciklu" brojanja 0! ponovo po2!ti o& +$ Prikaz &!ka&no* broja r!alizovan j! &ir!ktni &ovo%!nj! napona na poj!&in! "!* !nt! :=3 &i"pl!ja$ <vi "!* !nti "u na :=3 &i"pl!ju ozna2!ni "u "lovi a a# b# c# &# !# 9 i *$ S!* !nt &p (!n*$ d!ci al %oint) I&!ci alna ta2kaJ ov&! nij! i"kori0!n$ Iako j! pro*ra j! napravlj!n za ra& "a &i"pl!j! "a zaj!&ni2ko kato&o # o! o! "! pr!praviti za ra& "a &i"pl!j! "a zaj!&ni2ko ano&o pr!pravko tab!l! na taj na2in to "! "vi bitovi u tab!li (:S5 n! a uticaja na ra& pro*ra a j!r j! pin C5+ pov!zan na ta"t!r) inv!rtuju/ retlw retlw retlw b'01111110' b'00001100' b'10110110' A + pro !niti u b'10000001' A 1 pro !niti u b'11110011' A @ pro !niti u b'01001001'
- to "lu2aju potr!bno j! pr!praviti !l!ktri2nu ! u tako &a "! zaj!&ni2ka ano&a pov!! na HF>$ - potpro*ra u za prikaz potpro*ra a iz prvo*$ o!t! vi&!ti kla"i2an pri !r pozivanja &ru*o* "! o*u br! uno"iti
MP:85 a"! bl!r i a &ir!ktivu 3T (!n*$ D!9in! Tabl!) kojo !lj!n! vr!&no"ti u tab!lu$ 'j!n oblik j! "l!&!0i/
addwf P#E,F A Sab!ri "a PC: d& d'10', d'18', d'0', d'253', d'84', d'5' A >r!&no"ti Iako na prvi po*l!& &!luj! &a "! na ovaj na2in t!&i ! orija ikrokontrol!ra# to nij! "lu2aj$ 8"! bl!r 0! &t &ir!ktivo nar!&n! ! orij"k! lokacij! napuniti r!tlR in"trukcija a koj! "a&r! vr!&no"ti nav!&!n! iza &ir!ktiv!$ Pri to ! "! o*u pri !njivati "vi na2ini ozna2avanja broj!va (&!ci alni# ;!k"a&!ci alni$$$)$ <va po*o&no"t najvi! &olazi &o izraaja pri upi"ivanju 8SCII karakt!ra/ addwf P#E,F A Sab!ri "a PC: d& FP)ob0 -35-30 &e@3&0F A 8SCII karakt!ri u tab!li - ra&u "a tab!la a orat! obratiti panju na &v! "tvari$
1$ Morat! biti "i*urni &a j! broj koji "abirat! "a PC: u ta2no o&r!%!ni *ranica a$ - "lu2aju pr!kora2!nja izvravanj! pro*ra a 0! "! na"taviti "a "lu2ajn! ! orij"k! a&r!"! to 0! prouzrokovati n!pravilan ra& ili bloka&u pro*ra a$
4Y
@$ Gako j! PC trina!"tobitni r!*i"tar 2iji &onji &!o (+B@FF) j! u PC:# a *ornji (a@FF) u bitovi a +BF PC:8T,# potr!bno j! o"i*urati &a tab!la n! iza%! iz bloka o& @F6 bajtova$ Go& pro*ra a nav!&!no* kao pri !r# to nij! probl! # j!r j! on ionako &u* "a o 4K bajta$ -koliko j! n!op;o&no kori"titi tab!l! "a v!0o koli2ino po&ataka# r!!nj! bi o*lo biti u po"tavljanju vi! tab!la$ >!li2inu bloka najj!&no"tavnij! o!t! prov!riti brojanj! upotr!blj!ni; in"trukcija (b!z &ir!ktiva)# ili analizo $l"t 9ajla *!n!ri"ano* priliko a"! bliranja$ Za po"tavljanj! po2!tka tab!l! na !lj!no !"to (po2!tak bloka) o!t! kori"titi <C? &ir!ktivu$ - !"to tab!l! o*u0! j! napraviti "kok na prora2unat! ! orij"k! lokacij! a&&R9 PC:#F in"trukcijo # pri 2! u "! a&r!"a na koju "! tr!ba "ko2iti 2uva u U r!*i"tru u obliku broja in"trukcija koj! "! tr!baju pr!"ko2iti &a bi "! &olo &o !lj!n!$ <*ran2!nja v!zana za tab!l! va! i u ovo "lu2aju$ 3a bi"t! i; pr!vazili# po*l!&ajt! 8'F48 "a ;ttp/MMRRR$ icroc;ip$co M$
F+
F1
-pa tit! &a "u ova vr! !na n!zavi"na o& takta o"cilatora ikrokontrol!ra$ Mi"lit! o ovi vr! !ni a kao "tvarni (!n*$ r!al ti !)# na"uprot taktu ikrokontrol!ra koji o!t! !njati 9izi2ko za !no par &!lova u o"cilatoru$ Pr!tpo"tavi o &a !lit! &a U3T r!"!tuj! PIC nakon pola "!kun&!$ 'ajblia "tan&ar&na vr!&no"t j! FP6 S# o&no"no +#FP6S# pa j! &ovoljno po"lati vr!&no"t b1+1 u <PTI<'LC=? r!*i"tar$ movlw movwf b'101' 0x81 A <vo j! +N+F A 8&r!"a <PTI<'LC=? r!*i"tra$
M!%uti nij! ba "v! tako j!&no"tavno$ Po inicijalizaciji PICBa po"t"kal!r j! pri&ru!n int!rno taj !ru ikrokontrol!ra (vi! o nj! u ka"nij!)$ To zna2i &a j! potr!bno pr!baciti *a na U3T$ Gako i int!rni i Ratc;&o* taj !r kori"t! i"t! bitov! <PTI<'LC=? r!*i"tra Microc;ip pr!poru2uj! "l!&!0u proc!&uru kako n! bi &olo &o n!;oti2no* r!"!ta PIC$ A DDDDDD Inicijalizacija i i !novanj! DDDDDD 2-3& 5616F84 A 3!9ini! upotr!blj!ni ikrokontrol!r 7-+c2!de 8516F84.-+c9 A -bacuj! naziv! r!*i"tra u pro*ra ::#";FI' :#P:"FF < :%(T:"FF < :P%RT=:"; < :R#:"S# o)* 0x00 A Po&!ava kon9i*uracion! bitov!$ A DDDDDD Po&!avanj! U3T DDDDDD D bsf STATUS,RP0 D movlw b'xx0x0111' D movwf "PTI";:R=' D bcf STATUS,RP0 clrf T4R0 bsf movlw movwf clrwdt movlw movwf bcf STATUS,RP0 b'xxxx1111' "PTI";:R=' b'xxxx1xxx' "PTI";:R=' STATUS,RP0 A <brii U3T A Izab!ri U3T# i po"tavi z!lj!ni o&no" A pr!"kal!ra NNN$ A Za +#FP6S to j! bQNNNN11+1Q A 58'G+ o*u "! izbaciti A 58'G1 A Izab!ri taj !r i pr!"kal!r razli2it o& +++ A 58'G+ A 5ri"anj! vr!&no"ti int!rno* taj !ra i A pr!"kal!ra O pri upi"u u taj !r# A 58'G1 A Izab!ri U3T# b!z !njanja o&no"a A pr!"kal!ra
- "lu2aju !lj!no* o&no"a razli2ito* o& 1/1 (vr!&no"t pr!"kal!ra +++) in"trukcij! ozna2!n! zv!z&ico $
>r!&no"ti u <PTI<'LC=? r!*i"tru l!vo o& pr!"kal!ra ozna2!n! "a N i aju "p!cijaln! 9unkcij! (poput uklju2!nja PullB-p otpornika) koj! 0!t! nau2iti u &!lu "a taj !ro i int!rapti a$ Iz to* razlo*a i ov&! ni"u &o&!lj!n! konkr!tn! vr!&no"ti$ Za "a&a j! &ovoljno &a znat! &a "! bito K <PTI<'LC=? r!*i"tra vri "!l!kcija taj !ra ko ! 0! biti pri&ru!n &!lit!lj po "l!&!0! / 1 O po"t"kal!r U3T + O pr!"kal!r int!rno* taj !ra$ F@
- pri !ru "t! nau2ili upotr!bu C:CU3T (!n*$ C$!ar .atc;do* "i !r) in"trukcij!$ 'akon nj!# T< bit (!n*$ Ti ! Out O i"t!klo vr! !) ST8T-S r!*i"tra bi0! iznova "!tovan# a na0i 0! "! u r!"!tovano "tanju j!&ino priliko U3T r!"!ta$ >i! o to ! nau2i0!t! u po*lavlju "a r!"!t 9unkcijo $ 2re%e "56r7a6a/1a "/ tru!0"1a Gao to "! "!0at!# PIC &!li takt o"cilatora "a 4$ <vo vr! ! naziva "! in"trukcij"ki ciklu"$ -koliko j! kao izvor takta upotr!blj!n kri"tal o& 4M,z# PIC 0! izvravati in"trukcij! brzino o& 4M,zM4V1M,z# o&no"no za j!&nu in"trukciju koja traj! 1 in"trukcij"ki ciklu" 0! u tr!bati 1ZS# &ok 0! u za in"trukciju koja traj! @ in"trukcij"ka ciklu"a tr!bati @ZS$ 'a2in &a zapa tit! broj in"trukcij"ki; ciklu"a za "v! in"trukcij! j! prili2no lak$ Pr!tpo"tavit! &a "v! in"trukcij! traju 1 in"trukcij"ki ciklu"$ 8li# ukoliko in"trukcija prouzrokuj! na"tavak pro*ra a "a n!k! &ru*! a&r!"! (pro !nj!n j! "a&raj PC)# on&a 0! ona trajati @ in"trukcij"ka ciklu"a$ 'a pri !r M<>UF in"trukcija traj! 1 in"trukcij"ki ciklu"# j!r "a o pr! !ta po&atak "a j!&no* na &ru*o !"to$ ?<T< in"trukcija traj! @ ciklu"a j!r prouzrokuj! &a PC "ko2i na n!ko &ru*o !"to u pro*ra u$ C=T-C' in"trukcija traj! @ ciklu"a# j!r "! PC vra0a na *lavni pro*ra $ M!%uti # po"toj! 4 in"trukcij! koj! o*u trajati 1 ili @ in"trukcij"ka ciklu"a$ To "u 3=CFSZ# I'CFSZ# 5TFSC i 5TFSS$ <n! 0! pr!"ko2iti "l!&!0u in"trukciju u "lu2aju &a j! o&r!%!ni u"lov i"punj!n i on&a 0! trajati @ ciklu"a$ -koliko taj u"lov nij! i"punj!n# izvri0! "! nar!&na in"trukcija kao &a "! nita nij! ni &!"ilo# i on&a 0! trajati 1 ciklu"$ Po*l!&ajt! "a&a "l!&!0i pro*ra $ movlw movwf decfsz goto e+d 0x02 BR"$A# BR"$A#,F Pe&
Pe&
Prva in"trukcija po"tavlja vr!&no"t +N+@ u U$ <vo n! prouzrokuj! !njanj! PC# pa ona traj! 1 in"trukcij"ki ciklu"$ Sl!&!0a in"trukcija j! "li2na$ <na tako%! n! !nja "tanj! PC# pa i ona traj! 1 ciklu"$ Sa&a 0! "l!&!0a in"trukcija izvriti prvo " anj!nj! r!*i"tra 5C<78C za 1 i r!zultat It!"ta na vr!&no"t +J V + pri&ruiti PC$ 'a ovaj na2in PC "! n! !nja# pa in"trukcija traj! 1 ciklu"$ Sl!&!0a in"trukcija j! ?<T<# i ona traj! @ ciklu"a$ <n&a "! ponovo vri " anj!nj! r!*i"tra 5C<78C za 1# ali kako j! "a&a r!zultat It!"ta na vr!&no"t +J V 1# PC 0! pro !niti "voju vr!&no"t na PCH1# to troi @ in"trukcij"ka ciklu"a$ Zna2i ovaj pro*ra zauz!0! ukupno P in"trukcij"ki; ciklu"a$ -z kri"tal o& 4M,z pro*ra 0! trajati 4M,z M 4takta V 1ZS po in"trukcij"ko >i&it! koliko zbunjuju0i 8*9t6er pr*-ra%at*ra S!0at! "! LLC<'FI? &ir!ktiv!? Za kori0!nj! U3T# on "! ora pr!ko nj! uklju2iti "a U3T <'$ 8 poto j! n!ki pro*ra atori i*noriu# potr!bno j! i unutar nji;ovo* "o9tv!ra po&!"iti kon9i*uracion! bitov!$ Po"tupak nji;ovo* po&!avanja razlikuj! "! o& pro*ra atora# &o pro*ra atora ("o9tv!ra)$ -*lavno "! trai nji;ov upi" n!po"r!&no pr! pro*ra iranja ikrokontrol!ra$ FK ciklu"u# to za P ciklu"a izno"i P D 1ZS V PZS$
Sl!&!0i pro*ra o na !rno "! &ozvoljava pr!kora2!nj! U3T$ 'j!*ov takt kori"ti "! za tr!ptanj! :=3$ Pri !0uj!t! &a j! :=3 pov!zana tako &a "v!tli pri &ovo%!nju lo*i2k! + na pin# a &a joj "! napon &ovo&i &ir!ktno "a napajanja1 To j! bolj! zbo* anj!* *r!janja i potronj!$ <"i to*a PIC por!& o*rani2!nja "truj! po poj!&ina2ni pinovi a (@+ 8) i a i o*rani2!nj! "truj! koju o! &ati c!o port (&o F+ 8 za P<CT8 i &o 1++ 8 za P<CT5)# kao i o*rani2!nj! ukupn! "truj! koju pri a i kojo o! napajati !k"t!rn! potroa2! (1F+ 8)$ PIC pri ovakvo pov!zivanju po&no"i &o @F 8 po pinu# &o 8+ 8 za P<CT8 i &o 1F+ 8 za P<CT5$ Za pin C84 ovo j! i j!&ino lo*i2ku 1$ o*u0! r!!nj!# j!r on na "vo izlazu n! o! &ati
A DDDDDD Inicijalizacija i i !novanj! DDDDDD 2-3& 5616F84 A 3!9ini! upotr!blj!ni ikrokontrol!r 7-+c2!de 8516F84.-+c9 A -bacuj! naziv! r!*i"tra u pro*ra ::#";FI' :#P:"FF < :%(T:"; < :P%RT=:"; < :R#:"S# A Po&!ava kon9i*uracion! bitov!$ o)* 0x00 A DDDDDD T!"t U3T r!"!ta DDDDDD btfss STATUS,T" goto Eed A DDDDDD Po&!avanj! porta DDDDDD bsf STATUS,RP0 clrf TRISA clrf TRISA clrf T4R0 A DDDDDD Po&!avanj! U3T DDDDDD bcf STATUS,RP0 clrf T4R0 bsf movlw movwf STATUS,RP0 b'10001111' "PTI";:R=' F4 A T!"tiraj "tanj! T< bita A C!"!tovan j!# zna2i U3T r!"!t A Pr!bacuj! pro*ra u 58'G1 A Svi pinovi A "u izlazni$ A 5ri"anj! vr!&no"ti int!rno* taj !ra i A pr!"kal!ra O pri upi"u u taj !r# A >ra0a pro*ra u 58'G+ A 5ri"anj! vr!&no"ti int!rno* taj !ra i A pr!"kal!ra O pri upi"u u taj !r# A Pr!bacuj! pro*ra u 58'G1 A I"klju2i PullBup otpornik! i A izab!ri U3T# "a ak"i alni A vr! !no pr!"kal!ra
A <brii U3T A Izab!ri U3T# i po"tavi o&no" A pr!"kal!ra o& 1#1S A 58'G+
A DDDDDD Inicijalizacija U i prvo pr!kora2!nj! U3T DDDDDD clrw A <brii U Pe& goto Pe& A Mrtva p!tlja$ >rti "! ov&! &o A prvo* U3T r!"!ta A DDDDDD 'ar!&na pr!kora2!nja U3T DDDDDD Eed xorlw b'00000100' A Iz !ni "tanj! bita @ u U movwf P"RTA A Pr!baci "tanj! iz U u P<CT8 P!t@ goto Pe&2 A Mrtva p!tlja$ >rti "! ov&! &o A "l!&!0!* U3T r!"!ta A DDDDDD Graj pro*ra a DDDDDD e+d A Graj pro*ra a$ 'akon po2!tn! inicijalizacij! pro*ra 0! "! vrt!ti u prvoj rtvoj p!tlji$ Gako u njoj n! a C:CU3T in"trukcij!# nakon 1#1S na"tupi0! U3T r!"!t$ Po r!"!tu pro*ra 0! "! izvriti o& po2!tka# ali 0! &!o "a t!"tiranj! T< bita &!t!ktovati j! li na"tupio U3T r!"!t ili n!# i ukoliko j!"t! &alj! izvravanj! pro*ra a na"tavi0! "! o& lab!l! :!& *&! 0! "! iz !niti "tanj! C8@ pina$ '!"tabilno"t U3T o"cilatora u"l!& pro !n! t! p!ratur! o! biti !9!ktno i"kori0!na za !r!nj! t! p!ratur! ikrokontrol!ra ("a i ti i "poljn! t! p!ratur!) b!z ikakvi; !k"t!rni; "!nzora$ Za &!talj! po*l!&ajt! 8'8@8$
FF
19. T (&er
- "lu2aju &a pi!t! pro*ra koji ora i ati v!liku ali ta2no &!9ini"anu pauzu "i*urno va "! n!0! "vi&!ti o*u0no"t po"tavljanja j!&n! p!tlj! unutar &ru*! i prora2unavanja broja ciklu"a za !lj!nu &uinu pauz!$ Po"toji !l!*antniji na2in r!avanja ovo* probl! a$ PIC16F84 i a u "!bi int!*ri"an taj !r$ I pul"i ovo* taj !ra o*u biti "in;ronizovan "a takto izvravanja in"trukcija ikrokontrol!ra ili "a takto !k"t!rno* o"cilatora 2iji i pul"i "! &ovo&! na pin K (C84MT+CGI)$ ?lavna 9unkcija taj !ra j! brojanj! ($+B$@FF) koj! j! za razliku o& U3T "in;ronizovano "a ovi takto $ - tr!nutku pr!kora2!nja ak"i aln! vr!&no"ti# 9la* taj !ra "! "!tuj!# i ciklu" brojanja op!t po2inj! o& nul!$ Pr!&no"t taj !ra na& obi2no p!tljo za kanj!nj! j! u 2inj!nici &a j! brojanj! int!rni proc!" ikrokontrol!ra# i &a ni na koji na2in n! uti2! na brzinu izvravanja *lavno* pro*ra a$ 3ovoljno j! povr! !no prov!riti "tanj! 9la*a taj !ra# kako bi pro*ra znao &a j! ciklu" brojanja zavr!n$ Gako na ovaj na2in nij! kori"titi pr!"kal!r$ o*u0! &obiti v!0! p!rio&!# taj !r i"to kao i U3T o!
5u&u0i &a "! za kori0!nj! i U3T i int!rno* taj !ra pr!t!no vri anipulacija na& <PTI<'LC=? r!*i"tro # vr! ! j! &a "! bli! upoznat! "a nj!*ovo unutranjo "trukturo $ b-&7 RBPU
I;T=('
T0#S
T0S=
PSA
PS2
PS1
b-&0 PS0
'<TLC5P- (!n*$ Port , Pull Up) bit <PTI<'LC=? r!*i"tra "lui za pov!zivanj! int!rni; otpornika P<CT5 r!*i"tra na napon napajanja$ -potr!bu I'T=3? (!n*$ I'"!rrupt edg!) bita nau2i0!t! u "l!&!0! po*lavlju$
T+CS (!n*$ Ti !r: Clock S!l!ct) bit o o*u0ava izbor takta taj !ra$ -koliko j! r!"!tovan# brojanj! 0! "! o&vijati "in;ronizovano "a takto izvravanja in"trukcija koji j! 2!tiri puta anji o& takta o"cilatora$ <vaj takt "! o! &obiti "a C:G<-T pina ikrokontrol!ra$ -koliko j! T+CS bit "!tovan# brojanj! 0! biti "in;ronizovano "a !k"t!rni takto koji "! tr!ba &ov!"ti na pin K (C84MT+CGI)$
T+S= (!n*$ Ti !r: Sourc! E&*!) bit i a " i"la j!&ino pri upotr!bi !k"t!rno* takta$ 'ji ! "! bira ;o0! li "! brojanj! vriti pri pr!la"ku "a lo*i2k! + na 1 (r!"!tovan T+S=) ili "a lo*i2k! 1 na + ("!tovan T+S=)$ PS8 (!n*$ Pr!!call!r A""i* !nt) bit "! kori"ti za "!l!kciju pri&ru!no"ti pr!"kal!ra$ -koliko j! "!tovan# po"t"kal!r 0! biti pri&ru!n U3T# a ukoliko j! r!"!tovan pr!"kal!r 0! biti pri&ru!n taj !ru$ 5itovi a PS+ &o PS@ bira "! o&no" &!lj!nja pr!"kal!ra po "l!&!0oj tablici$
F6
B"t 24 14 0 +# +# + +# +# 1 +# 1# + +# 1# 1 1# +# + 1# +# 1 1# +# 1 1# 1# 1
T(R0 *#/* 1/@ 1/4 1/8 1/16 1/K@ 1/64 1/1@8 1/@F6
3DT *#/* 1/1 1/@ 1/4 1/8 1/16 1/K@ 1/64 1/1@8
Pri !0uj!t! &a "! i ov&! po inj! U3T o&no"$ <n j! tu j!r "! o&no" taj !ra o& 1/1 o! &obiti j!&ino pri&ruivanj! pr!"kal!ra U3T# "!tovanj! PS8 bita$ Za takvo po&!avanj! pri !njuj! "! kT& opi"an u prolo po*lavlju "a in"trukcija a ozna2!ni zv!z&ica a$ 5u&u0i &a "! pri "a o pro*ra iranju PIC16F84 vri uklju2!nj! ili i"klju2!nj! U3T (po&!avanj! kon9i*uracioni; bitova)# n! o! "! &o0i u "ituaciju &a "! U3T "a uklju2i# i tako izazov! r!"!t ikrokontrol!ra# iako u j! pri&ru!n pr!"kal!r$
C!*i"tar taj !ra TMC+ (!n*$ Ti&!r:) nalazi "! na a&r!"i +N+1# a nj!*ov 9la* T+IF (!n*$ Ti !r: <v!r9loR Int!rrupt Fla*) nalazi "! u I'TC<' r!*i"tru$ >i! o ovo r!*i"tru nau2i0!t! u &!lu "a int!rapti a$ Sl!&i pro*ra koji ilu"tuj! upotr!bu taj !ra$ <n 0! in"trukcij"ki ciklu" pr!"kal!ro &!liti "a @F6# zati "o9tv!r"ki jo "a 6# a on&a 0! ;!k"a&!ci aln! broj!v! (+N++ &o +N+F) prikazivati na :=3 &i"pl!ju$ 3!lj!nj! "a &va "! kao to "! "!0at! o! r!alizovati rotacijo bitova unutar r!*i"tra$ - pro*ra u 0! biti upotr!blj!n ranij! ilu"trovani princip prikaza na :=3 &i"pl!ju$ A DDDDDD Inicijalizacija i i !novanj! DDDDDD 2-3& 5616F84 A 3!9ini! upotr!blj!ni ikrokontrol!r 7-+c2!de 8516F84.-+c9 A -bacuj! naziv! r!*i"tra u pro*ra ::#";FI' :#P:"FF < :%(T:"FF < :P%RT=:"; < :R#:"S# A Po&!ava kon9i*uracion! bitov! (ISP e ! 0x0# A Pro !nljiva za broj koji "! prikazuj! A na &i"pl!ju (+N++B+N+F) (=E e ! 0x0( A Pro !nljiva za rotaciju "R' 0x00 A 3!9ini! "tart pro*ra a A DDDDDD Inicijalizacija taj !ra i &i"pl!ja DDDDDD clrf T4R0 A Inicijalizacija taj !ra clrf I;T#"; A 5ri"anj! 9la*a taj !ra bsf STATUS,RP0 A Pr!lazak u 58'G1 clrf P"RTA A Po"tavlja "v! pinov! clrf TRISB A kao izlazn! movlw b'10000111' A Taj !r j! "in;ronizovan "a A in"trukcij"ki ciklu"o # i pr!"kal!r j! movwf "PTI";:R=' A po&!!n za o&no" 1/@F6 A Pull up otpornici "u i"klju2!ni bcf STATUS,RP0 A Povratak u 58'G+
FP
A DDDDDD Inicijalizacija broja2a DDDDDD I+- movlw 0x00 movwf (ISP movlw b'00100000' movwf (=E
A DDDDDD .!kanj! na pr!kora2!nj! taj !ra DDDDDD T0> bcf I;T#";,T0IF A C!"!tovanj! 9la*a taj !ra #e@ btfss I;T#";,T0IF A .!kanj! na "!tovanj! 9la*a taj !ra# goto #e@ A o&no"no pr!kora2!nj! taj !ra A DDDDDD 3!lj!nj! "a 6 DDDDDD rrf (=E btfss STATUS,# goto T0> A Cotiraj 3=: r!*i"tar na&!"no$ Ga&a "! CarrW A 9la* "!tuj!# na"tavi &alj!$ -koliko i &alj! nij! A "!tovan# 2!kaj na jo j!&an ciklu" taj !ra$
A DDDDDD Prikaz ci9r! na &i"pl!ju DDDDDD call T0b2 A -z i obrazac iz tab!l!# movwf P"RTB A i prikai ci9ru na &i"pl!ju$ A DDDDDD T!"tiranj! pr!kora2!nja vr!&no"ti ci9r! na &i"pl!ju DDDDDD movlw 0x01 A $1 u U addwf (ISP,F A Sab!ri 3ISP "a U$ C!zultat u 3ISP btfsc STATUS,(# A 3a li j! &olo &o pr!kora2!nja vr!&no"ti +N+F? goto I+A 7!"t!# po2ni brojanj! o& po2!tka (ci9r! +) goto T0> A 'ij!# na"tavi &alj! "a brojanj! $ A DDDDDD Tab!la DDDDDD T0b2 movf (ISP,% A - pro !nljivoj 3ISP nalazi "! vr!&no"t o& addwf P#E,F A +N++ &o +N+F$ Ta vr!&no"t "! &o&aj! na PC:$ retlw b'01111110' A <brazac za crtanj! ci9r! + B 0 retlw b'00001100' A <brazac za crtanj! ci9r! 1 B 1 retlw b'10110110' A <brazac za crtanj! ci9r! @ B 2 retlw b'10011110' A <brazac za crtanj! ci9r! K B 3 retlw b'11001100' A <brazac za crtanj! ci9r! 4 B 4 retlw b'11011010' A <brazac za crtanj! ci9r! F B 5 retlw b'11111010' A <brazac za crtanj! ci9r! 6 B 6 retlw b'00001110' A <brazac za crtanj! ci9r! P B 7 retlw b'11111110' A <brazac za crtanj! ci9r! 8 B 8 retlw b'11011110' A <brazac za crtanj! ci9r! Y B 9 retlw b'11101110' A <brazac za crtanj! ci9r! 8B A retlw b'11111000' A <brazac za crtanj! ci9r! 5 B B retlw b'01110010' A <brazac za crtanj! ci9r! C B C retlw b'10111100' A <brazac za crtanj! ci9r! 3 B D retlw b'11110010' A <brazac za crtanj! ci9r! = B E retlw b'11100010' A <brazac za crtanj! ci9r! F B F A DDDDDD Graj pro*ra a DDDDDD !n& A Graj pro*ra a F8
Mo&a >a iz*l!&a 2u&no upotr!ba "abiranja u !"to inkr! !ntovanja r!*i"tra 3ISP$ Svakako &a "! nj!*ovo uv!0anj! o*lo izvriti i inkr! !ntacijo # ali na ovaj na2in lak! j! nakon pov!0anja t!"tirati nj!*ovo pr!kora2!nj!$ 7!&ino in"trukcij! "abiranja i o&uzi anja !njaju "tanj! 3C 9la*a# i j!&ino pri pr!kora2!nji a &onji; niblova (ta2nij! vr!&no"ti +N+F &onj!* nibla)$ Za kra0! p!rio&! o*u0! j! nakon "vako* pr!kora2!nja po"taviti inicijalnu vr!&no"t taj !ra na npr$ $1++$ - to "lu2aju taj !r 0! brojati o& $1++ &o $@FF# ka&a 0! "! "!tovati nj!*ov 9la*$ I"to tako o*u0! j! pri !niti &ru*a2iji pri"tup# pa inicijalizovati TMC+ na $+# i t!"tirati *a na vr!&no"t npr$ $1++$ Pov!&it! ra2una o in"trukcija a koj! kori"tit! za po&!avanj! taj !ra# j!r 0! v!0ina in"trukcija 2ij! j! o&r!&it! TMC+ r!*i"tar obri"ati pr!"kal!r$
FY
-koliko !lit! kori"titi vi! !k"t!rni; izvora int!rapta# o!t! kori"titi pinov! C54 &o C5P$ <ni "! razlikuju o& C5+MI'T pina u to ! to "! int!rapt javlja pri pro !ni "tanja na pinovi a$ To zna2i &a 0! "! int!rapt javiti pri pr!la"ku "a lo*i2k! + na lo*i2ku 1# ali i "a lo*i2k! 1 na lo*i2ku +$ Po&!avanj! ovi; pinova za izvor! int!rapta vri "! "!tovanj! bita K I'TC<' r!*i"tra nazvano* C5I= (!n*$ Po rt , C;an*! Int!rrupt Enabl!) Iuklju2i int!rapt! pri pro !ni "tanja na portu 5J$ Gako "! ko& nji; int!rapt izvrava pri "vakoj pro !ni "tanja pinovi C54 &o C5P n! aju "voj bit za o&r!%ivanj! ivic! "i*nala pri kojoj 0! "! izazivati int!rapt$ '/terapt 9,aS!0at! li "! kako "! vri "!tovanj! CarrW 9la*a? Pri naila"ku na int!rapt na C5+MI'T pinu na "li2an na2in "! "!tuj! bit 1 (I'TF !n*$I'"!rrupt /la*)# o&no"no bit + (C5IF !n*$ Port , Int!rrupt /la*) pri int!raptu na C54 &o C5P pinovi a u I'TC<' r!*i"tru$ Ga&a int!rapta n! a# int!rapt 9la* j! r!"!tovan$ To j! c!la nj!*ova 9unkcija$ Sa&a "! v!rovatno pitat! kakva j! nji;ova "vr;a$ -koliko j! int!rapt 9la* "!tovan PIC n! o! i n!0! o&*ovarati na &ru*! int!rapt!$ Pr!tpo"tavi o &a j! izazvan int!rapt$ <&*ovaraju0i int!rapt 9la* 0! biti "!tovan# i ikrokontrol!r 0! izvriti potpro*ra za obra&u int!rapta$ -koliko int!rapt 9la* nij! "!tovan# PIC 0! pri;vatati nov! int!rapt! to o! &ov!"ti &o n!pr!"tano* vra0anja pro*ra a na po2!tak rutin! za obra&u int!rapta koja "! u"l!& to*a nika&a n! o! izvriti &o kraja$ -koliko "! "!tit! pri !ra "a obilni # to j! kao &a >a za vr! ! o&*ovora na SMS "ti*n! nova poruka i pr!kin! upi" o&*ovora$ 3al!ko j! prakti2nij! zavriti "a j!&no poruko # i on&a &ozvoliti prij! novi;$ Int!rapt 9la*ovi i aju jo j!&nu 9unkciju# a to j! o o*u0avanj! int!rapt rutini &!t!kciju izvora int!rapta (C5+MI'T pin o&no"no C54 &o C5P pinovi) u "lu2aju kori0!nja vi! izvora int!rapta$ Iako PIC auto at"ki "!tuj! int!rapt 9la*ov! pri naila"ku int!rapta# on i; n! r!"!tuj! pri povratku iz rutin! za obra&u int!rapta$ <vaj po"ao ora pro*ra !r "a izvriti ("i*uran "a &a v!0 znat! kako)# i tr!ba "! o&ra&iti nakon zavr!tka rutin! za obra&u int!rapta# a n!po"r!&no pr! izla"ka iz nj!$
8tart " "/terapt 6e!t*r pr*-ra% !e %e%*r"1e - tr!nutku &ovo%!nja napona napajanja ili priliko r!"!ta# pro*ra "ki broja2 (PC) pokazuj! na a&r!"u +N++# na po2!tak pro*ra "k! ! orij!$ M!%uti # pri pojavi int!rapta PC 0! a&r!"u "l!&!0! in"trukcij! "taviti na "t!k# i "ko2i0! na a&r!"u +N+4$ 3akl!# ka&a pi!t! pro*ra ! koji 0! kori"titi int!rapt!# pr! "v!*a tr!bat! r!0i ikrokontrol!ru &a pr!"ko2i pr!ko a&r!"! +N+4# i za&ri int!rapt rutinu koja po2inj! na a&r!"i +N+4 o&voj!nu o& o"tatka pro*ra a$ <vo "! v!o a lako i pl! !ntira$ 'ajpr! j! potr!bno &a pro*ra "tan&ar&no zapo2n! &ir!ktivo <C? +N++$ 3alj! j! potr!bno pr!"ko2iti pr!ko a&r!"! +N+4$ <vo "! ra&i po"tavljanj! ?<T< in"trukcij!# nakon koj! "l!&i lab!la pozicionirana za "tart *lavno* pro*ra a$ 'akon ov! *oto in"trukcij! "l!&i jo j!&na <C? &ir!ktiva# ovo*a puta "a a&r!"o +N+4# a nakon nj! rutina za obra&u int!rapta$ 'a kraju pro*ra a za obra&u int!rapta potr!bno j! "taviti C=TFI= (!n*$ Re"urn /ro #nterrupt) in"trukciju$ <va in"trukcija ozna2ava povratak iz int!rapt rutin!$ Ga&a PIC nai%! na ovu in"trukciju PC uzi a "a "t!ka lokaciju na kojoj j! PIC bio pr! n!*o to "! pojavio int!rapt$ Sl!&i &!o kT&a koji ilu"truj! nav!&!no$ o)* 0x00 goto 40-+ o)* 0x04 / / / / / / retfie 40-+ A PIC po2inj! o&av&! pri uklju2!nju i r!"!tu A I&i na *lavni pro*ra A PIC &olazi ov&! pri pojavi int!rapta A <v&! "! nalazi rutina za obra&u int!rapta koju A PIC izvrava j!&ino pri naila"ku na int!rapt$ A 'a nj!no kraju potr!bno j! obri"ati o&*ovaraju0i A int!rapt 9la*$ A Zavr!tak rutin! za obra&u int!rapta A Po2!tak *lavno* pro*ra a kori0!nja int!rapta$
1$ -koliko kori"tit! i"ti r!*i"tar u *lavno pro*ra u i u rutini za obra&u int!rapta i ajt! u vi&u &a 0! "! "a&raj to* r!*i"tra v!rovatno pro !niti pri izvr!nju rutin! za obra&u int!rapta$ 'a pri !r# r!ci o &a kori"tit! U r!*i"tar &a bi"t! po"lali po&atak na P<CT8# i tako%! kori"tit! U r!*i"tar u rutini za obra&u int!rapta za n!ku &ru*u op!raciju$ -koliko n! pazit!# U r!*i"tar 0! pri povratku iz rutin! za obra&u int!rapta za&rati vr!&no"t koju j! i ao u int!rapt rutini# i pri povratku iz nj!# ovaj po&atak bi0! po"lat na P<CT8 u !"to vr!&no"ti koju j! U r!*i"tar i ao ranij!$ C!!nj! ovo*a j! privr! !no 2uvanj! vr!&no"ti U r!*i"tra u n!ko o& "lobo∋ r!*i"tara# i vra0anj! nj!*ov! "tar! vr!&no"ti po zavr!tku int!rapt rutin!$ I"to vai i za o"tal! r!*i"tr! (obi2no za ST8T-S) 2iji "a&raj "! !nja u int!rapt rutini$ @$ Potr!bno j! obratiti panju na ini alno vr! ! iz !%u &v! uza"topn! pojav! int!rapta$ -koliko "! za takt ikrokontrol!ra kori"ti kvarc o& 4M,z# PIC 0! izvravati in"trukcij! brzino o& 1ZS po in"trukciji$ <vo vr! ! naziva "! in"trukcij"ki ciklu"o $ - t!;ni2ko uput"tvu (!n*$ 3ata";!!t) za PIC 6@
K$
4$
F$
6$
P$
8$
nav!&!no j! &a "! tr!ba o"taviti naj anj! K &o 4 in"trukcij"ka ciklu"a (zna2i bar KB4ZS) iz !%u &v! uza"topn! pojav! int!rapta$ Cazlo* za j! vr! ! koj! j! potr!bno ikokontrol!ru za "kok na rutinu za obra&u int!rapta# "!tovanj! int!rapt 9la*a i povratak iz potpro*ra a za obra&u int!rapta$ I ajt! ovo na u u ukoliko kori"tit! !k"t!rn! izvor! int!rapta$ 'a kraju int!rapt rutin! bit ?I= I'TC<' r!*i"tra "! auto at"ki "!tuj!$ 8uto at"ko "!tovanj! ?I= bita o! &a bu&! i n!&o"tatak u j!&no "lu2aju# tj$ o*u0! j! &a in"trukcija za r!"!tovanj! ovo* bita (zabranu "vi; int!rapta) u *lavno pro*ra u uopt! n! bu&! izvr!na$ 'ai !# ukoliko int!rapt na"tupi u tr!nutku izvravanja in"trukcij! koja r!"!tuj! ?I= bit# prvo 0! ta in"trukcija biti zavr!na &o kraja (r!"!tova0! "! ?I= bit)# a zati 0! po2!ti izvravanj! int!rapt rutin! koja 0! na "vo kraju &a auto at"ki "!tuj! bit ?I=$ Tako 0! ?I= bit biti "!tovan iako j! n!po"r!&no pr! int!rapta bio r!"!tovan$ 3a bi "! zatitili o& ov! "ituacij!# Microc;ip pr!poru2uj! &a "! nakon r!"!tovanja ?I= bita prov!ri &a li j! bit zai"ta r!"!tovan i &a "!# ukoliko nij!# op!racija ponovi$ S!0at! "! &a "! bitovi 4 &o P na P<CT5 r!*i"tru o*u kori"titi kao izvori int!rapta$ '! o!t! izabrati poj!&ina2n! pinov! na P<CT5 za int!rapt!$ 3akl!# ukoliko uklju2it! ov! pinov!# "vi po"taju &o"tupni$ - 2! u j! "vr;a kori0!nja 4 bita kao izvora int!rapta? Pri !r o! biti ku0ni alar # 2ija 4 "!nzora "u pov!zana na pinov! na P<CT5 r!*i"tru$ 5ilo koji "!nzor o! okinuti PIC za uklju2!nj! alar a# a rutina za alar j! rutina za obra&u int!rapta$ <vo t!&i n!pr!ki&no t!"tiranj! portova# i ra"t!r!0uj! ikrokontrol!r za &ru*! na !n!$ 'aalo"t nji;ovi int!rapt 9la*o (C5IF I'TC<' r!*i"tra) nij! o*u0! izvriti &!t!kciju int!rapta na poj!&ina2ni pinovi a# v!0 j!&ino na "vi $ - "lu2aju kori0!nja vi! izvora int!rapta o*u0! j! &a "! za vr! ! int!rapt rutin! izazvan! C5+MI'T pino pojavi i int!rapt na bitovi a 4BP P<CT5 r!*i"tra$ Sto*a j! potr!bno u "a oj int!rapt rutini t!"tirati prvi int!rapt 9la*# u zavi"no"ti o& n!*ovo* "tanja oti0i na rutinu za nj!*ovu obra&u# i ta o r!"!tovati "a o taj int!rapt 9la*$ <& a; nakon povratka iz potpro*ra a za obra&u int!rapta# izvri0! "! int!rapt izazvan &ru*i izvoro $ Int!rapt 9la*ovi "!tuju "! b!z obzira na "tanj! ?I= bita# kao i poj!&ina2ni; &ozvola za int!rapt! (kao u pro*ra u "a taj !ro )$ To o! biti i"kori0!no za &!t!kciju nji;ovi; "tanja iz "a o* pro*ra a b!z kori0!nja int!rapta$ 'aravno# o&*ovaraju0i int!rapt 9la* j! kao i ko& int!rapta potr!bno ru2no r!"!tovati nakon &!t!kcij!$ 5u&it! opr!zni priliko kori0!nja potpro*ra a unutar int!rapt rutin!$ -koliko j! u *lavno pro*ra u "t!k "koro pun (a bi0! pri pozivanju potpro*ra a iz potpro*ra a)# jo par takvi; pozivanja unutar int!rapt rutin! "i*urno 0! izazvati nj!*ovo pr!kora2!nj!$ -v!k uz it! u obzir naj*oru o*u0u varijantu# tj$ &a "! int!rapt rutina javlja ba priliko izvravanja potpro*ra a najv!0! &ubin!$ '! pozivajt! iz rutin! za obra&u int!rapta potpro*ra ! koj! v!0 pozivat! iz *lavno* pro*ra a$ -koliko j! to n!op;o&no# priliko ula"ka u int!rapt rutinu "ni it! "a&raj "vi; r!*i"tara o&i9ikovani; u potpro*ra u# i vratit! i; natra* priliko izla"ka iz int!rapt rutin!$ po*lavlju vi&!0!t! pro*ra koji kori"ti int!rapt!$
- "l!&!0!
6K
'ajpr! "! ikrokontrol!r tr!ba po&!"iti tako &a pri izvravanju pro*ra a pr!"ko2i &!o na koji PC "ka2! pri pojavi int!rapta$ o)* goto o)* A A A retfie 40-+ 0x00 40-+ 0x04 A <v&! PC &olazi pri uklju2!nju i r!"!tu A <&lazak na *lavni pro*ra A <v&! 0! po2!ti rutina za obra&u int!rapta A Cutina za obra&u int!rapta$ -pi"a0! "! ka"nij! A <va in"trukcija ozna2ava kraj rutin! za obra&u A int!rapta# i vra0a PC na *lavni pro*ra $ A Po2!tak *lavno* pro*ra a
<n&a j! potr!bno po&!"iti PIC za kori0!nj! int!rapta na pinu 6/ bsf bsf I;T#";,'I= I;T#";,I;T= A ?lobal int!rrupt !nabl! (1 O uklju2i) A C5+ Int!rrupt !nabl! (1 O uklju2i)
64
Za "vaki "lu2aj potr!bno j! r!"!tovati int!rapt 9la* (nika& n! v!ruj bcf I;T#";,I;TF A <brii int!rapt 9la*
ikrokontrol!ru)/
Gako "u ov&! i"kori0!n! 2ak K in"trukcij! za !njanj! vr!&no"ti "a o j!&no* r!*i"tra prakti2nij! j! u po*l!&u t!&nj! ! orij! i brzin! izvravanja pro*ra a za !niti i; "a &v!$ movlw movwf b'10010000' I;T#"; A bit P ?I= O ?lobal int!rrupt !nabl! (1 O uklju2i) A bit 4 I'T= O C5+ Int!rrupt !nabl! (1 O uklju2i) A bit 1 I'TF O Int!rrupt 9la* (+ O obrii) A Inicijalizuj I'TC<' r!*i"tar
Sa&a j! potr!bno po&!"iti portov!$ S!0at! "! &a zbo* kori0!nja C5+ kao int!rapt pina# on ora biti po"tavlj!n kao ulazniA bsf movlw movwf clrf bcf bcf bcf STATUS,RP0 A Pr!bacuj! na" u 58'G1 0x01 A bQ+++++++1Q u TCIS5 TRISB A C5+MI'T kao ulaz# a o"tali kao izlaz TRISA A Svi pinovi na P<CT8 "u izlazni "PTI";:R=',I;T=(' A Int!rapt "! izaziva pri A opa&aju0oj ivici "i*nala "PTI";:R=',;"T:RBPU A -klju2!ni int!rni Ipull upJ A otpornici na P<CT5 STATUS,RP0 A Povratak u 58'G+
Gako int!rapt !li o izazivati pri opa&aju0oj ivici "i*nala ("a HF> na +>) ora "! po&!"iti i I'T=3? bit <PTI<'LC=? r!*i"tra$ Tako%! "u r!"!tovanj! '<TLC5Pbita uklju2!ni pulll up otpornici$ Pro*ra 0! kori"titi pro !nljivu T=MPU za privr! !no 2uvanj! U r!*i"tra &ok "! izvrava int!rapt rutina i pro !nljivu 5C<78C za pa 0!nj! broja priti"nuti; pr!ki&a2a$ 5C<78C 0! u pro*ra u i ati "l!&!0! vr!&no"ti/ bitovi 76543210 00000000 .0 00000001 .1 00000010 .2 00000011 .3 00000100 .4 00000101 .5 00000110 .6 00000111 .7 00001000 .8 B pr!kora2!nj! Sto*a j! najpr! potr!bno i !novati r!*i"tr! i inicijalizovati vr!&no"t 5C<78C r!*i"tra$ T=4P% e ! BR"$A# e ! clrf 0x0# 0x0( BR"$A# A T=MPU na a&r!"i +N+C A 5C<78C na a&r!"i +N+3 A Stavi +N++ u 5C<78C 6F
3alj! j! potr!bno u *lavno pro*ra u napraviti p!tlju koja 0! vr!&no"t pro !nljiv! 5C<78C n!pr!"tano prikazivati na P<CT8 r!*i"tru$ P)comf movwf goto BR"$A#,% P"RTA P)A Inv!rtovani 5C<78C u U r!*i"tar (zbo* :=3) A a o&atl! u P<CT8 A >rati "! na po2!tak p!tlj!
5u&u0i &a prva pojava int!rapta na"taj! t!k ka&a "! pro*ra na%! u *lavnoj pro*ra "koj p!tlji (Pri)# i &a u "a a p!tlja n! r!a*uj! na "tanj! bitova ST8T-S r!*i"tra# u int!rapt rutini n! a potr!b! za privr! !ni 2uvanj! nj!*ov! vr!&no"ti$ - int!rapt rutini potr!bno j! najpr! "a2uvati vr!&no"t U r!*i"tra$ movwf T=4P% A Privr! !no 2uvanj! "a&raja U r!*i"tra
<n&a j! potr!bno inkr! !ntovati "a&raj 5C<78C r!*i"tra$ incf BR"$A#,F A -v!0aj r!*i"tar 5C<78C$
3alj! j! potr!bno prov!riti &a li j! pro !nljiva 5C<78C pr!kora2ila ak"i alnu vr!&no"t $P (bQ+++++111Q) i &ola &o $8 (bQ++++1+++Q)$ 'ajprakti2nij! j! izvriti t!"tiranj! tr!0!* bita 5C<78C r!*i"tra$ btfsc clrf A T!"tiraj tr!0i bit ++++1+++ 5C<78C r!*i"tra$ A -koliko nij! "!tovan# pr!"ko2i "l!&!0u A in"trukciju BR"$A# A -pi"i +N++ u 5C<78C A -koliko j! 5C<78C nakon inkr! !ntacij! A pr!kora2io ak"i alnu vr!&no"t (bQ+++++111Q) A "a&a j! j!&nak $+ A -koliko nij!# "a&a j! inkr! !ntovan$ T=4P%,% A >rati pr!t;o&ni "a&raj U r!*i"tra I;T#";,I;TF A <brii I'TF O &ozvoli nov! int!rapt! A Graj int!rapt rutin!$ BR"$A#,3
Po*l!&ajt! "a&a c!lokupan pro*ra / A DDDDDD Inicijalizacija i i !novanj! DDDDDD 2-3& 7-+c2!de ::#";FI' "R' T=4P% BR"$A# 5616F84 A 3!9ini! upotr!blj!ni ikrokontrol!r 8516F84.-+c9 A -bacuj! naziv! r!*i"tra u pro*ra :#P:"FF < :%(T:"FF < :P%RT=:"; < :R#:"S# A Po&!ava kon9i*uracion! bitov! A 3!9ini! "tart pro*ra a A .uvanj! "a&raja U r!*i"tra na a&r!"i +N+C A 5C<78C na a&r!"i +N+3
66
A DDDDDD Int!rapt rutina DDDDDD o)* goto o)* movwf incf btfsc clrf 0x00 40-+ 0x04 T=4P% BR"$A#,F BR"$A#,3 A <v&! PC &olazi pri uklju2!nju i r!"!tu A <&lazak na *lavni pro*ra
A <v&! 0! po2!ti rutina za obra&u int!rapta A Privr! !no 2uvanj! "a&raja U r!*i"tra A Inkr! !ntuj 5C<78C$ A T!"tiraj tr!0i bit bQ++++1+++Q 5C<78C r!*i"tra$ A -koliko nij! "!tovan# pr!"ko2i "l!&!0u A in"trukciju BR"$A# A -pi"i $+ u 5C<78C A -koliko j! 5C<78C nakon inkr! !ntacij! A pr!kora2io ak"i alnu vr!&no"t ($P) A "a&a j! $+ A -koliko nij!# "a&a j! inkr! !ntovan$ T=4P%,% A >rati pr!t;o&ni "a&raj U r!*i"tra I;T#";,I;TF A <brii I'TF O &ozvoli nov! int!rapt! A Graj int!rapt rutin!$ O inicijalizacija DDDDDD
A DDDDDD ?lavni pro*ra 40-+ movlw movwf bsf movlw movwf clrf bcf bcf bcf clrf
b'10010000'
A bit P ?I= O ?lobal int!rrupt !nabl! (1 O uklju2i) A bit 4 I'T= O C5+ Int!rrupt !nabl! (1 O uklju2i) A bit 1 I'TF O Int!rrupt 9la* (+ O obrii) I;T#"; A Inicijalizuj I'TC<' r!*i"tar STATUS,RP0 A Pr!bacuj! pro*ra u 58'G1 0x01 A bQ+++++++1Q u TCIS5 TRISB A C5+MI'T kao ulaz# a o"tali kao izlaz TRISA A Svi pinovi na P<CT8 "u izlazni "PTI";:R=',I;T=(' A Int!rapt "! izaziva pri A opa&aju0oj ivici "i*nala "PTI";:R=',;"T:RBPU A -klju2!ni int!rni Ipull upJ A otpornici na P<CT5 STATUS,RP0 A Povratak u 58'G+ BR"$A# A Stavi $+ u 5C<78C O p!tlja DDDDDD A Inv!rtovani 5C<78C u U r!*i"tar (zbo* :=3) A a o&atl! u P<CT8 A >rati "! na po2!tak p!tlj!
Gao to j! ranij! r!2!no C84 pin n! o! na "vo izlazu &ati lo*i2ku j!&inicu$ "lu2aju &a "! na nj!*a poalj! lo*i2ka +# ponaa0! "! i"to kao i o"tali pinovi# a u 6P
"lu2aju j!&inic!# pr!0i 0! u "tanj! vi"ok! i p!&an"! (kao &a nij! ni pov!zan)$ Pin C84 razlikuj! "! o& o"tali; i po "vo ulazu$ -laz u j! "a 6 itovi oki&a2! $ To o o*u0ava bolji prij! "i*nala "a pri"u"tvo u a (npr$ "a u&alj!no* "!nzora)$ Gako j! ovaj pro*ra &at "a o ilu"trativno# nji nij! r!alizovana &!bouncin* rutina$ Priliko priti"kanja pr!ki&a2a o!t! pri !titi &a "! u !"to j!&no* pon!ka& javi pr!"kok broj!va$ 3o "a&a "t! nau2ili K@ in"trukcij!$ >!rovatno i "a i uo2avat! &a >a "a&a v!0i probl! o& u2!nja novi; in"trukcija pr!&"tavlja u2!nj! 9unkcija r!*i"tara "p!cijaln! na !n!$ - r!*i"tar! koj! "t! u potpuno"ti nau2ili "pa&aju P<CT8# TCIS8# P<CT5# TCIS5# PC:# PC:8T,# TMC+ i <PTI<'LC=?$ To j! o"a potpuno i &va &!li i2no (ST8T-S i I'TC<') nau2!na r!*i"tra$ Sl!&i jo j!&an &!o "a int!rapti a# a on&a n!to novo$
68
==I=
T0I=
I;T=
RBI=
T0IF
I;TF
?I= (!n*$ *lobal Int!rrupt Enabl!) o o*u0ava ili zabranjuj! upotr!bu "vi; int!rapta$ 'j!*ovi "!tovanj! # &ozvolj!na j! upotr!ba int!rapta$ S!tovanj! ==I= (EEPC<M Int!rrupt Enabl!) o o*u0!n j! zavr!tak "ni anja u ==PC<M kao izvor int!rapta$ S!tovanj! T+I= (!n*$ Ti !r: Int!rrupt Enabl!) bita taj !r j! upotr!blj!n kao izvor int!rapta$ I'T= (!n*$ C5+MI'T INT!rrupt Enabl!) bit "!tovanj! C5+ pina ikrokontrol!ra kao izvora int!rapta$ &ozvoljava kori0!nj!
S!tovanj! C5I= (!n*$ Port , C;an*! Int!rrupt Enabl!) bita# o o*u0!na j! upotr!ba P<CT5 r!*i"tra kao izvora int!rapta pri pro !ni lo*i2ko* "tanja na C54 &o C5P pinovi a$ T+IF (!n*$ Ti !r: Int!rrupt Fla*) bit "!tuj! "! pri pr!kora2!nju taj !ra$ I'TF (!n*$ I'"!rrupt Fla*) bit "!tuj! "! pri &ola"ku o&*ovaraju0!* lo*i2ko* nivoa (o&abrano* I'T=3? bito <PTI<'LC=? r!*i"tra) na C5+ pin ikrokontrol!ra$ C5IF (!n*$ Port , Int!rrupt Fla*) "!tuj! "! pri pro !ni lo*i2ko* "tanja na pinovi a C54 &o C5P$
Int!rapt 9la*ovi "! n! r!"!tuju auto at"ki nakon o2itavanja$ 3a bi "! &ozvolili novi int!rapti# n!op;o&no j! r!"!tovati !lj!ni 9la* pr! izla"ka iz int!rapt rutin!$ 3a bi "! taj !r upotr!bio kao izvor int!rapta# &ovoljno j! &ozvoliti nj!*ovo kori0!nj! "!tovanj! ?I= i T+I= bitova# i r!"!tovanj! nj!*ovo* 9la*a$ Sva po&!avanja v!zana za obi2an taj !r (pr!"kal!r# !k"t!rni takt) va! i u ovo "lu2aju$ Gako j! u int!rapt potpro*ra i a u*lavno n!op;o&no 2uvati "tanj! ST8T-S r!*i"tra po"!bna panja ora "! obratiti na in"trukcij! koj! priliko nj!*ovo* vra0anja n! uti2u (iznova) na pro !nu nj!*ovo* "tanja kao to npr$ M<>F in"trukcija 6Y
o! uticati na iz !nu Z!ro 9la*a$ Zbo* to*a "! pr!poru2uj! upotr!ba SU8PF in"trukcij!$ SRap9 (!n*$ S7 % F B za !ni) in"trukcija r!*i"tru$ b-&7 b-&6 b-&5 b-&4 !nja b-&3 !"ta *ornj! b-&2 i &onj! b-&1 niblu u b-&0
b-&3
b-&2
b-&1
b-&0
b-&7
b-&6
b-&5
b-&4
Sintak"a in"trukcij! j! "Rap9 9#& pri 2! u j! 9 r!*i"tar na& koji a "a & j! o&r!%!no o&r!&it! r!zultata op!racij!$
Sl!&i pro*ra koji ilu"truj! upotr!bu K n!zavi"na &!la$ =l!ktri2na ! a i"ta j! kao u pr!t;o&no po*lavlju$ Prvi &!lo 0! :=31 tr!p!riti$ To 0! biti *lavni pro*ra $ 3ru*i &!lo 0! "! pri priti"ku ta"t!ra izazvati int!rapt koji 0! !njati "tanj! :=3@$ Tr!0i &!lo 0! "! taj !ro izazivati int!rapt koji 0! !njati "tanj! :=3K$ <va tri &!la "u "a o u"lovno n!zavi"na$ Int!rapt potpro*ra troi vr! ! potr!bno za izvravanj! "voji; in"trukcija# pa 0! u zavi"no"ti o& brzin! izvravanja int!rapt potpro*ra a (i brzin! nj!no* pojavljivanja) *lavni pro*ra ra&iti "porij!$ M!%uti # int!rapt rutina "! u*lavno pravi tako &a nj!no trajanj! bu&! to kra0!# pa tako nj!no izvravanj! n! uti2! u v!likoj !ri na brzinu *lavno* pro*ra a$ A DDDDDD Inicijalizacija i i !novanj! DDDDDD 2-3& 5616F84 A 3!9ini! upotr!blj!ni ikrokontrol!r 7-+c2!de 8516F84.-+c9 A -bacuj! naziv! r!*i"tra u pro*ra ::#";FI' :#P:"FF < :%(T:"FF < :P%RT=:"; < :R#:"S# A Po&!ava kon9i*uracion! bitov! "R' 0x00 A 3!9ini! "tart pro*ra a cb2oc@ 0x0# T=4P% A .uvanj! "a&raja U r!*i"tra T=4PSTATUS A .uvanj! "a&raja ST8T-S r!*i"tra BR"$A#1 A 5C<78C1$ Inicijalno +NFF BR"$A#2 A 5C<78C@$ Inicijalno +NFF BR"$A#3 A 5C<78CK$ Inicijalno +NFF SP"RTA A S;a&&oR r!*i"tar za P<CT8 e+dc A DDDDDD Int!rapt rutina DDDDDD o)* goto o)* movwf 0x00 40-+ 0x04 T=4P% A <v&! PC &olazi pri uklju2!nju i r!"!tu A <&lazak na *lavni pro*ra A <v&! 0! po2!ti rutina za obra&u int!rapta A .uvanj! "a&raja U r!*i"tra u T=MPU P+
A DDDDDD T!"t int!rapta izazvano* pr!ki&a2! DDDDDD btfss I;T#";,I;TF A Int!rapt izazvan pr!ki&a2! ? goto T0> A 'ij!# i&i na &!o za taj !r"ki int!rapt$ A DDDDDD Cutina za obra&u int!rapta izazvano* pr!ki&a2! DDDDDD xorlw b'00000010' A Pro !ni "tanj! bita za :=3@ u U A DDDDDD Izlazak iz int!rapt rutin! izazvan! pr!ki&a2! DDDDDD call G)0& A -p&atuj P<CT8 i S,833<U i A >rati "tanja U i ST8T-S r!*i"tra bcf I;T#";,I;TF A 3ozvoli nov! int!rapt! pr!ki&a2a retfie A Povratak iz int!rapt rutin!$ A DDDDDD -p&at! P<CT8 i S,833<U i vra0anj! DDDDDD A DDDDDD ori*inalno* "tanja U i ST8T-S r!*i"tra DDDDDD G)0& movwf P"RTA A Gopiraj U u P<CT8 movwf SP"RTA A Gopiraj U u S;a&&oR r!*i"tar swapf T=4PSTATUS,% A T=MPST8T-S "a okr!nuti niblovi a A u U$ 3va puta okr!nuti niblovi &aju movwf STATUS A prvobitno "tanj! koj! i&! u ST8T-S swapf T=4P%,F A 7!&no okr!ni niblov! u "a o A T=MPU r!*i"tru# swapf T=4P%,% A a &ru*i put "a U kao o&r!&it! $ return A Graj potpro*ra a$ A DDDDDD Cutina za obra&u int!rapta izazvano* taj !ro DDDDDD T0> decfsz BR"$A#3,, A S anji 5C<78CK$ xorlw b'00000100' A Pro !ni "tanj! bita za :=3K u U A ?ornja in"trukcija izvrava "! u "vi "lu2aj!vi a ka&a j! vr!&no"t 5C<78CK A r!*i"tra o& $1 &o $@FF$ Gako j! i nar!&na in"trukcija i"ta# &va puta `<CBovana A vr!&no"t &aj! ori*inalno "tanj! U r!*i"tra (kao pr! `<C op!racij!)$ A Ga&a j! 5C<78CK V + *ornja in"trukcija ona "! pr!"ka2! i izvrava "! "a o A j!&na (nar!&na) `<C op!racija# koja prouzrokuj! !lj!nu pro !nu "tanja bita$ xorlw b'00000100' A Pro !ni "tanj! bita za :=3K u U$ A <va in"trukcija "! uv!k izvrava$
A DDDDDD Izlazak iz int!rapt rutin! izazvan! taj !ro DDDDDD call G)0& A -p&atuj P<CT8 i S,833<U i A vrati "tanja U i ST8T-S r!*i"tra bcf I;T#";,T0IF A 3ozvoli nov! int!rapt! taj !ra retfie A Povratak iz int!rapt rutin!$
P1
O inicijalizacija DDDDDD
movwf
STATUS,RP0 A Pr!bacuj! pro*ra u 58'G1 0x01 A bQ+++++++1Q u TCIS5 TRISB A C5+MI'T kao ulaz# a o"tali kao izlaz TRISA A bQ+++++Q u TCIS8# "vi pinovi P<CT8 "u izlazni b'00000111' A T+CSV+ B Taj !r j! "in;ronizovan "a A in"trukcij"ki ciklu"o A Pr!"kal!r B PS8V111 j! po&!!n za o&no" 1/@F6 A I'T=3?V+ B Int!rapt "! izaziva pri A opa&aju0oj ivici "i*nala ("a 1 na +) A '<TLC5P-V+ B -klju2!ni int!rni Ipull upJ A otpornici na P<CT5 "PTI";:R=' A STATUS,RP0 A Povratak u 58'G+ T4R0 A Inicijalizacija taj !ra SP"RTA A Inicijalizacija S;a&&oR r!*i"tra b'10110000' A bit P ?I= O ?lobal int!rrupt !nabl! (1 O uklju2i) A bit 4 I'T= O C5+ Int!rrupt !nabl! (1 O uklju2i) A bit 1 I'TF O Int!rrupt 9la* (+ O obrii) A bit F T+I= O Ti !r int!rrupt !nabl! (1 O uklju2i) A bit @ T+IF O Ti !r int!rrupt 9la* (+ O obrii) I;T#"; A Inicijalizuj I'TC<' r!*i"tar
A DDDDDD ?lavni pro*ra O tr!ptanj! :=31 DDDDDD Poc bcf I;T#";,'I= A Zabrani nov! int!rapr! btfsc I;T#";,'I= A Prov!ri j!"u li int!rapti zai"ta zabranj!ni goto Poc A 'i"u# zabrani i; op!t$ movf SP"RTA,% A S,833<U u U xorlw b'00000001' A Pro !ni "tanj! bita za :=31 u U movwf P"RTA A Gopiraj U u P<CT8 movwf SP"RTA A Gopiraj U u S;a&&oR r!*i"tar bsf I;T#";,'I= A 3ozvoli nov! in!rapt! call Pe& A -baci kanj!nj! goto Poc A >rati "! na po2!tak A DDDDDD Potpro*ra Pe& decfsz goto decfsz goto return za kanj!nj! o& oko +#@S DDDDDD BR"$A#1,F A <v! &v! p!tlj! "lu! za brojanj! na&ol! o& Pe& A @FF &o +# @FF puta# o o*u0avaju0i na &a BR"$A#2,F A o! o vi&!ti kako :=31 tr!p!ri Pe& A Povratak iz potpro*ra a A Graj pro*ra a
Mo!t! "! zapitati zato "u upotr!blj!n! &v! "Rap9 in"trukcij! pri vra0anju T=MPU u U# ka&a "! i"to o*lo r!alizovati i ov9 T=MPU#U in"trukcijo $ Cazlo* j! taj to 0! oR9 in"trukcija "!tovati Z!ro 9la* u "lu2aju &a j! u U bila vr!&no"t +N++# &ok j! P@
"Rap9 in"trukcija n!utralna pr! a "vi 9la*ovi a$ Sli2no vai i za ST8T-S r!*i"tar$ -koliko j! o&r!&it! in"trukcij! koja !nja "tanj! 9la*ova ST8T-S r!*i"tra "a ST8T-S r!*i"tar# nj!*ovi 9la*ovi po"tavi0! "! u zavi"no"ti o& r!zultata in"trukcij!# b!z obzira na "tanj! bajta koji !li o po"lati u nj!*a$ - &!lu "a t!"tiranj! int!rapta o!t! pri !titi &a j! t!"tiran "a o int!rapt 9la* pr!ki&a2a$ To j! "a"vi nor alno# j!r n!to ora &a j! izazvalo int!rapt ka&a "! v!0 ulo u int!rapt rutinu$ -koliko to nij! bio pr!ki&a2# on&a j! "i*urno bio taj !r -koliko "u oba int!rapta na"tupila i"tovr! !no ("!tovana oba int!rapt 9la*a)# najpr! 0! "! izvriti int!rapt rutina pr!ki&a2a# ali po povratku iz int!rapt potpro*ra a o& a; 0! "! izazvati novi int!rapt j!r j! int!rapt 9la* taj !ra i &alj! "!tovan$ Si*urno "t! u &!lu za obra&u taj !r"ko* int!rapta uo2ili n!obi2nu r!alizaciju kanj!nja$ <no "! oralo izv!"ti na taj na2in (u prolazu) j!r "! n! " ! &ozvoliti &a pr!v!liko kanj!nj! int!rapt potpro*ra a ko2i izvr!nj! *lavno* pro*ra a$ - *lavno pro*ra u int!rapti "u privr! !no zabranj!ni &a "! "tanj! SP<CT8 r!*i"tra n! bi pro !nilo int!rapt rutino za vr! ! nj!*ov! pro !n! o& "tran! *lavno* pro*ra a$ T!"tiranj! zabran! "vi; int!rapta tako%! j! n!op;o&no (po*l!&ajt! napo !n! uz int!rapt!)$ 3o"ta j! bilo int!rapta$ Sl!&i n!to "a"vi &ru*a2ij!$
PK
Pe&
A 7!"t!# na"tavak pro*ra a$ Za razliku o& tab!l!# zbo* alo* broja r!*i"tara ko& upotr!b! in&ir!ktno* a&r!"iranja n! a o*rani2!nja u " i"lu blokova po&ataka (bar ko& PIC16F84 ikrokontrol!ra O ko& ikrokontrol!ra "a v!0i broj! r!*i"tara ovo nij! "lu2aj)$ In&ir!ktno a&r!"iranj! "! u pro*ra i a naj2!0! upotr!bljava j!&ino u "lu2aju v!0! koli2in! po&ataka$ 3o "a&a "t! nau2ili KK o& KF in"trukcija# potpunu upotr!bu &!"!t r!*i"tra i &!li i2nu upotr!bu &va r!*i"tra o& ukupno 1F$ Pr!li "t! najv!0i (i najt!i O int!rapti) &!o *ra&iva# !%uti i a "! jo no*o to*a nau2iti$
P4
==IF
%R=RR
%R=;
%R
b-&0 R(
5itovi F &o P "! n! kori"t! u ==C<'1 r!*i"tru$ Tr!baju biti na lo*i2koj nuli$ ==IF (!n*$ EEPC<M Int!rrupt Fla*) bit pr!&"tavlja 9la* int!rapta izazvano* zavr!tko proc!"a "ni anja bajta$ <vaj int!rapt o! "! &ozvoliti "!tovanj! ==I= (!n*$ EEPC<M Int!rrupt Enabl!) bita I'TC<' r!*i"tra$ Potr!bno *a j! ru2no obri"ati pr! povratka iz int!rapt rutin!$ PF
UC=CC (!n*$ .rit! Error) bit in&ikuj! pr!ki& "ni anja bajta u ==PC<M# u"l!& i"t!ka vr! !na U3T ili !k"t!rno* r!"!ta ikrokontrol!ra$ Pro*ra o! nakon r!"!ta t!"tirati ovaj bit (uz to ora otkriti i &a li j! r!"!t na"tao u"l!& n!"tanka napona napajanja ili n!)# i na o"novu nj!*ovo* "tanja &ovriti proc!" "ni anja ("a&raj ==83C i ==38T8 r!*i"tra n! !nja "! nakon r!"!ta)$ UC=' (!n*$ .rit! E'abl!) bit ==PC<M$ ora biti "!tovan# &a bi bio o*u0 upi" u ! oriju$ ! orij!$ ! orij!$
UC (!n*$ .rit!) bit kori"ti "! za iniciranj! upi"a u ==PC<M C3 (!n*$ R!ad) bit kori"ti "! za iniciranj! 2itanja iz ==PC<M ! orij"k! a&r!"! +N1+ iz ==PC<M
Po*l!&ajt! najpr! pri !r 2itanja bcf movlw movwf bsf bsf bcf movf
A Pr!bacuj! na" u 58'G+ zbo* ==83C A E!li o pro2itati "a&raj ==PC<M A ! orij! "a a&r!"! +N1+ A Pr!bacuj! na" u 58'G1 A Inicira proc!" 2itanja A ==PC<M ! orij! A Pr!bacuj! na" u 58'G+ A Sa&raj bajta "a a&r!"! +N1+ A iz ==PC<M ! orij! j! u ==38T8# A o&akl! "! o! pr!baciti u U
<vaj pro*ra tr!bao bi &a >a j! u potpuno"ti ja"an$ S!tovanj! C3 bita iniciran j! proc!" 2itanja# a zati "! C3 bit auto at"ki nakon 2itanja vra0a na +$ Po&atak iz ==PC<M ! orij! &o"tupan j! u ==38T8 r!*i"tru o& a; u nar!&no in"trukcij"ko ciklu"u# o&akl! j! pr! !t!n u U r!*i"tar$ Po*l!&ajt! "a&a kako j! r!alizovano "ni anj! bajta +N@4 u ==PC<M a&r!"u +N1+$ bcf movlw movwf movlw movwf bsf bcf bsf movlw movwf movlw movwf bsf bsf bcf STATUS,RP0 0x24 ==(ATA 0x10 ==A(R STATUS,RP0 I;T#";,'I= ==#";1,%R=; 0x55 ==#";2 0xAA ==#";2 ==#";1,%R I;T#";,'I= ==#";1,%R=; A Pr!bacuj! na" u 58'G+ A 5ajt za "ni anj! A u ==38T8 A na a&r!"u A +N1+ A Pr!laz u 58'G1 zbo* ==C<'1 A Zabrana "vi; int!rapta (ukoliko i; i a) A 3ozvola pi"anja u ==PC<M A A A Inicijalizacija upi"a u ==PC<M A A A 3ozvola int!rapta (ukoliko "! kori"t!) A Zabrana &alj!* pi"anja u ==PC<M P6
Sni anj! u ==PC<M n!0! "! inicirati ukoliko nij! ta2no i"potovana proc!&ura (+NFF u ==C<'@# +N88 u ==C<'@# "!tovan UC) i to b!z pauza (otu& zabrana int!rapta) za "vaki poj!&ina2ni bajt$ Microc;ip navo&i &a j! ta proc!&ura uv!&!na kako bi "! "pr!2io n!;oti2an upi" u ==PC<M zbo* o*u0i; *r!aka u pro*ra u$ Iz i"to* razlo*a UC=' bit j! potr!bno &rati "!tovani j!&ino za vr! ! upi"a u ==PC<M$ UC bit "! auto at"ki r!"!tuj! po zavr!tku upi"a$ - "lu2aju "!rij"ko* "ni anja po&ataka u ==PC<M# potr!bno j! pr! "l!&!0!* "ni anja prov!riti "tanj! ovo* bita# kako "! n! bi &!"ilo iniciranj! novo* upi"a u ==PC<M a &a pr!t;o&no "ni anj! jo nij! zavr!no$ To j! obav!zno# j!r "ni anj! u ==PC<M nij! "in;ronizovano "a in"trukcij"ki ciklu"o # v!0 "! za upi" u ==PC<M kori"ti po"!ban int!rni o"cilator# koji o&r!%uj! vr! ! upi"a o& oko 1+ S$ Go& 2itanja po&ataka iz ==PC<M ! orij! n! a ovakvi; probl! a$ - !"to t!"tiranja 9la*a o*u0! j! i j!&no"tavno "a2!kati &ovoljno &u*o (npr$ 1@ S)$ Mo&a >a "! !r! inicijaln! proc!&ur! i UC=CC bita 2in! pr!t!rani $ 8li zapitajt! "! ta bi "! &!"ilo ukoliko bi u ==PC<M ! oriji 2uvali npr$ obra"c! za prikaz broja na :=3 &i"pl!ju$ - "lu2aju korupcij! ==PC<M ! orij! PIC ni nakon r!"!ta n! bi o*ao na"taviti "a nor alni ra&o $ Morao bi "! o&l! iti "a ta pan! plo2ic! i ponovo pro*ra irati (u ikrokontrol!r "! "a pro*ra o "ni a i "a&raj ==PC<M ! orij!)$ - "l!&!0! po*lavlju upozna0!t! "! "a pro*ra o koji kori"ti ==PC<M ! oriju i nau2i0!t! upotr!bu ==IF bita i proc!" upi"a po&ataka u ==PC<M iz "a o* a"! bl!ra$ 'a taj na2in "! "a&raj ==PC<M ! orij! o! 2uvati zaj!&no "a pro*ra o u j!&no $a" ili $;!N 9ajlu$
PP
A DDDDDD T!"t pr!ki&a2a DDDDDD bcf STATUS,RP0 #e@1 btfss goto goto btfss goto #e@2 btfsc goto goto btfsc goto P"RTB,0 #e@1 P0! P"RTB,0 #e@1 P"RTB,0 #e@2 P0! P"RTB,0 #e@2
A Povratak u 58'G+ O u *lavno A pro*ra u pr! "koka na int!rapt rutinu A pro*ra "! izvravao u 58'G1 A T!"tiranj! otput!no"ti pr!ki&a2a A 'ij! otput!n A 7!"t! otput!n$ I&i na pauzu$ A 7o j!&no t!"tiranj! zbo* i uno"ti na A !v!ntualna varni2!nja kontakta$ A T!"tiranj! priti"nuto"ti pr!ki&a2a A 'ij! priti"nut A 7!"t! priti"nut$ I&i na pauzu$ A 7o j!&no t!"tiranj! zbo* i uno"ti na A !v!ntualna varni2!nja kontakta$
A DDDDDD Prikaz ci9r! na &i"pl!ju DDDDDD movf (ISP,% A 3ISP u U call T0b2 A -z i obrazac iz tab!l!# movwf P"RTB A i prikai ci9ru na &i"pl!ju$ A DDDDDD T!"tiranj! pr!kora2!nja vr!&no"ti ci9r! na &i"pl!ju DDDDDD decf (ISP,F A S anji 3ISP za 1$ C!zultat u 3ISP btfss (ISP,7 A T!"tiraj MS5$ <n 0! biti 1 j!&ino ukoliko j! A &olo &o pr!kora2!nja "a +N++ na +NFF goto PoI) A 'ij!# iza%i iz int!rapt rutin! movlw 0x0B A 7!"t!# inicijalizuj brojac na movwf (ISP A vr!&no"t +N+Y PoI) swapf movwf swapf swapf bcf retfie T=4PSTATUS,% STATUS T=4P%,F T=4P%,% ==#";1,==IF A T=MPST8T-S "a okr!nuti niblovi a A u U$ 3va puta okr!nuti niblovi &aju A prvobitno "tanj! koj! i&! u ST8T-S A 7!&no okr!ni niblov! u "a o A T=MPU r!*i"tru# A a &ru*i put "a U kao o&r!&it! $ A 3ozvola novi; int!rapta A Graj int!rapt rutin!$
A DDDDDD ?lavni pro*ra O inicijalizacija DDDDDD 40-+ bsf STATUS,RP0 A Pr!bacuj! pro*ra u 58'G1 bcf ==#";1,==IF A C!"!t int!rapt 9la*a movlw b'11000000' A ?I=V1 O ?lobal int!rrupt !nabl! movwf I;T#"; A ==I=V1 O ==PC<M int!rrupt !nabl! movlw b'00000000' A '<TLC5P-V+ B -klju2!ni int!rni movwf "PTI";:R=' A pull up otpornici na P<CT5 movlw 0x01 A bQ+++++++1Q u TCIS5 movwf TRISB A C5+MI'T kao ulaz# a o"tali kao izlaz clrf TRISA A Svi pinovi na P<CT8 "u izlazni bcf STATUS,RP0 A Povratak u 58'G+
PY
A DDDDDD .itanj! iz ==PC<M ! orij! DDDDDD movlw 0x00 A E!li o pro2itati "a&raj ==PC<M movwf ==A(R A ! orij! "a a&r!"! +N++ bsf STATUS,PR0 A Pr!bacuj! pro*ra u 58'G1 bsf ==#";1,R( A Inicira proc!" 2itanja A ==PC<M ! orij! bcf STATUS,RP0 A Pr!bacuj! pro*ra u 58'G+ movf ==(ATA,% A Sa&raj bajta "a a&r!"! +N++ iz A ==PC<M ! orij! u U A DDDDDD Inicijalizacija broja2a i :=3 &i"pl!ja DDDDDD movwf (ISP A Inicijalizacija broja2a call T0b2 A -z i obrazac iz tab!l! i movwf P"RTB A Prikai ci9ru na &i"pl!ju A DDDDDD Sni anj! u ==PC<M DDDDDD '20 movf (ISP,% movwf ==(ATA movlw 0x00 movwf ==A(R bsf STATUS,RP0 bsf ==#";1,%R=; movlw 0x55 movwf ==#";2 movlw 0xAA movwf ==#";2 bsf ==#";1,%R J)0> btfss goto ==#";1,%R J)0> A 3ISP u U A pa u ==38T8 A na a&r!"u A +N++ A Pr!bacuj! na" u 58'G1 zbo* ==C<'1 A 3ozvola pi"anja u ==PC<M A A A <tklju2avanj! upi"a u ==PC<M A A A T!"t zavr!tka "ni anja
A - ovo tr!nutku "ni anj! j! zavr!no pa "! int!rapt 9la* "!tuj! i na"taj! int!rapt$ int!rapt rutini 2!ka0! "! na priti"ak pr!ki&a2a# " anji0! "! vr!&no"t na &i"pl!ju i t!k on&a 0! "! iza0i iz nj! i na"taviti &alji pro*ra $ bcf bcf goto ==#";1,%R=; STATUS,RP0 '20 A Zabrana pi"anja u ==PC<M A Povratak u 58'G+ A Povratak na po2!tak pro*ra a
A DDDDDD Tab!la DDDDDD T0b2 movf (ISP,% A - pro !nljivoj 3ISP nalazi "! vr!&no"t o& addwf P#E,, A $+ &o $Y$ Ta vr!&no"t "! &o&aj! na PC:$ retlw b'01111110' A <brazac za crtanj! ci9r! + B 0 retlw b'00001100' A <brazac za crtanj! ci9r! 1 B 1 retlw b'10110110' A <brazac za crtanj! ci9r! @ B 2 retlw b'10011110' A <brazac za crtanj! ci9r! K B 3 retlw b'11001100' A <brazac za crtanj! ci9r! 4 B 4 retlw b'11011010' A <brazac za crtanj! ci9r! F B 5 retlw b'11111010' A <brazac za crtanj! ci9r! 6 B 6 8+
7 8 9
A DDDDDD Pauza zbo* &!bouncin* rutin! DDDDDD P0! decfsz BR"$A#,F A Pauza zbo* &!bouncin* goto P0! A rutin! return A Povratak iz potpro*ra a A DDDDDD Graj pro*ra a DDDDDD e+d A Graj pro*ra a
Priliko "ni anja kT&a u PIC16F84 ora "! "a&raj ! orij"k! a&r!"! +N++ u ==PC<M ! oriji po&!"iti na proizvoljan broj iz !%u +N++ i +N+Y$ - protivno 0! ikrokontrol!r uz!ti inicijalno "tanj! iz ==PC<M ! orij! (+NFF) i pri naila"ku na tab!lu izvravanj! pro*ra a 0! "! na"taviti za @4F bajtova iza "a ! tab!l!# to 0! izazvati n!pravilan ra& (ta2nij! r!"!tovanj!) ikrokontrol!ra$ To j! u pro*ra u u2inj!no upotr!bo 3= (!n*$ D!9in! E=PC<M) &ir!ktiv!$ 'jo "! j!&an (ili vi!) bajtova " !taju u ==PC<M$ 5u&u0i &a j! za nju potr!bno pr!t;o&no &!9ini"ati po2!tak upi"a u ==PC<M ! oriju (or* &ir!ktivo i a&r!"a a o& @1N++ &o @1NK;)# najprakti2nij! j! "taviti j! i"pr!& ili iza pro*ra a# kako "! n! bi &!"ilo &a "! i pro*ra *r!ko upi! u ==PC<M$ Pri " !tanju vi! bajtova u ==PC<M# zar!zo # ovako/ &! +N+F# +N88# +NPY$$$ o!t! bajt po bajt iza 3= &ir!ktiv! o&vojiti
Iako iz*l!&a &a j! ==PC<M na n!ki na2in pro&u!tak pro*ra "k! ! orij!# razlika "vakako po"toji$ - ==PC<M ! oriji nij! o*u0! izvravati pro*ra !# i"to kao to "! ni iz pro*ra a n! o! 2itati (a ni !njati) "a&raj pro*ra "k! ! orij! (bar ko& PIC16 "!rij!)$ Mo&a "t! pri !tili &a u rutini za "ni anj! u ==PC<M nij! izvr!na zabrana kori0!nja "vi; int!rapta r!"!tovanj! ?I= bita$ -koliko bi "! int!rapti zabranili# pro*ra n! bi "ko2io na int!rapt rutinu# i n!pr!"tano bi "! vrt!o u p!tlji "ni aju0i j!&an i"ti bajt u ==PC<M a&r!"u +N++$ -koliko bi "! ovo &ovoljno &u*o ponavljalo# ova ==PC<M a&r!"a bi "! u"l!& "tar!nja pokvarila (kao o*r!botina na 3>3 &i"ku)$ 7!&na ==PC<M ! orij"ka lokacija o! "! !njati &o 1 ilion puta$ Sv! pr!ko ov! vr!&no"ti pov!0ava v!rovatno0u na"tupa kvara a&r!"!$ 'aravno# ukoliko "! kori"ti vi! izvora int!rapta# o"tali bi "! zabraniti$ orali privr! !no
5u&u0i &a 0!t! "! u i&u0! po*lavlju upoznati "a u"pavani "tanj! ikrokontrol!ra# vr! ! j! &a nau2it! j!&nu l!nju in"trukciju$ To j! '<P (!n*$ No O%!ration)$ <va in"trukcija# o"i to traj! j!&an in"trukcij"ki ciklu" n! ra&i nita kori"no$ Ga&a pro*ra ikrokontrol!ra nai%! na nju# utroi0! j!&an in"trukcij"ki ciklu" nizata$ Pr!0i 0! pr!ko nj!# kao &a j! n! a$ -*lavno "! kori"ti u "ituacija a ka&a j! potr!bno r!alizovati ta2no o&r!%!no# ili kratko kanj!nj! (npr$ u p!tlja a kanj!nja ili &!bouncin* rutini)$
81
- S:==P o& ulazi "! S:==P in"trukcijo # a iz nj!*a "! Iprobu&itiJ na tri na2ina$ 1$ 3ovo%!nj! lo*i2k! nul! na MC:C pin r!"!t ikrokontrol!ra$ >i! o r!"!tu# u i&u0i @$ C!"!to pr!ko i"t!ka vr! !na U3T$
K$ Int!rapto na C5+MI'T pinu# int!rapto r!*i"tru# bitovi a 4 &o P# ili int!rapto ==PC<M$
8@
Int!rapt izazvan taj !ro n! o! "! kori"titi za bu%!nj! iz S:==P S:==P o&u i taj !r u"pavan$
o&a# j!r j! u
-la"ko u S:==P o&# !nja "! "tanj! o&r!%!ni; bitova ST8T-S r!*i"tra$ >r! ! j! &a napokon prou2it! i nj!*ovu unutranju "trukturu$ b-&7 H
RP0
T"
P(
(#
b-&0 #
5itovi P i 6 n! kori"t! "! u PIC16F84$ Tr!baju biti u "tanju lo*i2k! +$ 5it F (CP+) kori"ti "! ko& &ir!ktno* a&r!"iranja za izbor bank! po&ataka po "l!&!0! / + B 58'G+ O +N++B+NPF 1 B 58'G1 O +N8+B+NFF T< (!n*$ Ti !BOut) Ipr!kora2!nj! vr! !naJ bit j! na "tanju lo*i2k! + nakon i"t!ka U3T# a u "tanju lo*i2k! 1 po &ola"ku napona napajanja# i izvr!nju C:CU3T ili S:==P in"trukcij!$ 'a o"novu "tanja ovo* bita pro*ra o! &!t!ktovati &a j! r!"!t ikrokontrol!ra na"tao u"l!& pr!kora2!nja U3T$ P3 (!n*$ PoR!rBDoRn) bit po"tavlja "! na 1 po &ola"ku napona napajanja ili izvr!nju C:CU3T in"trukcij!# a na + po izvr!nju S:==P in"trukcij!$ :o*i2ka j!&inica na Z!ro Jnulto S bitu pokazuj! &a j! r!zultat za&nj! arit !ti2k! ili lo*i2k! op!racij! j!&nak +$ :o*i2ka nula na ovo bitu ukazuj! &a j! r!zultat razli2it o& +$ 3C (!n*$ Di*it CarrWMborroR) bit Ibit pr!kora2!njaMpozaj ic! ci9r!J in&ikuj! pr!kora2!nj! ili pozaj icu &onj! niblu na"talu zbo* izvravanja in"trukcija "abiranja ili o&uzi anja$ :o*i2ka j!&inica na C (!n*$ CarrWMborroR) bitu Ibitu pr!kora2!njaMpozaj ic!J ukazuj! &a j! &olo &o pr!kora2!nja ili pozaj ic! u bajtu na& koji "u "! izvril! op!racij! "abiranja# o&uzi anja ili rotacij!$
Gao to vi&it! iz "a o* ST8T-S r!*i"tra# izvr!nj! S:==P in"trukcij! prouzrokuj! r!"!tovanj! P3 bita i "!tovanj! T< bita$ Mo&a va 2u&no iz*l!&a bu%!nj! iz S:==P o&a i"t!ko U3T$ <n "! u ikrokontrol!ru kori"ti za povr! !no bu%!nj! iz S:==P o&a# obavljanj! o&r!%!n! op!racij!# i ponovni ulazak u S:==P o&$ Tako ikrokontrol!r o! povr! !no izvriti pon!ku op!raciju# a op!t 0! v!0inu vr! !na prov!"ti "pavaju0i (i tro!0i anj! "truj!)$ Gako i"t!k U3T prouzrokuj! "o9tv!r"ki r!"!t ikrokontrol!ra pro*ra ora po r!"!tu t!"tirati T< bit# i na o"novu nj!*ovo* "tanja zaklju2iti &a li "! ra&i o prvo uklju2!nju ikrokontrol!ra# ili o pr!ki&u na"talo i"t!ko U3T# kako bi "! o*ao na"taviti zapo2!ti pro*ra $ - prak"i "! no*o 2!0! "r!0! bu%!nj! int!rapti a$ - "l!&!0! "! "a "p!ci9i2no"ti a upotr!b! int!rapta u S:==P o&u$ po*lavlju upozna0!t!
8K
A DDDDDD Int!rapt rutina za prvi &!o pro*ra o)* 0x04 movwf T=4P% swapf STATUS,% movwf T=4PSTATUS swapf andlw
a O nor aln! int!rapt! DDDDDD A <v&! 0! po2!ti int!rapt rutina A .uvanj! "a&raja U r!*i"tra u T=MPU A ST8T-S "a okr!nuti niblovi a u U A i zati u T=MPST8T-S r!*i"tar
P"RTB,% A -z i "tanj! "a porta i za !ni "tanj! niblova$ b'00001111' A Ma"kiraj n!!lj!n! bitov!
A DDDDDD T!"t int!rapta izazvano* pr!ki&a2! DDDDDD btfss I;T#";,I;TF A Int!rapt izazvan pr!ki&a2! TF? goto T14 A 'ij!# i&i na &!o za pr!ki&a2! T1 &o T4$ A DDDDDD Int!rapti izazvani pr!ki&a2! TF DDDDDD movwf I;(F A In&ir!ktno "ni anj! u !lj!ni r!*i"tar incf FSR,F A Pozicioniranj! point!ra na "l!&!0i r!*i"tar call G)0& A >rati "a&raj U i ST8T-S r!*i"tra bcf I;T#";,I;TF A <brii int!rapt 9la* pr!ki&a2a TF retfie A >rati "! iz int!rapt potpro*ra a A DDDDDD Int!rapti izazvani pr!ki&a2i a T1 &o T4 DDDDDD call T0b2 A -z i "liku za &i"pl!j iz tab!l!$ 8F
call call bcf retfie G)0& swapf movwf swapf swapf return
;0c) A 'acrtaj "liku$ G)0& A >rati "a&raj U i ST8T-S r!*i"tra I;T#";,RBIF A <brii int!rapt 9la* pr!ki&a2a T1 &o T4 A >rati "! iz int!rapt potpro*ra a T=4PSTATUS,% STATUS T=4P%,F T=4P%,% A T=MPST8T-S "a okr!nuti niblovi a A u U$ 3va puta okr!nuti niblovi &aju A prvobitno "tanj! koj! i&! u ST8T-S A 7!&no okr!ni niblov! u "a o A T=MPU r!*i"tru# A a &ru*i put "a U kao o&r!&it! $ A Povratak iz potpro*ra a$
A DDDDDD Tab!la DDDDDD T0b2 addwf P#E,F retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw retlw A DDDDDD Potpro*ra ;0c) movwf movwf swapf movwf return
A >r!&no"t u U o& bQ++++++++Q &o bQ++++1111Q A (+N++ &o +N+F) "! &o&aj! na PC: A b!z &!ci aln! ta2k! b'00011000' A <brazac za crtanj! ci9r! + B 0 b'00111111' A <brazac za crtanj! ci9r! 1 B 1 b'10010100' A <brazac za crtanj! ci9r! @ B 2 b'00010110' A <brazac za crtanj! ci9r! K B 3 b'00110011' A <brazac za crtanj! ci9r! 4 B 4 b'01010010' A <brazac za crtanj! ci9r! F B 5 b'01010000' A <brazac za crtanj! ci9r! 6 B 6 b'00011111' A <brazac za crtanj! ci9r! P B 7 b'00010000' A <brazac za crtanj! ci9r! 8 B 8 b'00010010' A <brazac za crtanj! ci9r! Y B 9 b'00010001' A <brazac za crtanj! ci9r! 8B A b'01110000' A <brazac za crtanj! ci9r! 5 B B b'11010000' A <brazac za crtanj! ci9r! C B C b'00110100' A <brazac za crtanj! ci9r! 3 B D b'11010000' A <brazac za crtanj! ci9r! = B E b'11010001' A <brazac za crtanj! ci9r! F B F
za crtanj! "lik! na &i"pl!ju DDDDDD P"RTA A Poalji u P<CT8 bitov! C8+ &o C84 T=4P A Poalji u T=MP r!*i"tar zbo* za !n! niblova T=4P,% A Za !ni !"ta niblovi a tako &a C51 bit &o&j! A na !"to bita 1 (i"to "! o*lo r!alizovati A i "a 4 CCF in"trukcij!) P"RTB A Poalji u P<CT5 bitov! C51 &o C5K A Povratak iz potpro*ra a$
A DDDDDD ?lavni pro*ra O inicijalizacija DDDDDD 40-+ bsf STATUS,RP0 A Pr!bacuj! pro*ra u 58'G1 movlw b'11110001' A pinovi C5+ i C54 &o C5P ulazni# movwf TRISB A a C51# C5@ i C5K izlazni$ clrf TRISA A Svi pinovi porta 8 izlazni movlw b'00000000' A I'T=3?V+ B Int!rapt "! izaziva pri 86
A opa&aju0oj ivici "i*nala ("a 1 na +) A '<TLC5P-V+ B -klju2!ni int!rni A pull up otpornici na P<CT5 K PoI)0&0@ ! BA;J0 ! orij!
A DDDDDDD Po"tavi "liku na &i"pl!ju pr! uklju2!nja int!rapta DDDDDD swapf P"RTB,% A -z i "tanj! "a porta i za !ni "tanj! niblova$ andlw b'00001111' A Ma"kiraj n!!lj!n! bitov! call T0b2 A -z i "liku za &i"pl!j iz tab!l!$ call ;0c) A 'acrtaj "liku$ A DDDDDD -klju2i int!rapt! DDDDDD bsf STATUS,RP0 A Pr!bacuj! pro*ra u 58'G1 movlw b'10011000' A ?I= O ?lobal int!rrupt !nabl! (1 O uklju2i) A I'T= O C5+ Int!rrupt !nabl! (1 O uklju2i) A C5I= O C5 Int!rrupt !nabl! (1 O uklju2i) A I'TF O Int!rapt 9la* za TF (+ O obrii) movwf I;T#"; A C5IF O Int!rapt 9la* za T1BT4 (+ O obrii) bcf STATUS,RP0 A Povratak u 58'G+ A DDDDDD Prvi &!o pro*ra a O "!tovan ?I=# nor alni int!rapti DDDDDD Poc sleep A -klju2i S:==P o& A - ovo tr!nutku pro*ra "! vratio iz int!rapt rutin!$ Sa&a j! potr!bno prov!riti &a li A j! "ni lj!no "vi; F vr!&no"ti$ M!%uti # bolj! j! ov&! prov!riti vr!&no"t FSC A r!*i"tra "abiranj! # j!r j! o*u0! &a "! (npr$ u"l!& &!bouncin*a na TF) izazov! vi! A uza"topni; int!rapta i tako "ni ! vr!&no"ti u jo par nar!∋ C8M a&r!"a$ .ak i A &a "! to &o*o&i# t!"to CarrW 9la*a o! "! &!t!ktovati taj "lu2aj za razliku o& A t!"ta Z!ro 9la*a$ movf addlw btfss goto FSR,% .21B STATUS,# Poc A FSC u U A T!"t pr!kora2!nja$ FSC tr!ba biti o& $K@ &o $K6 A $KP i vi! H $@1Y V "!tovan CarrW A 7o n! a pr!kora2!nja$ Spavaj i &alj!$
A - ovo tr!nutku "ni lj!no j! "vi; F vr!&no"ti u C8M a&r!"! o& $K@ &o $K6 A Sa&a "! tr!ba zabraniti o&lazak na int!rapt potpro*ra $ ?0b) bcf btfsc goto I;T#";,'I= I;T#";,'I= ?0b) A 7!"t!$ Zabrani nov! int!rapr! A Prov!ri j!"u li int!rapti zai"ta zabranj!ni A 'i"u# zabrani i; op!t$
A DD 3ru*i &!o pro*ra a O r!"!tovan ?I=# int!rapti a "! na"tavlja *lavni pro*ra DD movlw 0xFF A movwf P"RTA A <brii :=3 &i"pl!j ("!* !nti na P<CT8)$ movwf P"RTB A <brii :=3 &i"pl!j ("!* !nti na P<CT5) 8P
A -klju2i "!* !nt &!ci aln! ta2k!$ A Inicijalizacija point!ra C8M ! orij! A na r!*i"tar $K@
A DDDDDD Zabrani bu%!nj! iz "l!!p o&a pr!ki&a2i a T1 &o T4 DDDDDD bsf STATUS,RP0 A Pr!bacuj! pro*ra u 58'G1 movlw b'00010000' A ?I= O ?lobal int!rrupt !nabl! (+ O i"klju2i) A I'T= O C5+ Int!rrupt !nabl! (1 O uklju2i) A C5I= O C5 Int!rrupt !nabl! (+ O i"klju2i) A I'TF O Int!rapt 9la* za TF (+ O obrii) movwf I;T#"; A C5IF O Int!rapt 9la* za T1BT4 (+ O obrii) bcf STATUS,RP0 A Povratak u 58'G+ A DDDDDD Ponovo u"pavaj S50 sleep ikrokontrol!r DDDDDD A -"pavaj ikrokontrol!r &o pojav! int!rapta$ A Po nj!*ovoj pojavi# na"tavi pro*ra b!z "koka A na int!rapt potpro*ra A -troi j!&an in"trukcij"ki ciklu" A Pr!poru2ljivo nakon bu%!nja
nop A - ovo
tr!nutku priti"nut j! pr!ki&a2 TF$ I;(F,% T0b2 ;0c) P"RTA,4 FSR,F A In&ir!ktno 2itanj! !lj!no* r!*i"tra A -z i "liku za &i"pl!j iz tab!l!$ A 'acrtaj "liku$ A -klju2i "!* !nt &!ci aln! ta2k!$ A Pozicioniranj! point!ra na "l!&!0i r!*i"tar o*ao biti "a `<C
A T!"t pr!kora2!nja j! i"ti kao i ranij!# iako bi "a&a "lobo&no A op!racijo movf addlw btfss goto goto FSR,% .21B STATUS,# S50 "5e&
A FSC u U A T!"t pr!kora2!nja$ FSC tr!ba biti o& $K@ &o $K6 A $KP i vi! H $@1Y V "!tovan CarrW A 7o n! a pr!kora2!nja$ Spavaj i &alj!$ A I a pr!kora2!nja$ Po2ni pro*ra iz po2!tka$ A Graj pro*ra a
- Sl!!p o&u o"cilator j! n!"tabilan priliko bu%!nja$ 'ai !# poto j! o"cilator za vr! ! "pavanja blokiran# nij! u ba lako &a o&j!&no po2n! proizvo&iti 2i"t! taktov!$ 5u%!nj! n!0! biti o*u0! &ok "! o"cilator n! "tabilizuj!$ Zato "! pri kori0!nju S:==P o&a n! o! vriti !r!nj! vr! !na brojanj! in"trukcij"ki; ciklu"a in"trukcija u pro*ra u# 2ak iako "! bu%!nj! int!rapto &!ava ta2no o&r!%!no vr! ! nakon ula"ka u Sl!!p o&$ Gako CC o"cilator najlak! po2inj! "a o"cilacija a# vr! ! za nj!*ovu "tabilizaciju j! "koro tr!nutno# &ok j! ko& upotr!b! o"tali; vr"ta o"cilatora potr!bno 1+@4 takta o"cilatora za ko pl!tnu "tabilizaciju$ Sv! &ok "! "tabilizacija takta n! zavri# ikrokontrol!r "! n!0! o0i probu&iti iz S:==P o&a$ 88
8Y
29. Re!e"
'ajj!&no"tavnij! r!2!no# r!"!t "lui &a izvravanj! pro*ra a po2n! iz po2!tka$ PIC16F84 i a K izvora r!"!ta$ Prvi j! "vakako r!"!t priliko &ovo%!nja napona napajanja (!n*$ P<C O PoR!rBon R!"!t)$ -nutar ikrokontrol!ra nalazi "! alo !l!ktri2no kolo koj! &!t!ktuj! pora"t napona napajanja &o napona &ovoljno* za ra& ikrokontrol!ra$ - tr!nutku &o"tizanja no inalno* napona# ikrokontrol!r "! r!"!tuj!$ <vi "! "pr!2ava ra& ikrokontrol!ra pri pr!ni"ko naponu napajanja$ -koliko j! potr!bno# o! "! uklju2iti PUCT= (!n*$ Po7!rBup Ti !r Enabl!) kon9i*uracioni bit koji &ri ikrokontrol!r u "tanju r!"!ta oko P@ S o& &ovo%!nja napona napajanja$ <vo kanj!nj! r!alizovano j! int!rni CC o"cilatoro n!zavi"ni o& takta o"cilatora$ To j! &ovoljno &a "! napon napajanja po&i*n! na no inalnu vr!&no"t i &a o"cilator ikrokontrol!ra po2n! proizvo&iti 2i"t! n!pri*u!n! o"cilacij!$ 'akon to "! ovo kanj!nj! zavri# ikrokontrol!r (za "vaki "lu2aj) 2!ka jo 1+@4 takta o"cilatora pr! n!*o to po2n! izvravati pro*ra $ 3ru*i izvor r!"!ta j! MC:C pin ikrokontrol!ra$ <n ora uv!k biti &ran na lo*i2koj j!&inici$ <bi2no "! to r!alizuj! pov!zivanj! "a napono napajanja pr!ko otpornika o& 1+k[$ - ! a a u ovo uput"tvu on j! "poj!n &ir!ktno zbo* v!0! pr!*l!&no"ti ! !# i j!r "! n! kori"ti$ Pri &ovo%!nju lo*i2k! + na ovaj pin ("pajanj! "a a"o )# ikrokontrol!r "! r!"!tuj!$ Za "vaki "lu2aj u ulazno "t!p!nu ovo* pina po"tavlj!n j! 6 itov oki&a2 koji i a ulo*u 9iltriranja "labi; i pul"a# koji bi o*li prouzrokovati n!;oti2ni r!"!t ikrokontrol!ra$ Po"l!&nji izvor r!"!ta nau2ili "t! u &!lu "a U3T$ Mo!t! izvriti "o9tv!r"ki r!"!t na !rni izo"tavljanj! C:CU3T in"trukcij! u !lj!no &!lu pro*ra a$ Iako r!"!t prv!n"tv!no "lui za ponovni "tart pro*ra a# t!"tiranj! "tanja T< i P3 bitova ST8T-S r!*i"tra# o*u0! j! utvr&iti na koji na2in j! izazvan r!"!t# i na o"novu to*a na"taviti ra& pro*ra a$ TO 1 1 + + 1 1 1 :D 1 + + 1 + 1 1 8ta/1e Stanj! nakon izvr!nja C:CU3T in"trukcij! Stanj! nakon izvr!nja S:==P in"trukcij! U3T r!"!t za vr! ! S:==P MC:C r!"!t za vr! ! S:==P o&a o&a ili bu%!nj! int!rapto U3T r!"!t za vr! ! nor alno* izvravanja pro*ra a MC:C r!"!t za vr! ! nor alno* izvravanja pro*ra a P<C r!"!t pri &ola"ku napona napajanja o!t! vi&!ti inicijalno "tanj! "vi; r!*i"tara nakon r!"!ta$
Y+
<vaj tip o"cilatora o! "! kori"titi za pun op"!* 9r!kv!ncija ikrokontrol!ra (3C &o 4M,z# o&no"no &o @+M,z za br! v!rzij! PIC16F84 ikrokontrol!ra)$ Mana u j! loa "tabilno"t 9r!kv!ncij! i I!tanj!J 9r!kv!ncij! u"l!& pro !n! t! p!ratur!$ Pr!poru2!n! vr!&no"ti otporno"ti "u o& Kk[ &o 1++k[# a kapacitivno"ti pr!ko @+pF$ ?ornja *ranica kapacitivno"ti zavi"i i"klju2ivo o& !lj!n! ak"i aln! 9r!kv!ncij!$ 6to "! ti2! ikrokontrol!ra# on 0! b!z probl! a ra&iti 2ak i "a takto o"cilatora anji o& 1,z$ Gao l!njivac$ - n!ki PIC ikrokontrol!ri a (naalo"t n! u PIC16F84) nalazi "! int!*ri"ani ;ar&v!r"ki CC o"cilator$ Zbo* pr!ciznij!* takta# Microc;ip kalibracioni niz "ni a u &!o pro*ra "k! ! orij!$ Ga"nij! "! ovaj niz o! pro2itati i "o9tv!r"ki po&!"iti$ 'a <SC@ pinu pri ra&u CC o"cilatora &obija "! 2!tvrtina takta o"cilatora# to "! o! i"kori"titi za "in;ronizaciju &o&atni; !k"t!rni; ur!%aja "a ikrokontrol!ro $ S:==P o&u o"cilator "! blokira# pa ni ovaj "i*nal vi! nij! &o"tupan$ Iako j! o"cilator ikrokontrol!ra n!zavi"tan o& o"tatka ;ar&v!ra# o*u0! j! pri !njuju0i al! "o9tv!r"ko ;ar&v!r"k! trikov! in&ir!ktno uticati na nj!*ovu 9r!kv!nciju$ 3ovoljno j! npr$ j!&ni pino ikrokontrol!ra uklju2ivati paral!lno pov!zivanj! otpornika u CC 2lanu$ Po"tavljanj! pina na lo*i2ku + ili 1# &o&atni otpornik 0! "! paral!lno "pojiti "a v!0 po"toj!0i otporniko # " anjuju0i r!zultuju0u vr!&no"t otporno"ti$ Tako "! o! *rubo !njati 9r!kv!ncija o"cilatora$ <vaj princip o! biti i"kori0!n za " anj!nj! 9r!kv!ncij! o"cilatora u p!rio&i a ka&a ikrokontrol!ru nij! potr!bna puna brzina 2i ! bi "! i"tovr! !no " anjila potronja ikrokontrol!ra$ M!%uti # zbo* pr!poru2!ni; vr!&no"ti otporno"ti (&o 1++k[) nij! Y1
pr!poru2ljivo ovi na2ino !njati 9r!kv!nciju u v!0i op"!zi a$ Zbo* to*a "! o! u !"to "a o otpornika uklju2ivati &o&atni CC 2lan$ >i! o ovo principu i at! na "ajtu ;ttp/MMRRR$ro anblack$co M u &!lu PIC Rit; @ clock "p!!&"1 -koliko j! potr!bno ra& ikrokontrol!ra "in;ronizovati "a !k"t!rni ur!%aji a# o! u "! "polja ob!zb!&iti "poljni takt$ Gon9i*uracioni bitovi tr!baju u to "lu2aju biti po&!!ni na :P# `T ili ,S$ <SC@ pin j! po!ljno pov!zati na a"u ikrokontrol!ra pr!ko otpornika v!0! vr!&no"ti (1+k[)# zbo* " anj!nja int!r9!r!ncij!# iako to pov!0ava potronju ikrokontrol!ra$ -koliko nij! potr!bna v!lika brzina izvravanja in"trukcija# a bitna j! potronja i "tabilno"t 9r!kv!ncij!# (npr$ "at na bat!rij!) PIC tr!ba ra&iti "a K@G,zB@++G,z kri"talo $ 'a anj! taktu zbo* anj!* poja2anja int!*ri"ano* o"cilatorno* kola PIC troi anj! "truj! n!*o ina2!$ Za ovakvu vr"tu o"cilatora tr!ba po&!"iti kon9i*uracioni bit o"cilatora na O <SC :P$ -koliko j! bitna "tabilna 9r!kv!ncija a i c!na PIC16984# &obar izbor bi bio kri"talni o"cilator &o 4M,z$ Za nj!*a j! potr!bno kon9i*uracioni bit po&!"iti kao B <SC `T$ 8 ukoliko j! brzina i p!rativ# o*u "! kupiti v!rzij! PIC16F84 ikrokontrol!ra koj! o*u b!z probl! a ra&iti na taktu v!0! o& 4M,z$ 'aalo"t# on! "u i "kuplj!$ 'ji;ov kon9i*uracioni bit potr!bno j! po&!"iti kao O <SC ,S$ - ovo o&u zbo* najv!0!* poja2anja int!*ri"ano* o"cilatorno* kola PIC16F84 troi najvi! !l!ktri2n! !n!r*ij!$ Za ova K na2ina "a kri"talni o"cilatoro pri !njuj! "! "l!&!0a ! a/ Fre!6. ;<.5= K@ @++ 1++ 4FF @+++ <tpornik j! potr!ban "a o za r!tk! tipov! kri"tala$ - najv!0! broju "lu2aj!va o! "! izo"taviti$ ,S o& o*u kori"titi j!&ino tipovi PIC16F84 ikrokontrol!ra pr!&vi%!ni za ra& na vi"oki 9r!kv!ncija a$ 4+++ 8+++ 16+++ @++++ <apa0. ;pF= 68B1++ 1FBK+ 68B1F+ @@B1++ 1FB68 1FB68 1+B68 1+B@@ FB1+ <*/9"-. +"t*6" :P :P `T `T `T `T ,S ,S ,S
3izajn int!rno* o"cilatora za;t!va upotr!bu paral!lno r!zano* kri"tala$ M!%uti # i r!&no r!zani kri"tali o*u "! kori"titi kao izvor takta# ali j!&ino uz !k"t!rno o"cilatorno kolo$ 'ji;ova upotr!ba u ! i kri"talno* o"cilatora &ov!0! &o 9r!kv!ncij! koja o&"tupa o& "p!ci9ikacija u karakt!ri"tika a proizvo%a2a kri"tala$ Y@
-koliko !lit! i ati izuz!tno "tabilnu 9r!kv!nciju o!t! u !"to obi2ni; kori"titi <C`< (!n*$ Ov!n Controll!& Ctal O"cillator) kri"tal! koji u i"to ku0itu i aju kri"tal# *r!ja2 i t!r o"tat$ Za napajanj! *r!ja2a potr!bno j! &ov!"ti "poljni izvor napajanja koji naalo"t &o&atno pov!0ava potronju kola$ ?r!ja2! i t!r o"tato r!*uli! "! kon"tantna t! p!ratura kri"tala izna& "obn! t! p!ratur!# tako &a j! t! p!raturni &ri9t 9r!kv!ncij! kri"tala ini alan$ Gako "u takvi kri"tali (i takva ku0ita) &o"ta "kuplji o& obi2ni;# o!t! i; "a i napraviti "l!&!0i uput"tva "a "ajta ;ttp/MMRRR$ro anblack$co M u &!lu Si pl! Ntal ov!n 9or accurat! clock"$ G!ra i2ki o"cilator obi2no j! zaj!&no "a kon&!nzatori a "pakovan u zaj!&ni2ko tropin"ko ku0it!$ Takvi !l! !nti nazivaju "! k!ra i2ki r!zonatori$ >!0a kapacitivno"t kon&!nzatora pov!0ava "tabilno"t o"cilatora# ali tako%! pov!0ava i vr! ! potr!bno za "tabilizaciju o"cilatorno* kola pri uklju2!nju ikrokontrol!ra ili bu%!nju iz S:==P o&a$ - principu# ova K "tanja kon9i*uracioni; bitova (:P# `T i ,S) razlikuju "! j!&ino u poja2anju int!rno* inv!rtora o"cilatorno* kola to o o*u0ava razli2it op"!* 9r!kv!ncija$ -koliko >a "! &!"i &a n!ki kri"tal n! o! prora&iti u j!&no o&u# probajt! pro !niti kon9i*uracion! bitov! o"cilatora$ 'ajbolj! j! kori"titi o"cilator "a naj anji o*u0i poja2anj! # uz u"lov &a "! nji ! o! po"ti0i !lj!na brzina o"cilatora$ Za &!talj! o tipovi a o"cilatora# po*l!&ajt! 8'F88 "a ;ttp/MMRRR$ icroc;ip$co M$ .!"tita 1 Sa&a znat! 9unkcij! "vi; pinova ikrokontrol!ra# upotr!bu "vi; KF in"trukcija i "vi; 1F r!*i"tara$ M!%uti # t!k "t! po2!li "a u2!nj! $ Skoro "vaki "o9tv!r"ki probl! o! "! r!iti na vi! na2ina$ -koliko !lit! &a "! o&r!%!ni &!o pro*ra a izvrava F puta# potr!bno brojanj! o!t! i pl! !ntovati "abiranj! # o&uzi anj! # inkr! !ntacijo # &!kr! !ntacijo pa 2ak i rotacijo $ "l!&!0i po*lavlji a upozna0!t! "! "a naj2!0! kori0!ni "o9tv!r"ko ;ar&v!r"ki t!;nika a za r!alizaciju o&r!%!ni; za&ataka$
YK
8"! bl!r u oba "lu2aja za vr! ! a"! bliranja ra2una vr!&no"ti koj! "! tr!baju na0i na o&r!%!ni !"ti a$ <n! u "vako "lu2aju oraju biti poznat! pr! ra2unanja$ '!k! o& arit !ti2ki; op!racija koj! o! izvriti a"! bl!r "u "l!&!0!/
D L H M C D
n!*acija (po &ru*o ko pl! !ntu) no!nj! &!lj!nj! o&uo (o"tatak pri &!lj!nju) "abiranj! o&uzi anj!
E!lj!ni priorit!t op!racija o! "! &!9ini"ati za*ra&a a$ 'pr$ (8D6)L5$ <"i at! ati2ki;# a"! bl!r o! izra2unati i vr!&no"ti o&r!%!ni; lo*i2ki; op!racija$ 'a pri !r/
N ko pl! !nt 88 rotacija ul!vo (b!z CarrW Fla*a) 99 rotacija u&!"no (b!z CarrW Fla*a) < 8'3 O `<C P I<C
Priliko ovakvi; vr!&no"ti orat! biti "i*urni &a para !tar n! o! iza0i izvan &ozvolj!ni; *ranica$ I"to tako# orat! obratiti panju na o*u0! zaokruivanj! broja (na pri !r priliko &!lj!nja)$ Sl!&!0a po*o&no"t koju prua MP:85 a"! bl!r j! za !na t!k"ta$ -koliko u pro*ra u i at! ovakav &!o/ TAST=R e ! btfsc goto goto 3 P"RTA,TAST=R P)-& "&5! A Ta"t!r j! pov!zan na C8K pin A 3a li j! ta"t!r priti"nut? A 7!"t! A 'ij! &!la t!k"ta za
i &alj! j! potr!bno pa titi na ko ti n! a potr!b!$ 7de,-+e btfsc goto goto TAST=R TAST=R P)-& "&5!
b&!9in! &ir!ktivo nij! o*u0! za !niti v!0i &!o ko&a (@ ili vi! in"trukcija)$ Za to "! kori"t! akroi$ .ak j! o*u0! u akro pr!n!ti o&r!%!n! para !tr! ranij! &!9ini"an!$ 7de,-+e Te3& 10c)o ex&e)+ btfsc goto goto e+d1 TAST=R P"RTA,3 A I !nuj! naziv! 5o)&,5-+ A <&r!%uj! ulazn! para !tr! P)-&,"&5! A <zna2ava &a "u lab!l! ili r!*i"tri A &!9ini"ani izvan akroa 5o)&,5-+ A 3a li j! ta"t!r priti"nut? P)-& A 7!"t! "&5! A 'ij! A 3ir!ktiva za oznaku kraja akroa
Ga& *o& j! unutar pro*ra a potr!bno na o"novu priti"nuto* ta"t!ra oti0i na Prit ili <tpu &!lov!# &ovoljno j! ka"nij! u !"to *ornj!* ko&a napi"ati "a o oznaku lab!l! akroa i para !tra IT!"t T8ST=CJ$ Gako j! i !no T8ST=C za !nj!na oznaka o&*ovaraju0!* porta i pina# vr!&no"ti port i pin unutar akroa uz!0! ov! vr!&no"ti$ 'a taj na2in "! u akro ubacuju !lj!ni para !tri$ -nutar akroa o*u0! j! kori"titi "v! in"trukcij! kao i u *lavno pro*ra u$ M!%uti # kako "! akro poziva iz "poljno* pro*ra a# po!ljno j! &a lab!l! i r!*i"tri unutar akroa n! &o%u u kon9likt "a &!lovi a pro*ra a izvan akroa$ Zbo* to*a j! potr!bno unutar akroa &!9ini"ati kori0!n! unutranj! i "poljn! lab!l! i r!*i"tr!$ 'a taj na2in o*u0! j! i unutar *lavno* pro*ra a i unutar akroa i ati lab!lu i"to* naziva$ - akrou ona ora biti &!9ini"ana kao int!rna# to zna2i &a joj pro*ra "polja n! o! pri"tupiti$ :ab!l! &!9ini"an! kao !k"t!rn! o*u "! pozivati i iz akroa$ Za ko pl!tno uput"tvo o upotr!bi akroa# &ir!ktiva i arit !ti2ko lo*i2ki; op!racija po*l!&ajt! 3SKK+147 "a ;ttp/MMRRR$ icroc;ip$co M$
YF
)2. Ko&e'" r#
'a po2!tku ovo* uput"tva# alo "! pri2alo o ko !ntari a$ - ovo po*lavlju upozna0!t! "! "a o&i9ikacija a za*lavlja tako &a >a bu&! prila*o%!nij!# i "a na2ini a ko !ntari"anja r!*i"tara koji i aju bitov! razli2iti; 9unkcija$ S!0at! "! za*lavlja koj! "t! &o "a&a kori"tili$ Pr!pravit! *a po "l!&!0! / ADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD A 8utor / A 3atu / A >!rzija / A 'a"lov / A A <pi" ;ar&v!ra / A <pi" "o9tv!ra / A Potr!bni 9ajlovi / p16F84$inc A ADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 2-3& 7-+c2!de ::#";FI' 5616F84 A 3!9ini! upotr!blj!ni ikrokontrol!r 8516F84.-+c9 A -bacuj! naziv! r!*i"tra u pro*ra :#P:"FF < :%(T:"FF < :P%RT=:"; < :R#:"S# K #P D zatita o& 2itanja K %(T D Ratc;&o* taj !r K P%RT= D kanj!nj! po uklju2ivanju K AT "S# D @ri"talni o"cilator K EP "S# D o"cilator al! potronj! K QS "S# D brzi o"cilator K R# "S# D otpornik i kon&!nzator
A DDDDDD Inicijalizacija r!*i"tara DDDDDD cb2oc@ 0x0# T=4P% A Privr! !no 2uvanj! U r!*i"tra T=4PSTATUS A Privr! !no 2uvanj! ST8T-S r!*i"tra SP"RTA A S;a&&oR r!*i"tar za P<CT8 SP"RTB A S;a&&oR r!*i"tar za P<CT5 e+dc A DDDDDD Inicijalizacija vr!&no"ti u ==PC<M ! oriji DDDDDD o)* 21x00 A Po2!tak ==PC<M ! orij! A de 0x00 A Inicijalizacija prvo* bajta A DDDDDD Start pro*ra a DDDDDD "R' 0x00 goto 40-+ A Start pro*ra a A
Y6
A DDDDDD Int!rapt potpro*ra DDDDDD "R' 0x04 movwf T=4P% swapf STATUS,% movwf T=4PSTATUS A Pro"tor za int!rapt potpro*ra $ B0c@ bcf bcf bcf bcf I;T#";,T0IF I;T#";,I;TF I;T#";,RBIF I;T#";,==IF
A .uvanj! "a&raja U r!*i"tra A ST8T-S "a okr!nuti niblovi a u U A i zati u T=MPST8T-S r!*i"tar
A 3ozvoli nov! int!rapt! taj !ra A 3ozvoli nov! int!rapt! pr!ki&a2a A 3ozvoli nov! int!rapt! po pro !ni "tanja A 3ozvoli nov! int!rapt! ==PC<MBa A T=MPST8T-S "a okr!nuti niblovi a A u U$ 3va puta okr!nuti niblovi &aju A prvobitno "tanj! koj! i&! u ST8T-S A 7!&no okr!ni niblov! u "a o A T=MPU r!*i"tru# A a &ru*i put "a U kao o&r!&it! $ A Povratak iz int!rapt rutin!$
A DDDDDD Po2!tak pro*ra a DDDDDD 40-+ b0+@3e2 TRISA movlw movwf movlw movwf movlw b'00000000' TRISA b'00000000' TRISB
b'00000000' A K RRRRR CDDDDDD PS+BPS@ B +++V1/@ ++1V1/4$$$ K RRRRCDDDDDDDD PS8 B 1VU3T +Vtaj !r K RRRCDDDDDDDDD T+S= !k"t!rni takt 1Vc +VM K RRCDDDDDDDDDD T+CS B 1V !k"t!rni takt +Vtakt taj !ra K RCDDDDDDDDDDD I'T=3? B 1VM +Vc K CDDDDDDDDDDDD C5P- B +Vuklj$ 1Vi"klju2!ni otpornici "PTI";:R=' A P"RTA b'00000000' P"RTA SP"RTA b'00000000' P"RTB SP"RTB A 58'G+ A A Inicijalizacija "tanja portova i A S;a&&oR r!*i"tara A A A YP
movlw
movwf S&0)&
b'00000000' A K RRRRRRRCDDDDD C5IF K RRRRRRCDDDDDD I'TF K RRRRRCDDDDDDD T+IF K RRRRCDDDDDDDD C5I= K RRRCDDDDDDDDD I'T= K RRCDDDDDDDDDD T+I= K RCDDDDDDDDDDD ==I= K CDDDDDDDDDDDD ?I= I;T#"; A
'a ovaj na2in pro*ra j! pr!*l!&niji n!*o ranij!# razu ljivij! j! zna2!nj! bitova u <PTI<'LC=? i I'TC<' r!*i"tru# a naj2!0! kori0!ni r!*i"tri "u unapr!& inicijalizovani pravilni r!&o"l!&o # to " anjuj! o*u0no"t n!praviln! inicijalizacij!$ 3!lov! koji "! n! kori"t! lak! j! o&j!&no obri"ati# n!*o i; po potr!bi iznova pi"ati za "vaki novi pro*ra $ Po potr!bi u za*lavlj! "! o*u &o&ati i najkori0!niji &!lovi pro*ra a (npr$ za pauzu# za kori0!nj! ==PC<M ! orij! ili CS@K@ v!z!)# ali j! prakti2nij! o&vojiti i; u za"!bn! c!lin! u "klopu potpro*ra a# na pri !r ovako/ ADDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD A Tab!la za i"pi" ci9r! na :=3 &i"pl!ju A Mora "! nalaziti u bloku o& @F6 bajtova$ T0b2 movf #IFRA,% addwf P#E,F retlw b'01111110' A+ retlw b'00001100' A1 retlw b'10110110' A@ retlw b'10011110' AK retlw b'11001100' A4 retlw b'11011010' AF retlw b'11111010' A6 retlw b'00001110' AP retlw b'11111110' A8 retlw b'11011110' AY Mo!t! i; tako%! ubaciti i u 9or i akroa# to li"tin* pro*ra a 2ini pr!*l!&niji $
Priliko pi"anja pro*ra a n!ki put 0!t! kori"titi T85 a n!ki put par raz aka$ MP:85 za razliku o& o"tali; t!k"t !&itora za T85 po"tavlja 4 (u !"to 8) raz aka$ Zato j! &obro pr! ta panja li"tin*a pro*ra a &o&atno I"r!&itiJ $a" 9ajl$ Za to o!t! kori"titi 8SPICLFI` pro*ra "a ;ttp/MMRRR$! b!&inc$co M $ Y8
C!zultat 8'3 op!racij! na& bitovi a# bi0! 1 "a o ako j! na oba bita pri"utna lo*i2ka 1$ -koliko "! o"tali bitovi a"kiraju# u U 0! "! na0i j!&ino "tanj! tr!0!* bita PCIG8Z r!*i"tra$ 'a"uprot 8'3 op!raciji# r!zultat I<C op!racij! &aj! 1 ukoliko j! bar 1 bit na lo*i2koj 1$ - to "lu2aju (bu&u0i &a j! tr!0i bit r!"!tovan 5CF in"trukcijo )# "tanj! tr!0!* bita SP<CT8 r!*i"tra zavi"i0! j!&ino o& "tanja tr!0!* bita U r!*i"tra# koj! j! pr!uz!to iz PCIG8Z r!*i"tra$ <"tali bitovi u SP<CT8 r!*i"tru za&ra0! "voja "tanja# j!r I<C op!racija "a bilo kojo vr!&no0u bita i nulo # &aj! "a taj bit$
YY
)4. Ko&%re!#(
Go pr!"ija j! po"tupak koji "! troi anj! ! orij! za 2uvanj! v!0!* broja po&ataka !9ika"niji " !tanj! po&ataka u ! oriji$ <"novni pr!&u"lov j! &a "! u po&atci a nalaz! prazni (n!i"kori0!ni) bitovi$ 'a pri !r# ukoliko j! potr!bno u ==PC<M "ni ati *rup! o& &va bita (kao u pri !ru "a bu%!nj! iz S:==P o&a)# t!ta j! n! i"kori"titi i o"tatak bitova u bajtu$ 8 ukoliko nij! poznata kona2na v!li2ina (kraj) ! ori"ani; po&ataka# o*u "! brojati ciklu"i "ni anja i po zavr!tku "ni anja "ni iti u npr$ za&njoj ==PC<M a&r!"i (+NKF)$ -koliko "! "ni aju "a o @ bita# on&a j! ra"poloiva ! orija u ko pr!"ovano "tanju 4 puta (8 bita M @ bita) v!0a o& ak"i aln!$ Za ==PC<M to zna2i &a u !"to 64 o" obitna# po"taj! &o"tupno 1@8 2!tvorobitna (1@8 nibla) ili @F6 &vobitna &!la$ Go pr!"ija# nij! o*rani2!na "a o na ==PC<M ! oriju$ Mo! "! b!z probl! a kori"titi u obi2noj kao i u pro*ra "koj ! oriji u tab!la a$ 'or alno# u "lu2aju pro*ra "k! ! orij! po&atk! u tab!li nij! o*u0! !njati# v!0 "a o 2itati$ Pr!tpo"tavi o &a j! potr!bno prva &va bita iz r!*i"tara ST8'7=1# ST8'7=@# ST8'7=K i ST8'7=4 ko pr!"ovati u r!*i"tar ST8'7=$ movlw andwf movwf rlf rlf movlw andwf iorwf rlf rlf rlf rlf movlw andwf iorwf rrf rrf rrf movlw andwf iorwf b-&7 ST4.1 ST4.0 00000011b STA;$=1,% STA;$= STA;$=2,F STA;$=2,F 00001100b STA;$=2,% STA;$=,F STA;$=3,F STA;$=3,F STA;$=3,F STA;$=3,F 00110000b STA;$=3,% STA;$=,F STA;$=4 STA;$=4 STA;$=4 11000000b STA;$=4,% STA;$=,F ST3.1 A Ma"kiranj! n!potr!bni; bitova A Prva &va bita iz ST8'7=1 r!*i"tra u U A a o&atl! u ST8'7= r!*i"tar A Cotacija bitova tako &a A &o%u na pravo !"to A Ma"kiranj! n!potr!bni; bitova A Sl!&!0a &va bita iz ST8'7=@ r!*i"tra u U A a o&atl! u ST8'7= r!*i"tar A Cotacija bitova tako &a A &o%u na A pravo A !"to A Ma"kiranj! n!potr!bni; bitova A Sl!&!0a &va bita iz ST8'7=K r!*i"tra u U A a o&atl! u ST8'7= r!*i"tar A Cotacija bitova A tako &a &o%u A na pravo !"to A Ma"kiranj! n!potr!bni; bitova A Za&nja &va bita iz ST8'7=4 r!*i"tra u U A a o&atl! u ST8'7= r!*i"tar b-&0 ST1.0
ST2.0
ST1.1
1++
Proc!" vra0anja u prvobitno "tanj! (iz ST8'7= u ST8'7=1# ST8'7=@# ST8'7=K i ST8'7=4) naziva "! &!ko pr!"ija$ movf movwf rlf rlf movf movwf rlf rlf movf movwf rlf rlf movwf STA;$=,% STA;$=1 STA;$=,F STA;$=,F STA;$=,% STA;$=2 STA;$=,F STA;$=,F STA;$=,% STA;$=3 STA;$=,F STA;$=,% STA;$=4 A ST8'7= u U A Prva &va bita u ST8'7=1 A Cotacija bajtova tako &a A &o%u na pravo !"to A ST8'7= u U A Sl!&!0a &va bita u ST8'7=@ A Cotacija bajtova tako &a A &o%u na pravo !"to A ST8'7= u U A Sl!&!0a &va bita u ST8'7=K A Cotacija bajtova tako &a A &o%u na pravo !"to A Za&nja &va bita u ST8'7=4
- ovoj &!ko pr!"iji na ta2nu vr!&no"t po"tavlj!ni "u "a o nulti i prvi bit u "vako r!*i"tru# a "tanj! o"tali; bitova zavi"i o& "tanja bitova u o"tali r!*i"tri a$ -koliko j! to n!po!ljno# o"tali bitovi o*u "! "!tovati ili r!"!tovati a"kiranj! $ B"t*6a 5a :*tre+a/ !*%pre "1u +r*1 #e,*6a 1 @ K 4 F 6 P 8 8 4 8 @ 8 4 8 1 B"t*6a 5a pu/e +a1t*6e 8 (1) 8 (1) @4 (K) 8 (1) 4+ (F) @4 (K) F6 (P) 8 (1) 'a i"ti na2in o*u0! j! izvriti ko pr!"iju i &!ko pr!"iju po&ataka koji "a&r! vi! o& 8 bitova# "a ti to "! on&a po&atci uv!k "ni aju u vi! o& j!&no* bajta$ <"i ovo*# po"toj! i no*o ko plikovaniji na2ini ko pr!"ij! (npr$ ZIP al*orita )$ 5u&u0i &a oni pr!vazilaz! okvir! ovo* uput"tva# ov&! n!0! biti raz atrani$ Sa ko pr!"ijo broja bitova "a koji a o" obitni bajt nij! &!ljiv# po"tupak j! alo t!i$ Potr!bno j! o&r!&iti ini alan broj puni; bajtova# ko pr!"ovati bitov! u nji;# a zati i; r!&o "ni ati u ! oriju$
I ajt! na u u &a "! ==PC<M ! orija ItroiJ za vr! ! "ni anja$ Zbo* to*a nij! po!ljno "ni ati "vaki &vobitni &!o po"!bno$ Si*urnij! j! "a2!kati &a broj &!lova &o"ti*n! c!lobrojni broj bajtova# i t!k on&a "ni iti c!o bajt u ==PC<M$
1+1
ZV+? STATUS,? A I9 Z V + I3&A !l"! *oto I"ti R0S2-c-&- A t;!n *oto Cazliciti '! I"ti
Cazli2iti
Gao to pri !0uj!t!# u pro*ra u "! n! t!"tira r!alno "tanj! r!*i"tara# v!0 j!&ino lo*i2ko "tanj! o&*ovaraju0!* 9la*a (o&no"no bita) unutar r!*i"tra$ Gako 0! "tanj! 9la*a &ir!ktno zavi"iti o& r!zultata pr!t;o&n! in"trukcij! (F `<C F V + pa j! Z "!tovan) koja uti2! na nj!*ovo "tanj!# upravo j! nj!*ovi t!"tiranj! o o*u0!no *rananj!$ Probl! ! o! izazvati i razu !vanj! pr!"koka nar!&n! in"trukcij!$ 'ai !# priliko izvr!nja bt9"c ili bt9"" in"trukcij!# n! a r!aln! potr!b! (o"i lak! 2itljivo"ti takvo* pro*ra a) za &v! *oto in"trukcij!# j!r 0! pro*ra u "lu2aju &a j! o&*ovaraju0i u"lov i"punj!n ("!tovan ili r!"!tovan 9la*) pr!"ko2iti nar!&nu in"trukciju$ movlw xorwf btfss goto I3&- ... .12 BR"$,% A 5roj 1@? A -por!&i 3a STATUS,? A I9 Z V 1 R0S2-c-&- A !l"! *oto Cazliciti A t;!n I"ti ZV1? '! Cazli2iti
R0S2-c-&- ...
A Cazliciti
I"ti
Iako j! j!&no"tavnij! al*orit ! t!"tiranja o*u0! napraviti b!z &v! *oto in"trukcij!# &ok n! u"avrit! pro*ra iranj! upotr!bljavajt! prvi oblik ("a &v! ?<T< in"trukcij!)$ Por!& bt9"c i bt9"" in"trukcija# t!ko j! razu !ti i inc9"z i &!c9"z in"trukcij!$ Po*l!&ajt! ilu"traciju nji;ov! pri !n! u al*orit u koji broji o& @F &o +/ movlw movwf S10+ decfsz goto B)o>0 .25 BR"$ BR"$,F S10+ A $@F A u 5C<7 A 5C<7V+? A 'ij!# vrati "! A 7!"t!$ 3a
1+@
1+K
movf xorlw btfsc goto xorlw btfsc goto xorlw btfsc goto goto
''' O 'R' A 3a li j! to "lovo JCS (? `<C (? `<C C) V C) STATUS,? A 3a li "u i"ti? E0be22 A 7!"u# i&i na :ab!l@ 'R' O '?' A 3a li j! to "lovo JZS (C `<C (C `<C Z) V Z) STATUS,? A 3a li "u i"ti? E0be23 A 7!"u# i&i na :ab!lK E0be24 A 'ij! nij!&na vr!&no"t o& ponu%!ni;$ A I&i na :ab!l4
- ovo "lu2aju a"! bl!r 0! priliko a"! bliranja pro*ra a izra2unati vr!&no"t J?S `<C JCS (oznaka d ozna2ava `<C lo*i2ku op!raciju) i po"tavi0! &obij!nu vr!&no"t na r!zultat$ 'a taj na2in ut!%!no j! vr! ! potr!bno za ru2no `<CBovanj!$ 7!&no `<CBovana vr!&no"t ponovo "! `<CBuj! i takva "! upor!%uj! "a o"tali $ 1+4
<"i `<C op!racij! t!"tiranj! j!&nako"ti t!"tiranj! Z!ro 9la*a$ movlw subwf btfss goto goto ''' SE"G",% STATUS,? R0S2-c-&I3&-
&va broja i
A Slovo J?S? A U V S:<>< B K+ A 3a li j! U V + (bi0! ka&a "u vr!&no"ti i"t!)? A >r!&no"ti "! razlikuju A >r!&no"ti "u i"t!
-koliko i at! 2!"tu pro !nu vr!&no"ti r!*i"tra koji t!"tirat! b!z o*u0no"ti t!"tiranja nj!n! j!&nako"ti "a za&ato vr!&no0u n!po"r!&no nakon pro !n! (npr$ t!"t TMC+ r!*i"tra)# pouz&anij! j! t!"tirati pr!kora2!nj! vr!&no"ti t!"to CarrW (u !"to Z!ro) 9la*a$ <vo j! bolji na2in j!r j! o*u0! &a iz !%u &v! uza"topn! prov!r! (po*otovu ukoliko kori"tit! &u! int!rapt! ili r!tko t!"tirat! j!&nako"t) r!*i"tar &o%! a zati i pr!%! pr!ko za&at! vr!&no"ti pr! prov!r!$ CarrW 9la* bi (za razliku o& Z!ro 9la*a) bio "!tovan i pri &o"tizanju vr!&no"ti $+# a i pri pr!kora2!nju$ 3!taljniji po"tupak pr!kora2!nja nau2i0!t! u nar!&no po*lavlju$
1+F
Priliko o&uzi anja broj @ "! !nja u "voj &ru*i ko pl! !nt (+NF=) i ova vr!&no"t "! "abira "a vr!&no0u iz r!*i"tra 5C<7$ Sto*a# ukoliko j! 5C<7 anji o& @ n!0! biti "!tovan CarrW 9la*# pa 0! "! &alj! izvravanj! na"taviti o& lab!l! Manji$ Gako "! CarrW 9la* "!tuj! i ka&a "u broj!vi j!&naki# ukoliko j! 5C<7 v!0i ili j!&nak broju @ pro*ra 0! "! na"taviti o& lab!l! >!ci$ -koliko "! okr!n! 9or ula U V 5C<7 B @ u U V @ B 5C<7 &ru*a2ija "tanja$ 'a pri !r/ movf sublw btfss goto goto BR"$, % .2 STATUS,# Gec40+>A 5C<7 u U A U V @ B 5C<7 A T!"tiraj pr!kora2!nj! A Ue+A 5C<7 a @ A UaV+A 5C<7 eV @ o*u0! j! t!"tirati alo
I u ovo "lu2aju CarrW 9la* 0! biti "!tovan ka&a "u broj!vi j!&naki$ 3a bi !li ini"ali j!&nako"t o*u0! j! ko binovati j!&an o& ovi; al*orita a "a prov!ro j!&nako"ti/ movlw xorwf btfsc goto xorwf subwf btfss goto goto .2 BR"$,% STATUS,? I3&BR"$,% BR"$,% STATUS,# 40+>GecA@uU A -por!&i A 3a li "u i"ti? A 5C<7 V @ A >rati inicijalnu vr!&no"t (@) u U &upli `<C A - !"to ovo*a o*lo "! pi"ati i ovlR $@ A U V 5C<7 B @ A T!"tiraj pr!kora2!nj! A 5C<7 e @ A 5C<7 a @
3upla `<C op!racija upotr!blj!na j! &a bi vr!&no"t "a kojo "! t!"tira 5C<7 o*la biti un!ta u "a o j!&noj in"trukciji# to o o*u0ava laku iz !nu t!"tiran! vr!&no"ti$
1+6
T!"tiranj! j!&nako"ti o&uzi anj! in"trukcij!$ movlw subwf btfsc goto btfss goto goto .2 BR"$,% STATUS,? I3&STATUS,# Gec40+>-
u !"to `<CBovanj! # po"ti*nuta j! ut!&a &v! A A U V 5C<7 B @ A 3a li j! r!zultat +? A 5C<7 V @ A 'ij!$ T!"tiraj CarrW 9la*$ A 5C<7 e @ A 5C<7 a @
1+P
o!t! &ir!ktno izvriti nji;ovu za !nu b!z upotr!b! &o&atno* BR"$1,% BR"$2,% BR"$1,F BR"$2,F A 5C<71 u U A 5C<71 d 5C<7@ u U A U d 5C<71 u 5C<71# U "! n! A U d 5C<7@ u 5C<7@
!nja n!
<vaj al*orita o*u0 j! j!r "! &uplo `<CBovana vr!&no"t bilo koji broj! !nja$ Potpuno i"ti na2ino o*u0! j! pro !niti "a&9raj 5C<7 i U r!*i"tra$ xorwf xorwf xorwf BR"$,F BR"$,% BR"$,F A A A
1+8
Pr!tpo"tavi o &a j! "! r!*i"tar <FS=T uv!0ava pri "vako prola"ku kroz pro*ra i &a "! na o"novu nj!*ovo* tr!nutno* "tanja izvravaju &alji pro*ra i j!&an za &ru*i $ 'a kraju "vo* izvr"avanja "vaki pro*ra izvrava *oto Poc in"trukciju koji "! na"tavlja iz po2!tka$ I"to kao u tab!la a i ov&! j! potr!bno prov!riti &a li pro*ra pr!lazi *ranicu o& @F6 in"trukcija$ Poc incf movlw xorwf btfsc clrf movf S@o@ addwf goto goto goto goto goto goto goto goto "FS=T,F .8 "FS=T,% STATUS,? "FS=T "FS=T,% P#E,F P)o*)011 P)o*)012 P)o*)013 P)o*)014 P)o*)015 P)o*)016 P)o*)017 P)o*)018 A -v!0aj <FS=T A 5roj pr!kora2!nja A A 3a li j! na"tupilo pr!kora2!nj!? A 7!"t!# inicijalizuj <FS=T A <FS=T u U A - U "! nalazi broj o& + &o P A UV+ A UV1 A UV@ A UVK A UV4 A UVF A UV6 A UVP no*o o& tab!l!$
Svakako o!t! zapaziti &a "! ovaj po"tupak n! razlikuj! <*rani2!nja v!zana za nji; va! i u ovo "lu2aju$
- *ornj! pro*ra u u !"to za&nj! intrukcij! (*oto Pro*ra 8) o*lo "! o& a; na"taviti "a izvravanj! o" o* pro*ra a$ Ipak# ovako pro*ra iz*l!&a pr!*l!&nij! i laki j! za analizu$ Iako j! ti ! utro!na j!&na in"trukcija vi!# analiza ovakvo* pro*ra a j! prili2no j!&no"tavnija$ Morat! i ati u vi&u &a 0! "! u pro*ra u v!rovatno javljati *r!k!$ Cazu ljiv i &obro ko !ntari"an pro*ra olakava nj!*ovu nakna&nu i"pravku$ - protivno # na0i 0!t! "! u *o ili naiz*l!& b!" i"l!ni; in"trukcija$ .!"ta j! pojava &a "! priliko ka"nij!* razvoja pro*ra a vi! vr! !na utroi na nj!*ovu analizu# n!*o na pi"anj! novo* pro*ra a iz po2!tka$ 'ij! ni 2u&o to "! ko& n!razu ljivi; pro*ra a naziva pa*!ti ko&$
1+Y
Svaki prolazak kroz p!tlju troi 4ZS$ 8&&lR traj! 1# bt9"" 1 i *oto @ZS$ I u tr!nutku izla"ka iz p!tlj! (UV+) kanj!nj! j! tako%! 4ZS$ Potpro*ra za "voj ra& n! kori"ti r!*i"tr!$ 7!&ino U$
- "lu2aju &a j! to pot!bno# o*u0! j! u U za&ati !lj!nu &uinu pauz! (4ZS D U) i "ko2iti &ir!ktno na Pau4$ I ajt! na u u &a j! i Call in"trukciji potr!bno @ZS$ Za &u! pauz!# ora "! kori"titi r!*i"tar (u ovo potpro*ra a j! u U potr!bno za&ati !lj!ni broj o*u0! r!alizovati pauz! o& 1 &o @FF S (f S)$ J03 movwf Pe&1 movlw call nop nop decfsz goto return PAU?A 0xF8 P0!4 PAU?A,F Pe&1 "lu2aju P8-Z8)$ Pr! poziva ili"!kun&i kanj!nja$ 'ji j!
A U u P8-Z8 r!*i"tar A Inicijalizacija vr!&no"ti A @48 D 4 H @ V YY4 ov&! A <"tatak# A za jo 6ZS A S anji vr!&no"t u r!*i"tru A 7o p!tlji$ A Povratak iz potpro*ra a
-koliko >a "! ovaj na2in 2ini pr!vi! t!ak# o!t! i"probati Pic:oop" pro*ra koji *!n!ri! &!o potr!bno* kT&a u zavi"no"ti o& un!to* vr! !na kanj!nja i brzin! o"cilatora$ 8utor to* pro*ra a pr!"tao j! &a pro*ra ira ikokontrol!r!# izbri"ao j! Pic:oop" "a "vo* "ajta i "a&a kol!kcionira "tar! vi&!o i*ric!$ Pro*ra "a po"tavio na "vo "ajtu 2iji link o%!t! na0i na kraju ovo* uput"tva$ -koliko n! !lit! ita in"talirati onlin! *!n!rator kanj!nja i at! na linku ;ttp/MMRRR$picli"t$co Mc*iBbinM&!laW$!N!$ Iako iz*l!&a kao pro*ra # ra&i "! o linku$ 11+
Gako "u "! plovi j!&nobitni# oni "! o*u ko pr!"ovati i tako zauz!ti "a o 144M8 V 18 ==PC<M a&r!"a$ Gako ==PC<M PIC16F84 ikrokontrol!ra i a 64 a&r!"a# to zna2i &a bi u nj!*a bilo o*u0! "ni ati "! plov! ak"i alno (64D8)M144 V K#F &ana1 -koliko >a j! ovaj p!rio& pr!vi! kratak (i&!t! na o& or u =*ipat)# orat! n!to rtvovati$ Ili 0!t! kupiti &o&atnu ==PC<M ! oriju# ili 0!t! pov!0ati pauzu iz !%u "! plova$ Po*l!&ajt! ta "! &o*a%a ukoliko izab!r!t! &ru*o r!!nj!$ - zavi"no"ti o& ra"poloivo* vr! !na (i &ubin! nov2anika)# o& or u =*iptu o! trajati i &o 1F &ana (nakon to*a po"taj! &o"a&no)$ Zna2i# za 1F &ana o!t! u ==PC<M "ni iti ak"i alno (64D8)M1F V K4 "! pla &n!vno$ S! plovi bi "! uzi ali (otprilik!) "vaki; (@4D6+)MK4 V 4@ inuta$ <vo j! i &alj! "a"vi &ovoljno$ <v&! "! javlja &ru*i probl! $ 3okl! 0! biti &ovoljno? <bjanj!nj! &aj! t!orija "! plova$ Po njoj j! bilo koji "i*nal o*u0! pr!&"taviti "! plovi a uz!ti; na 9r!kv!nciji koja j! bar &uplo v!0a o& ak"i aln! 9r!kv!ncij! ori*inalno* "i*nala$ 6ta to zna2i? -koliko j! za p!rio& o& @4 2a"a o*u0a pojava ak"i alno &v! pli ! i &v! o"!k!# to pr!&"tavlja ak"i alno 4 pro !n! lo*i2ko* "tanja na pinu$ 3a bi "! "vaka pro !na "i*urno &!t!ktovala# "! plovanj! ora biti bar &uplo br! o& ti; pro !na# o&no"no bi0! potr!bno bar 8 "! pla &n!vno$ <vo j! ini alni &ovoljan broj "! plova# ali vi! "! plova 0! "vakako v!rnij! prikazati "i*nal$ 'a pri !r# po i"toj t!oriji "vaki analo*ni au&io "i*nal (@+,z O @+ k,z) o! "! pr!&"taviti &i*italni "i*nalo "! plovani na (&ovoljni;) 4+k,z# !%uti tako ali broj! "! plova j! t!ko razlikovati violinu o& ba" *itar!$ 3ovoljan kvalit!t po"ti! "! t!k pri &!"!to"truko v!0oj 9r!kv!nciji (@++k,z)$ Po"toji li jo n!ki na2in? Po"toji i o&no"i "! na pov!0anj! r!zolucij! "! plova$ To j! tr!0i probl! $ 111
3o "a&a j! r!zolucija "! plova bila j!&nobitna# o&no"no o o*u0avala j! "a o &va lo*i2ka "tanja (i aMn! a vo&!)$ S!0at! "! &a j! pri u2!nju int!rapta pr!&la*an !to& !r!nja nivoa r!k! pr!ko vi! ulazni; pinova$ -koliko "! za !r!nj! kori"t! K pina# o*u0! j! &obiti "l!&!0a "tanja/ +++# ++1# +11 i 111$ <na "! o*u konv!rtovati u binarni oblik# i ta&a "! &obija ++# +1# 1+ i 11$ >i&it! &a j! &vobitno r!zolucijo o*u0! pr!&"taviti 4 nivoa r!k!$ Zna2i# ukoliko "! za !r!nj! nivoa vo&! kori"t! tri ulazna pina (u !"to j!&no*)# o*u0! j! prikazati 2!tiri nivoa r!k! uz &va bita unutar "! pla$ 3uplo vi! bitova &ono"i i &uplo pov!0anj! ! orij!$ -*lavno j! potr!bno o&abrati ko pro i" iz !%u &ovoljno* broja "! plova i nji;ov! r!zolucij!# a to op!t zavi"i o& konkr!tni; potr!ba !r!nja$ 'a pri !r za po2!tni "lu2aj ( !r!nj! na "vaki; 1+ inuta) uz tri "on&! bi0! potr!bno (6D@4)D@ V @88 "! pla# o&no"no @88M8 V K6 bajtova &n!vno$ M!%uti # "a&a 0! biti o*u0! &o"ta (2!tiri puta) pr!ciznij! pratiti pov!0anj! i " anj!nj! nivoa$ Pauzu iz !%u "! plova tr!ba to pr!ciznij! o&r!&iti$ To j! 2!tvrti probl! $ ?r!ka o& j!&n! "!kun&! unutar j!&no* "ata za p!tna!"t &ana nara"la bi na *r!ku o& 6 inuta$ '!ka&a to o! biti zan! arljivo# ali n!ka&a n!$ Zbo* to pr!ciznij!* vr! !na "! plovanj! "! u*lavno izvrava nakon pr!kora2!nja taj !ra (ili unutar int!rapta izazvani; taj !ro )$ S! plovanj! nij! o*rani2!no "a o na !r!nj! I!*zoti2ni;J "i*nala kao to j! nivo r!k!$ - i&u0! po*lavlju nau2i0!t! kako "! "! plovanj! o! !9!ktno i"kori"titi unutar &!bouncin*a$
11@
4). Debo3'5#'g
Canij! "t! vi&!li &a "! &!bouncin* o! r!alizovati t!"tiranj! ta"t!ra# pa kratki 2!kanj! # i on&a ponovni t!"tiranj! $ 5olji na2in pr!&"tavlja t!"tiranj! ta"t!ra vi! puta# i iz !nu j!&ino ukoliko j! u "vi "lu2aj!vi a t!"tiranja &obij!no novo "tanj!$ Za t!"tiranj! "! b!z probl! a o! i"kori"titi "! plovanj!# "a to ta&a ranij! opi"ani; probl! a n! a$ po*o&no0u to
3ovoljno j! napraviti p!tlju (ili p!tlju unutar p!tlj!)# uz!ti "! pl i r!"!tovati p!tlju ukoliko "! "! pl pro !nio# kako bi t!"tiranj! ponovo po2!lo iz po2!tka$ -koliko "! p!tlja zavri# to zna2i &a "! "tanj! pr!ki&a2a nij! pro !nilo "vo vr! ! trajanja p!tlj!# pa tako za&nji "! pl o! biti uz!t kao "tabilno "tanj! pr!ki&a2a$ <vako j!&no"tavan princip i a naravno i par ana$ Pro*ra "! tr!ba bar @+ S vrt!ti u p!tlji# i za to vr! ! n!0! o0i &a izvrava o"tal! op!racij!$ -koliko kontakti pr!ki&a2a n!pr!"tano varni2!# pro*ra n!0! o0i &a iza%! iz p!tlj!$ <"i to*a int!rapti o*u izazvati privr! !n pr!"tanak ili &u! vr! ! t!"tiranja pr!ki&a2a$ 3obar j! j!&ino za pro*ra ! *&! "! o! &ozvoliti 2!kanj! na priti"nuto"t (ili otput!no"t) ta"t!ra$ - o"tali "ituacija a tr!balo bi kori"titi t!"tiranj! pr!ki&a2a unutar int!rapta izazvani; taj !ro $ Gako "! int!rapti izazvani taj !ro pozivaju prili2no r!tko# potr!bno j! &a "! plovanj! traj! to kra0!# o&no"no &a "! u j!&no prolazu uz ! "a o j!&an "! pl# upor!&i "a pr!t;o&ni i " anji (uv!0a) unapr!& za&at broja2 "! plova$ -koliko j! "a&anj! "tanj! "! pla &ru*a2ij! o& pr!t;o&no*# broja2 bi "! ponovo inicijalizovao$ Ga&a broja2 (napokon) i"t!kn!# potr!bno j! "aoptiti *lavno pro*ra u &a j! pr!ki&a2 priti"nut (otput!n)$ Go unikacija iz !%u *lavno* pro*ra a i int!rapta nij! ba j!&no"tavna$ -*lavno "! pri !njuj! ko unikacija pr!ko par r!*i"tara opt! na !n!$ 'a pri !r "!tovan bit + r!*i"tra T8ST=CI zna2io bi &a j! priti"nut ta"t!r I:=><J# a "!tovan bit 1 &a j! priti"nut ta"t!r I3=S'<J$ ?lavni pro*ra tr!bao bi p!rio&i2no t!"tirati ov! bitov!# i u zavi"no"ti o& nji;ovo* "tanja pr!&uzi ati o&r!%!n! akcij!$ - "l!&!0i po*lavlji a upozna0!t! "! "a par ko unikacioni; protokola$ 7!&an &!o j! ;ar&v!r"ki int!*ri"an u "avr! !niji PIC ikrokontrol!ri a$ Si*urno 0!t! pri !titi ko pro i" iz !%u broja pinova koji "! kori"t! za ko unikaciju i brzin! ko unikacij!$
11K
Groz takvu r!u probija "! na *lavni junak O n!rvozni potar$ <n "a kov!rt! 2ita &v! in9or acij!$ 'aziv (broj) ulic! i broj z*ra&!$ Za o2itavanj! ko pl!tn! a&r!"! ! orija bi orala i ati 2ak 16 ulazni; pinova (8 za ulicu i 8 za broj)$ <vo "! u*lavno r!ava ultipl!k"o a&r!"n! a*i"tral! (vi! o principu ultipl!k"a nau2i0!t! ka"nij!)# tako &a "! u ! oriju najpr! alj! broj r!&a# a za nji i broj kolon!$ '!op;o&na "in;ronizacija ob!zb!%uj! "! pr!ko &va (ovo j! "vakako anj! o& o"a ) &o&atna pina$ Potar kao to "i*urno v!0 znat! o! obavljati &v! op!racij!$ Mo! &on!ti p!nziju# ili (&on!ti ra2un i) o&n!ti p!nziju$ 3a li potar &on!ti ili o&n!ti p!nziju (2itati ili upi"ivati po&atk! u ! oriju) zavi"i o& lo*i2ko* "tanja U= (!n*$ .rit! Enabl!) pina$ I na kraju ! orija i a ulazni 3I' (!n*$ Data In) i izlazni 3<-T (!n*$ Data O3") pin$ 'ji; j! o*u0! pov!zati &ir!ktno na &va -MI pina ikrokontrol!ra$ M!%uti # kako j! "a o j!&an o& nji; tr!nutno u 9unkciji u zavi"no"ti o& "tanja U= pina# oni "! b!z probl! a o*u "pojiti j!&an za &ru*i$ -koliko "! "poj!# &obija "! j!&an -MI pin pr!ko ko*a j! o*u0! upi"ati ili pro2itati j!&an bit po&ataka "a pr!&at! a&r!"!$ Tako "! j!&an pin kori"ti i za ulaz i za izlaz (i"to kao i pinovi ikrokontrol!ra)$ 'aravno# priliko 2itanja po&atka -MI pin ikrokontrol!ra pov!zan za a*i"tralu po&ataka ("poj!ni 3I' i 3<-T pin) orao bi biti &!9ini"an kao ulazni (pr!ko TCIS8 ili TCIS5 r!*i"tra)# a priliko upi"ivanja kao izlazni$
114
To bi bilo to za 2itanj! i pi"anj! j!&no* bita$ Za 2itanj! i pi"anj! j!&no* bajta o*u0! j! r!&o 2itati (ili pi"ati) u *rupa a o& 8 bitova# ili kao ko& Co o&or! 64 ko pjut!ra paral!lno a&r!"noj a*i"trali &o&ati jo "!&a 4164 3C8M ! orija$ to "lu2aju v!li2ina a&r!"n! a*i"tral! o"taj! i"ta# a a*i"trala po&ataka u !"to j!&no* zauzi a 2ak 8 provo&nika (ili 16 ukoliko "! ulazni i izlazni pinovi ! orij! n! "poj! j!&an za &ru*i)$ Mo*u "! kori"titi i 4464 ! orij! koj! i aju u "!bi 64Gbita D 4 (6FFK6 D 4 bitova)# o&no"no uz i"tu a&r!"nu a*i"tralu i aju 4 pina na a*i"trali po&ataka ("poj!ni 3I' i 3<-T 9or iraju 31# 3@# 3K i 34)$ Sa&a ono t!ko$ Svaka bit"ka 3C8M 0!lija "a"toji "! o& j!&no* kon&!nzatora i j!&no* tranzi"tora$ Gako bi "! kon&!nzator po"l! par S potpuno i"praznio# n! bi vi! bio u "tanju 2uvati po&atak# pa "! orao povr! !no (npr$ "vak! &ru*! ili"!kun&!) o"v!avati$ Tako unutar Sp!ctru ko pjut!ra Z8+ ikroproc!"or paral!lno "a izvravanj! in"trukcija povr! !no o"v!ava 3C8M ! oriju# &ok ko& C64 vi&!o kontrol!r o"v!ava ! oriju za vr! ! &!la in"trukcij"ko* ciklu"a u ko ! ikroproc!"or n! pri"tupa ! oriji$ Mikrokontrol!r bi zna2i orao povr! !no pro2itati "a&raj c!lokupn! ! orij! (ili bar oni; ! orij"ki; lokacija koj! kori"ti)# a zati i; ponovo upi"ati$ T!or!t"ki# 3C8M ! oriju kapacit!ta j!&no* bita o!t! &obiti pov!zivanj! kon&!nzatora &ir!ktno na -MI pin ikrokontrol!ra$ -koliko u "! najpr! o&r!%!no vr! ! &ov!&! lo*i2ka 1# kon&!nzator 0! "! napuniti# i ukoliko "! ka"nij! o2ita nj!*ovo "tanj! taj pin 0! &avati lo*i2ku 1$ -koliko u "! pak &ov!&! lo*i2ka +# kon&!nzator 0! "! i"prazniti# i ka"nij! 0! pri o2itavanju &avati lo*i2ku +$ 3a "! n! bi vr! !no i"praznio# ora "! povr! !no o2itati i o"v!iti$ 3C8M ! orija i a vi! ana n!*o pr!&no"ti$ Punj!nj! i pranj!nj! kon&!nzatora za;t!va o&r!%!no vr! !# tako &a j! vr! ! pri"tupa (!n*$ acc!"" ti !) 0!lija a "porij! o& o"tali; vr"ta ! orija$ M! orija n!0! ra&iti u "lu2aju pokuaja o2itavanja ili upi"a v!0o brzino o& &ozvolj!n!$ <"v!avanj! ! orij! troi &o"ta ikrokontrol!r"ko* vr! !na$ Zbo* to*a "! 3C8M ! orija "v! r!%! kori"ti i por!& ni"k! c!n!$ Cazvoj! !l!ktronik! pojavljuj! "! SC8M ("tati2ka C8M ! orija) po pri"tupa2noj c!ni$ - njoj "! ! orij"k! 0!lij! "a"toj! o& n!koliko tranzi"tora pov!zani; u 9or i Flip Flopa# tako &a i o"v!avanj! nij! potr!bno# a j!&no upi"an po&atak o"taj! u SC8M ! oriji "v! &o upi"a "l!&!0!* ili &o *ubitka napona napajanja$ Za razliku o& 3C8M# u SC8M ! oriji j! naput!n princip ultipl!k"a a&r!"n! a*i"tral! (zbo* v!0! brzin!)# tako &a "! a&r!"a !lj!no* bita o! za&ati u j!&no koraku$ Gla"i2an nj!n pr!&"tavnik bila bi npr$ FF64 ! orija (SC8M 8Gbita D 8)$ '!zaobilazna j! i =PC<M ! orija$ <na na "!bi i a ali "takl!ni IprozorJ pr!ko ko*a "! o! bri"ati$ 'ai !# po&aci "! u =PC<M o*u "ni ati pr!ko o&*ovaraju0i; pro*ra atora "p!cijalno proc!&uro (kao "ni anj! ko&a u PIC)$ Taj proc!" obi2no za;t!va vi! napon! o& ra∋ (H1@> u !"to HF>)$ Ga&a "! po&aci j!&no "ni ! u =PC<M ! oriju# n! o*u "! "ni iti nar!&ni "v! &ok "! =PC<M o&r!%!no vr! ! n! izloi ultraljubi2a"toj "v!tlo"ti$ Taj proc!" ubrzava Icur!nj!J na!l!ktri"anja i"pro*ra iran! =PC<M ! orij!# i na taj na2in "! =PC<M obri!$ T!k on&a j! o*u0! ponovno pro*ra iranj!$ >!0inu =PC<M ! orija o*u0! j! po"taviti u "l!!p o&# &ovo%!nj! lo*i2k! 1 na nj!n C= (!n*$ C;ip Enabl!) pin$ 11F
-koliko j! na <= (!n*$ Output Enabl!) pinu =PC<M ! orij! pri"utna lo*i2ka 1# "vi pinovi a*i"tral! po&ataka (3+ pa na&alj!) na0i 0! "! u "tanju vi"ok! i p!&an"!$ To o o*u0ava ultipl!k" a*i"tral! po&ataka# i nj!no &!lj!nj! iz !%u =PC<M i C8M ! orij! (Co o&or! 64 kori"ti i"ti princip "a "vojo C<M ! orijo )$ Pri ra&u "a bilo koji !k"t!rni ! orija a orat! obratiti panju na brzinu pri"tupa po&aci a (obi2no o& 4FnS &o 4F+nS)$ Iako j! u*lavno o*u0! &on!kl! Iov!rklokovatiJ ! oriju# to n! pr!&"tavlja &obru prak"u$ 7!&no 0! "vakako "tra&ati$ 5olj! &a to bu&! to ka"nij!$ Gao to uo2avat! za upotr!bu a&r!"n! i a*i"tral! po&ataka potr!ban j! v!liki broj pinova# ali joj j! i brzina ak"i alna$ Zbo* to*a "! najvi! kori"ti u ko pjut!ri a$ Mikrokontrol!ri "! zbo* v!liko* broja potr!bni; pinova u*lavno uopt! n! pov!zuju "a !k"t!rni ;ar&v!ro a&r!"no a*i"tralo # v!0 "! "v! vi! razvija "p!ci9i2an ;ar&v!r# koji "! o&r!%!ni ko unikacioni protokoli a o! upravljati anji broj! pinova# uz anju brzinu pri"tupa$ Za vi! &!talja po*l!&ajt! T5+11 "a ;ttp/MMRRR$ icroc;ip$co M$
116
'ajpr! j! potr!bno un!ti poruku koja 0! "! po"lati$ 'ajlak! j! un!ti j! u PIC u obliku tab!l!$ MP:85 a"! bl!r o! "a vriti konv!rziju 8SCII ko&a# to olakava uno" poruk!$ 8SCII ko& za "lovo T# ozna2ava "! "a 0'T' ili 'T'$ A DDDDDD Tab!la "a t!k"to DDDDDD Tex& addwf P#E,F A &o&aj U na PC: d& '?d)0IoR', 0x0(, 0x0A, 0x00 A >ra0a karakt!r!# A +N+3 >ra0a znak C!turn A +N+8 >ra0a oznaku za novi r!& A +N++ <zna2ava kraj t!k"ta 3a bi "! na "!rij"ki port po"lao karakt!r# potr!bno j! u j!&no r!*i"tru 2uvati r!&ni broj "lova koj! "! prikazuj! (broj koji "! &o&aj! na PC:) i pozvati rutinu za "lanj! karakt!ra# pov!0avaju0i "vaki put vr!&no"t u point!r r!*i"tru$ Ga&a "! &o&j! &o za&nj!* karakt!ra# iz tab!l! "! vra0a +N++# na o"novu 2!*a potpro*ra &!t!ktuj! kraj niza karakt!ra$ - rutinu "! ulazi "a r!&ni broj! prvo* karakt!ra (o9"!to ) u U$ US1- movwf Pe& movf call addlw btfsc return call incf goto A Po"tavi vr!&no"t iz U u point!r poruk! A Stavi point!r u U A >ra0a 8SCII karakt!r u U A S!tuj! Z!ro 9la* ako j! U V + A Pr!"ka2! ako Z!ro 9la* nij! "!tovan A Zavrava potpro*ra ako j! U V + S20+ A 6alj! karakt!r na "!rij"ki port P"I;T=R,F A Pozicioniraj point!r na "l!&!0i karakt!r Pe& A 7o karakt!ra P"I;T=R P"I;T=R,% Tex& 0x00 STATUS,?
S!rij"ki pr!no" po&ataka "a"toji "! o& po"tavljanja o&*ovaraju0!* pina na lo*i2ku + i lo*i2ku 1 u ta2no o&r!%!ni tr!nutci a$ 'j!*ovo uobi2aj!no "tanj! j! vi"ok lo*i2ki nivo (1)# a nizak nivo (+) pri to ! ozna2ava "tartni bit$ Pri brzini pr!no"a po&ataka o& 48++ bo&a# vr! ! koj! bit prov!&! u "tanju lo*i2k! + tr!ba biti 1M48++ V @+8ZS$ 8 bita po&ataka "vaki trajanja j!&no* p!rio&a "l!&! za ovi "tartni bito $ >i"ok lo*i2ki 11P
nivo &ui o& p!rio&a j!&no* bita ozna2ava "top bit$ 5itovi "! alju "a prvi bito naj anj! t!in! (:S5)$ Po&atci "! u ko pjut!ru 2itaju na polovini bit"ko* p!rio&a# &a bi "! pouz&anij! &!t!ktovalo &a li j! o&*ovaraju0i bit na lo*i2koj + ili 1$ Priliko "lanja 8SCII ko&a "lova 8 (bQ+1++ +++1Q) u ko pjut!r bi "! po"lala ovakva "!kv!nca/ ST8CT + +1@K 4F6P 1+++ ++1+ ST<P 1
Start i "top bit n!op;o&ni "u ra&i "in;ronizacij! prij! nika "a pr!&ajniko $ 'apon"ki nivoi CS@K@ porta "u BK> ili ni! za lo*i2ku j!&inicu# i HK> i vi! za lo*i2ku +$ <vo "! u*lavno o! zaobi0i# tako to "! kori"t! nivoi o& HF> za lo*i2ku + i +> za lo*i2ku 1# ukoliko j! kabl za pov!zivanj! &ovoljno kratak$ Pri !0uj!t! &a j! ovo obrnuto o& ono*a to bi"t! o*li o2!kivati1 Za ta2no o&r!%ivanj! potr!bni; pauza o! "! kori"titi ranij! opi"an potpro*ra za kanj!nj! "a F@ D 4ZS p!tljo za j!&nu bit"ku p!rio&u pri 48++ bo&a$ Gako "a pro*ra za "lanj! traj! 1@ZS# u U 0! "! na0i broj 4Y$ - potpro*ra "! ulazi "a !lj!ni karakt!ro u U$ Izlaz za ko pjut!r j! na P<CT8 r!*i"tru# bit @ (pin 1)$ IS2 movwf movlw movwf bsf movlw call rrf btfsc goto bsf goto "b) bcf nop TAR=' 0x08 BIT"GI P"RTA,2 .4B P0!4 TAR=',F STATUS,# "b) P"RTA,2 J)0> P"RTA,2 BIT"GI,F Pe& .52 P0!4 P"RTA,2 .104 P0!4 A Stavi U u r!*i"tar pr!&aj! A 8 bitova po&ataka A 5rojac za bitov! A Startni bit (inv!rtovan# "!0at! "!) HF> na C8@ A 4Y &!ci alno# vr! ! za ka"nj!nj! A - potpro*ra u za pauzu c!kaj 4YD4V1Y6ZS A Pr!baci za&nji &!"ni bit u CarrW 9la*$ A 8ko j! CarrW 9la* V +# !li "! "!tovanj! bita A (nizak napon"ki nivo) A u protivno j! bit V + (vi"ok nivo) A HF> na pinu 1 (C8@) A 7! li *otovo? A +> na pinu 1 (C8@) A &a bi ob! opcij! trajal! ta2no 1@ZS A 1 bit anj!$ Pr!"ko2i ka&a &o%! &o + A i a jo bitova$ Ganj!nj! za "lanj! ovo*$ A F@ &!ci alo# vr! ! za kanj!nj! @+8ZS A Ganj!nj! za za&nji bit po&ataka A +> (vi"oko "tanj!) za "top bitov! A 1+4 &!ci alno A za &va puta &ui "top bit A Povratak
Pe&
- ovi potpro*ra i a prikazan! "u "koro "v! potr!bn! rutin! potr!bn! &a bi PIC po"lao poruku IZ&ravo1J u ko pjut!r pr!ko "!rij"ko* porta$ <"talo j! jo nji;ovo pov!zivanj!$ Pro*ra koji "v! to pov!zuj!# o*ao bi iz*l!&ati ovako/ 118
S20+ bsf movlw movwf bcf clrf movlw call movlw call B2o@ goto
STATUS,RP0 0x00 TRISA STATUS,RP0 P"RTA .50 J03 0x00 IS2 B2o@
A Pr!bacuj! u 58'G1 A Po"tavlja "v! pinov! kao izlazn! A na P<CT8 A >ra0a u 58'G+ A C8@ V + (CS@K@ vi"oko "tanj!) A Ga"nj!nj! o& F+ S A pr!ko potpro*ra a za &u! pauz! A <9"!t za prvi karakt!r poruk! A Slanj! poruk! u ko pjut!r A Graj u b!"kona2noj p!tlji
Malo ko !ntara o pro*ra u/ Svi bitovi na P<CT8 r!*i"tru "u po"tavlj!ni kao izlazi$ Gako pro*ra kori"ti tab!lu# potr!bno j! t!"tirati nj!no pr!kora2!nj!$ C!&o"l!& potpro*ra a# naravno# nij! bitan$ 5itno j! j!&ino &a *lavni pro*ra (Slan) bu&! prvi$ Za i"pravan ra& pro*ra a# potr!bno j! o"i*urati &ovoljnu pr!cizno"t takta o"cilatora# pa "! ovaj pro*ra o! upotr!biti j!&ino uz kri"talni o"cilator o& 4M,z$ Za pov!zivanj! "a ko pjut!ro &ovoljno j! pin 1 ikrokontrol!ra (C8@) pov!zati "a pino @ (C`) &!v!topin"ko* !n"ko* S-5 3 kon!ktora# i a"u (?'3) na pin F kon!ktora$ Gabl n! bi tr!bao biti &ui o& 1#F $ - protivno # orali bi "! kori"titi o&*ovaraju0i &rajv!ri (obi2no "! to ra&i int!*ri"ani kolo M8`@K@) na !nj!ni pr!tvaranju lo*i2ki; nivoa "a pinova ikrokontrol!ra u nivo! po*o&n! za CS@K@ ko unikaciju$ 'a "trani ko pjut!ra uklju2it! >a t!r inal"ki pro*ra $ - "a o Uin&oR"u i at! ,Wp!r t!r inal$ Izab!rit! o&*ovaraju0i C<M port i u po&!avanji a izab!rit! 48++ bita u "!kun&i# 8 bita po&ataka# b!z prov!r! parno"ti i j!&an "top bit$ Spojit! kon!ktor "a ko pjut!ro i uklju2it! ikrokontrol!r$ Svaki put ka&a *a uklju2it! (ili r!"!tuj!t!)# poruka IZ&ravo1J 0! "! prikazati na !kranu$ - pro*ra u nij! kori0!n S;a&&oR r!*i"tar zbo* ja"nij! ilu"tracij!$ M!%uti # u r!alnoj "ituaciji bilo bi *a kori"no i pl! !ntirati$ Iako j! za "!rij"ku ko unikaciju n!op;o&an ta2no o&r!%!n takt o"cilatora# po"toj! "o9tv!r"k! t!;nik! koj! o o*u0avaju CS@K@ ko unikaciju !r!nj! "i*nala "a ko pjut!ra# i kalibri"anj! "op"tv!no* vr! !na "i*nala i pauz! po ovo "i*nalu$ Ti ! j! o o*u0!na upotr!ba j!9tinij!* CC o"cilatora &ovoljn! brzin!$ Za &!talj! po*l!&ajt! t!;ni2ka uput"tva 8'F1+# 8'FFF# 8'FYK i 8'P1@ "a ;ttp/MMRRR$ icroc;ip$co M$ Savr! !niji PIC ikrokontrol!ri i aju ;ar&v!r"ki r!!nu CSB@K@ ko unikaciju$
Go& CS4@K &rajv!ra prij! nik i pr!&ajnik "u (kao ko& CS@K@) polarizovani u o&no"u na a"u$ M!%uti # napon"ki nivoi "u u o& B4 &o B6 za lo*i2ku 1 i H4 &o H6> za lo*i2ku +$ To o o*u0ava &a j! (uz kori0!nj! i"to* ko unikaciono* protokola) CS4@K ko patibilan "a CS@K@ &rajv!ro # ali &a o! po"ti0i brzinu pr!no"a po&ataka &o 1++k5MS# kao i &a "i*nal "a j!&no* pr!&ajnika o*u i"tovr! !no pri ati 1+ prij! nika$ 11Y
Gako bi ikrokontrol!r o*ao i"pravno pri ati "i*nal! i u "lu2aju " !tnji# po!ljno j! "o9tv!r"ki &!t!ktovati " !tnj! i (ukoliko j! to o*u0!) ukloniti i; iz kori"no* "i*nala$ To n! zna2i &a "! "a ti ! tr!ba pr!t!rivati (u pri !ru u prolo po*lavlju pr!tpo"tavlja "! &a "! ikrokontrol!r nalazi u n!po"r!&noj blizini ko pjut!ra pa j! uticaj " !tnji zan! arljiv)# po*otovu to al*orit i i zauzi aju &!o brzin! i ! orij! ikrokontrol!ra i to "u nji a pr!n!ti po&aci v!0i o& ori*inalni;# pa j! "lanj! "porij!$ - va! t!r inal"ko pro*ra u pri !tili "t! po&!avanj! prov!r! parno"ti$ Go& nj! bit nakon MS5 "a&ri in9or aciju o i"pravno pri lj!ni; raniji; P bita$ Gako 9unkcioni! prov!ra parno"ti? 'ajpr! "! bitovi +BP ko&a !lj!no* karakt!ra r!&o "abiraju# i prov!rava "! &a li j! nji;ov zbir paran broj (&!ljiv "a @ b!z o"tatka)$ -koliko j!"t! MS5 "! "!tuj! (parna parno"t) ili r!"!tuj! (n!parna parno"t)$ Za "lovo 8 (bQ+1++ +++1Q) i n!parnu parno"t po"lati bitovi bi iz*l!&ali ovako/ ST8CT +1@K 4F6P 5IT P8C'<STI + 1+++ ++1+ + ST<P 1
T!r inal"ki pro*ra u ko pjut!ru nakon prij! a "abira r!&o bitov! +BP i upor!&juj! nji;ovu parno"t "a pri lj!ni bito parno"ti$ - "lu2aju n!"la*anja prijavi0! *r!ku ili 0! j!&no"tavno i*nori"ati pri lj!ni karakt!r$ <vaj princip j! &ovoljno pouz&an za &!t!kciju *r!k! na& j!&ni bito po"lato* po&atka$ M!%uti # u "lu2aju pojav! *r!k! na& vi! bitova bit parno"ti nij! &ovoljan$ - !"to prov!r! bita parno"ti o! "! o&r!%!ni broj pri lj!ni; bajtova "abrati i upor!&iti nji;ov zbir$ 'a pri !r ukoliko "! u ko pjut!r alju "l!&!0i po&atci/ K# 8# 1F# 4# @6# 8P u ikrokontrol!ru bi "! izra2unao nji;ov zbir KH8H1FH4H@6H8PV14K koji bi "! po"lao nakon po&ataka unutar par &o&atni; bajtova$ Go pjut!r bi nakon prij! a "abrao "v! po&atk! i upor!&io &obij!ni r!zultat "a pri lj!ni $ Taj princip naziva "! prov!ra ukupno* zbira (!n*$ c;!ck"u )$ 'aalo"t "a nji "u pr!n!!ni po&atci &ui# a ni on nij! pouz&an u "lu2aju po*r!no pri lj!na @ (ili vi!) bita (ukoliko na pri !r nij! pri lj!n nij!&an bit po&ataka niti kontroln! vr!&no"ti# "vi Jpri lj!niJ bajtovi kao i nji;ov zbir bi0! j!&naki +# to po*r!no in&ikuj! i"pravno pri lj!n! po&atk!)$ <vo j! ipak no*o pouz&anij! o& prov!r! parno"ti$ >i! o c;!ck"u u i at! u T5+@6$ 'ajprakti2niji na2in &!t!kcij! *r!aka u pr!no"u po"ti! "! pri !no CCC (!n*$ CWclic C!&un&ancW C;!ck) al*orit a# koji prua najbolji ko pro i" iz !%u brzin! al*orit a# pouz&ano"ti &!t!kcij! *r!k! i v!li2in! &o&atno pr!n!ti; po&ataka$ >i! o nj!*ovo principu i at! u 8'PK+$ 1@+
- "lu2aju &vo" !rn! ko unikacij! ( ikrokontrol!r ka ko pjut!ru i ko pjut!r ka ikrokontrol!ru) o*u0! j! nakon &!t!ktovan! *r!k! u "uprotno " !ru po"lati po&atak o r!&no broju n!i"pravno* po&atka# i na taj na2in zatraiti j!&ino nj!*ovo ponovno "lanj!# ili pak ponovno "lanj! c!l! *rup! po&ataka (ta2nij! za "i*nalizaciju *r!k! pri CS@K@ v!zi kori"t! "! &o&atni provo&nici# ali "! oni u*lavno izb!*avaju)$ Svakako &a j! ovaj na2in prili2no vr! !n"ki za;t!van# a nij! ni o*u0 u "lu2aju j!&no" !rn! ko unikacij!$ 3a ti probl! i pr!vazili pri !njuju "! al*orit i za kor!kciju *r!aka$ <ni 0! biti &!taljnij! objanj!ni u nar!&no po*lavlju$ -*lavno j! potr!bno prona0i ko pro i" iz !%u naj2!0i; vr"ta *r!aka i koli2in! pr!n!ti; po&ataka za "pojni put (provo&nici# opti2ka v!za# au&io v!za# ra&io tala"i$$$) koji "! kori"ti$ Pri to ! no*o o! po o0i o&*ovaraju0i izbor o&ulacij! "i*nala$ Priliko CS@K@ ko unikacij! "i*nali "! o&uliu pr!ko o&*ovaraju0!* &rajv!ra (M8`@K@) koji pr!tvara napon"k! nivo! o& HF> i +> u H1F> i B1F># i &alj! "! oni tako o&uli"ani pr!no"! kroz provo&nik!$ Go& -S5 ili I@C v!z! napon"ki nivoi "u +> i HF>$ Go& o"tali; vr"ta "pojni; put!va u*lavno j! n!op;o&no !li ini"ati j!&no" !rnu ko pon!ntu napona (&uu pojavu lo*i2k! + i lo*i2k! 1)$ Zbo* to*a "! za o&ulaciju "poriji; (npr$ au&io) v!za o*u pri !njivati CTTg# 3TMF# FSG# PSG i razni &ru*i na2ini$ Za o&ulaciju bri; (npr$ opti2ki;) v!za naj2!0! vr"t! o&ulacij! "u Manc;!""t!r# CMI# Mill!r# MCMI i F565$ Iako j! ra&io# au&io ili opti2ka ko unikacija n!"u njivo int!r!"antna# pr!vazilazi okvir! ovo* uput"tva# tako &a 0! na&alj! biti objanj!na j!&ino v!za i2ani provo&nici a$ -z n!o&*ovaraju0i izbor o&ulacij! n!0! >a po o0i ni najbolji kor!ktivni al*orita $ Po*l!&ajt! "a o kolik! "u razlik! u brzini pr!no"a po&ataka pr!ko CS@K@ i SPI v!z!# ili u &aljini pr!ko I@C i CS48F v!z!1
1@1
Pr!tpo"tavi o &a j! potr!bno CS@K@ v!zo pr!n!ti &va bajta (nazovi o i; 8 i 5)$ Ca&i &!t!kcij! *r!aka alj! "! i bit parno"ti$ '!po"r!&no nakon nji; poalj! "! i bajt C koji pr!&"tavlja r!zultat `<C op!racij! na& bajtovi a 8 i 5$ I"pravna "ituacija iz*l!&ala bi ovako/ A P 1011 1001 1 M!%uti B P 0110 1011 1 # P 1101 0010 0
ukoliko bi u pr!no"u po&ataka &olo &o *r!k! u bajtu 8# &o*a%a "! "l!&!0!/ A P 1010 1001 1 B P 0110 1011 1 # P 1101 0010 0
Prij! nik bi najpr! na o"novu bita parno"ti &!t!ktovao &a j! po*r!no pri lj!n bajt 8$ 3a bi *a r!*!n!ri"ao pri !njuj! `<C na& i"pravno pri lj!ni bajtovi a 5 i C$ <vo j! "li2no zakoni a u at! atici/ -koliko j! 8D5VC# on&a vai i 8VCM5 i 5VCM8$ 0110 1011 B A"R 1101 0010 # 6 1011 1001 A 3a j! po*r!no pri lj!n bajt 5 izvrila bi "! `<C op!racija na& bajtovi a C i 8# a &a j! po*r!no pri lj!n bajt C# n! bi "! ni izvravala kor!kcija# j!r "u na bitni j!&ino 8 i 5$ Sp!cijalan "lu2aj pr!&"tavljao bi po*r!no pri lj!n bit parno"ti 8 ili 5 bajta$ <n&a bi "! r!*!n!ri"ani bajt upor!&io "a ori*inalni # i u "lu2aju &a "u oba bajta i"ta zaklju2io &a j! po*r!no pri lj!n upravo bit parno"ti$ Gako j! prov!ro bita parno"ti o*u0! i"pravno &!t!ktovati korupciju "a o j!&no* bita unutar bajta# ovaj princip po*o&an j! j!&ino za r!*!n!raciju j!&no* bita unutar K po"lata bajta (8# 5 i C)$ - "lu2aju korupcij! vi! bitova# potr!bno j! kori"titi &ru*a2ij! al*orit !$
1@@
48. I2C
CS@K@ ko unikacija po*o&na j! j!&ino za &ir!ktno pov!zivanj! &va ur!%aja$ 'jo j! t!ko pov!zati PIC "a vi! ur!%aja i"tovr! !no (npr$ "a 8M3 konv!rtoro # &o&atno ==PC<M ! orijo i jo j!&ni ikrokontrol!ro )$ Svakako &a j! takvu ko unikaciju o*u0! o"tvariti &ir!ktni pov!zivanj! pinova ikrokontrol!ra# ali to troi nji;ov! &ra*oc!n! pinov!# i ko plikuj! "o9tv!r zbo* razli2iti; ko unikacioni; al*orita a$ I@C (!n*$ Int!r Int!*rat!& Circuit bu") v!za o o*u0ava pov!zivanj! ikrokontrol!ra "a j!&ni ili vi! &o&atni; ur!%aja kori"t!0i za to "a o &va pina# i I@C ko unikacioni protokol$ 'aravno# i ti ur!%aji oraju i ati o*u0no"t ("o9tv!r"ku ili ;ar&v!r"ku) I@C ko unikacij!$ Za&nji; *o&ina pojavljuj! "! "v! vi! ;ar&v!r"ki; &o&ataka koji proiruju upotr!bu ikrokontrol!ra# a za ko unikaciju kori"t! upravo I@C v!zu (u !"to ranij! a&r!"n! i a*i"tral! po&ataka)$ - I@C v!zi o*u0! j! i ati j!&an *lavni ikrokontrol!r (!n*$ Ma"t!r) koji upravlja &o&atni I@C ;ar&v!ro (!n*$ Slav!)# ili pak vi! *lavni; ikrokontrol!ra (!n*$ Multi a"t!r) o& koji; "vaki o! upravljati &o&atni Slav! I@C ;ar&v!ro $ na"tavku 0! biti opi"an j!&ino prvi "lu2aj$ I@C v!za j! "p!ci9i2na po to ! to "! lo*i2ka 1 n! alj! na uobi2aj!ni na2in# v!0 pr!&ajnik priliko pr!&aj! lo*i2k! 1 pr!lazi u "tanj! ulaza (vi"ok! i p!&an"!)# a lo*i2ka 1 "! javlja po& uticaj! (!k"t!rno* ili int!rno*) pull up otpornika$ Prij! nik j! za to vr! ! tako%! u "tanju ulaza# ali on (za razliku o& pr!&ajnika) vo&i ra2una o "i*nalu koji pri a$ 'a taj na2in o o*u0!na j! ko unikacija pr!ko j!&n! linij!# uz n! o*u0no"t kratko* "poja$ Pr!ko &ru*! linij! Ma"t!r ob!zb!%uj! takt n!op;o&an za "in;ronizaciju prij! nika "i*nala$ Takt ora biti "tro*o "in;ronizovan "a "lanj! "i*nala$ Po"toji o*rani2!nj! nj!*ov! ak"i aln! brzin!# ali n! i ini aln!# tako &a 0! Slav! priliko "lanja po&ataka po potr!bi 2!kati &ok Ma"t!r n! bu&! "lobo&an za nji;ov prij! (tj$ &ok Ma"t!r n! poalj! takt)$ Gako j! al*orita I@C protokola razvij!n tako &a j! n! o*u0! &a &va ur!%aja i"tovr! !no alju po&atk!# "vaki Slav! i a "voju j!&in"tv!nu a&r!"u pr!ko koj! u "! pri"tupa$ 7!&an &!o a&r!"! u 9abri2ki &o&!lj!n na o"novu 9unkcij!# a &ru*i &!o bira "! 9izi2ki pr!"pajanj! pinova$ Svako Slav! ;ar&v!ru pov!zano "a Ma"t!ro tr!ba inicirati "lanj! ili prij! po&ataka$ - "lu2aju &a j! potr!bno n!pr!ki&no t!"tiranj! Slav! ;ar&v!ra# n!pr!"tano bi "! izvravala nji;ova prozivka (kao u >oj"ci)$ Priliko prij! a bajta za a&r!"iranj! Slav! ;ar&v!ra "vaki o& priklju2!ni; Slav! &!t!ktuj! &a li "! ra&i o nj! u# i pr!&uzi a tra!nu akciju (obi2no "lanj! ili prij! par bajtova)$ Svaki Slav! ;ar&v!r i a "voj! "p!ci9i2no"ti tako &a "! oraju prou2iti nj!*ovi t!;ni2ki po&atci$ 'a pri !r priliko "ni anja bajta u I@C ==PC<M ! oriju potr!bno j! po"lati P bita za a&r!"iranj! ba to* Slav! ;ar&v!ra (r!"!tovan :S5 u nj! u inicira upi")# @ bajta za a&r!"u (za ! orij! &o 64Gb) i 1 bajt po&atka$ Za 2itanj! "! alj! P bita za a&r!"iranj! Slav! ;ar&v!ra ("!tovan :S5 inicira 2itanj!)# @ bajta za a&r!"u i 2ita "! 1 bajt$ Po2!tak# kraj kao i raz&vajanj! bajtova r!alizovani "u "li2no kao u CS@K@ ko unikaciji pr!ko ST8CT# ST<P i jo par kontrolni; bitova$ I"to kao CS@K@ i I@C protokol j! ;ar&v!r"ki i pl! !ntovan u o0niji PIC ikrokontrol!ri a$ Za vi! &!talja po*l!&ajt! 8'F1F# 8'F41# 8'FF4 i 8'FP8$ 1@K
Gako j! CS48F protokolo o*u0! &a "! pinovi pr!&ajnika i"klju2! (tako to pr!%u u vi"okoi p!&an"no "tanj! O "li2no ulazi a ikrokontrol!ra)# o*u0! j! na taj na2in kao u I@C protokolu pr!ko i"ti; linija paral!lno pov!zati vi! ikrokontrol!ra$ 'aravno# ora "! pov!"ti ra2una o "pr!2avanju i"tovr! !n! pr!&aj! (npr$ poj!&ina2ni a"&r!"iranj! kao u I@C protokolu)$ <vo j! o*u0! j!r CS48F "tan&ar&o nij! propi"an ko unikacioni "o9tv!r# v!0 j!&ino ;ar&v!r$ To zna2i &a o!t! napi"ati "op"tv!ni ko unikacioni protokol (ili kori"titi *otovi CS@K@ O po*otovu ukoliko j! ;ar&v!r"ki i pl! !ntovan u ikrokontrol!ru) koji 0! za&ovoljiti va! konkr!tn! potr!b!$ To prua "lobo&u pro*ra !ru &a unutar protokola u*ra&i "op"tv!n! al*orit ! Iprozivk!J vi! &o&atni; ikrokontrol!ra (&o K@ ili uz vi! &rajv!ra u j!&no int!*ri"ano kolu &o @F6)# al*orit ! &!t!kcij! i kor!kcij! *r!aka# j!&no r!2ju &a kori"t!0i "tan&ar&an "tabilan ko unikacioni ;ar&v!r "o9tv!ro ko unicira na koji *o& na2in !li$ Gori0!nj! r!p!titora o*u0! j! r!alizovati virtu!lno b!"kona2n! r!!$ M!%uti uz v!0! &aljin! i vi! pov!zani; ikrokontrol!ra (po*otovu uz r!p!titor!) kanj!nj! "i*nala o! biti pr!v!liko$ 6to &u! linij!# to v!0! kanj!nj!# "a i ti i anja brzina$ 'ajv!0a razlika iz !%u CS48F i CS4@@ protokola j! u pr!&ajniku$ CS4@@ pr!&ajnik n! o! "! na0i u "tanju vi"ok! i p!&an"!# tako &a ikrokontrol!r o! j!&ino "lati "i*nal pr!ko &v! linij!# &ok bi taj "i*nal o*lo i"tovr! !no pri ati &o 1+ prij! nika$ Za vi! &!talja po*l!&ajt! 8'1+P6$ <"i ovi;# po"toji jo par CS (!n*$ R!co !n&!& Stan&ar&) protokola poput CS44Y i CSFK+# !%uti bu&u0i &a oni pr!&"tavljaju varijaciju v!0 opi"ani; principa# kao i &a "! r!tko ka&a kori"t!# ov&! n!0! biti raz atrani$
1@F
4:. D+C412
Pon!ka& j! &ovoljno "lati in9or acij! "a o u j!&no " !ru$ 3M`F1@ (!n*$ Di*ital +ultipl!C) pr!&"tavlja ko unikacioni protokol "po"oban za a&r!"iranj! &o 412 prij! nika i koji "! u*lavno kori"ti za upravljanj! ra"v!to $ Za pov!zivanj! "! kori"t! CS48F &rajv!ri# a protokol pr!&"tavlja "o9tv!r za upravljanj! ti &rajv!ri a$ Gako "! 3M`F1@ protokolo pov!zuj! j!&an pr!&ajnik "a vi! prij! nika "a o u j!&no " !ru# prij! nici n! aju na2in "i*nalizacij! n!i"pravno pri lj!no* po&atka$ Gonkr!tno za "lu2aj ra"v!t!# to i nij! ni potr!bno$ .ak i &a &o%! &o *r!k!# ionako 0! nar!&ni po&atak "a&rati i"pravnu vr!&no"t ja2in! "v!tla$ 3M`F1@ protokol napravlj!n j! tako &a "! po&aci n!pr!"tano (ta2nij! bar j!&no u "!kun&i) alju prij! nici a$ Poto j! CS@K@ ko unikacioni protokol int!*ri"an u noviji ikrokontrol!ri a# 3M`F1@ pr!&"tavlja o&i9ikaciju CS@K@ protokola kako bi "! nji pr!ko CS48F &rajv!ra o*lo a&r!"irati &o F1@ prij! nika$ Mo&i9ikacija "! "a"toji u &ru*a2ij! obliku ST8CT bita (&o"ta &ua lo*i2ka + pa 1)# ST<P bita (&v! lo*i2k! 1) i r!&no "lanju "vi; F1@ bajtova "a ST<P bitovi a iz !%u nji;$ 5roj po"lati; bajtova o*ao bi "! " anjiti za "lu2aj anj!* broja prij! nika$ Prij! nici bi orali r!&o brojati pri lj!n! bajtov! kako bi vi&!li koji j! bajt za nji;$ >i! &!talja i at! u 8'1+P6 i na RRR$!"ta$or*$
1@6
41. -IN
:I' ko unikacioni protokol po&rava &vo" !rnu ko unikaciju pr!ko j!&no* provo&nika (H a"a)$ Protokol j! na"tao ukrtanj! I@C i CS@K@ protokola$ 'apon na liniji j! u n!aktivno "tanju na nivou lo*i2k! 1 *!n!ri"an! (kao ko& I@C) pull up otporniko $ 5ilo koji 2lan r!! (!n*$ no&) o! na liniju po"lati lo*i2ku +# koja na taj na2in pr!lazi u &o inantno "tanj! i bri! po"toj!0u lo*i2ku 1$ Za razliku o& I@C v!z! u !"to linij! za takt# po&aci "! kroz provo&nik pr!no"! a"in;rono# kao ko& CS@K@ v!z!$ 'apon na liniji (*!n!ri"an pullBup otporniko ) izno"i o& Y &o 18> u o&no"u na a"u$
:I' protokol j! zbo* v!0!* broja no&ova napravlj!n tako &a ikrokontrol!ri a o o*u0i to j!9tiniji ;ar&v!r# pa j! zato o*u0! kori"titi CC o"cilator!# pri 2! u "! "vi "lav! no&ovi "o9tv!r"ki "in;ronizuju "a a"t!ro po prij! u nj!*ovo* "i*nala$ Zbo* to*a kao "in;ronizacioni i pul" pr! "vak! poruk! a"t!r alj! bajt bQ+1+1+1+1Q$ Tako j! "vako "lav! no&u o o*u0!na "in;ronizacija kor!kcijo "op"tv!ni; vr! !n"ki; rutina u "kla&u "a pri lj!ni bit"ki vr! !ni a lo*i2k! + i 1$ 'akon "in;ronizaciono* bajta "l!&i j!&nobajtno za*lavlj!# u ko ! "! "aoptava kakvi po&aci "l!&!$ - nj! u 4 bita (bit + &o bit K) a&r!"iraju no&ov! na liniji# @ bita (bitovi 4 i F) o&r!%uju &uinu in9or acija (@# 4 ili 8 bajtova)# i za&nja @ bita (6 i P) "lu! za prov!ru parno"ti za*lavlja$ :I' protokolo nij! "p!ci9iran 9or at nar!∋ in9or acija# o"i c;!ck"u a in9or acija$ S:==P ko an&! i
Gako nakon pojav! *r!k! :I' protokolo nij! o o*u0!na nj!na prijava# a"t!r o! u &!lu "a in9or acija a zatraiti prij! ni "tatu" o& poj!&ina2ni; no&ova$ Svi no&ovi o*u pri ati poruk! o& o"tali; no&ova &ir!ktno# tako &a &o&atna int!rv!ncija a"t!ra u to "lu2aju nij! potr!bna$ Ipak# a"t!r ora ob!zb!&iti povr! !nu prozivku no&ova u "lu2aju &a "u nji;ovi po&aci potr!bni o"tali no&ovi a$ Ma"t!r o! po"lati "v! no&ov! u "l!!p o&# "lanj! i&!nti9ikaciono* bajta +N8+$ <"tali no&ovi po prij! u ov! ko an&! tr!baju po&!"iti int!rapt po pro !ni "tanja na pinu na liniji# tako &a i oni o*u oti0i u "l!!p o&$ 5ilo koji no& o! probu&iti o"tal! "lanj! +N8+ ko&a$ Po nj!*ovo no&ovi "! bu&! i 2!kaju &alj! in9or acij! o& a"t!ra$ prij! u "vi
:I' protokol nij! "t!kao v!liku popularno"t zbo* kanj!nja u proizvo&nji o&*ovaraju0i; int!*ri"ani; &rajv!ra# al! &aljin! i po&lono"ti " !tnja a u"l!& &ir!ktno polari"an! linij!$ Za vi! &!talja po*l!&ajt! 8'P@Y# 8'@KF i 8'@KP$
1@P
42. DA-I
3M`F1@ ko unikacija j! j!&no" !rna$ Zato joj j! pri !na o*rani2!na na upravljanj! ra"v!to $ M!%uti # nj!n princip j! n!prakti2an u "lu2aju kvara "ijalic! (r!9l!ktora)$ Z*o&nij! bi bilo ka&a bi bilo o*u0! &a &rajv!r za "ijalicu &!t!ktuj! &a li ona zai"ta ra&i# i &a po potr!bi obav!"ti a"t!r o kvaru$ 38:I (!n*$ 3i*itallW 8&&r!""abl! :i*;tin* Int!r9ac!) protokol j! na !nj!n upravljanju pr! "v!*a 9luo c!vi a$ Zbo* 2!*a ba nji a? Zbo* to*a za i"tu potronju !l!ktri2n! !n!r*ij! ja2u "v!tlo"t o& nji; (: MU) &aju j!&ino !talB;ali&n!# "o&iju "k! (i ni"ko* i vi"oko* priti"ka) "ijalic!# krio*!n"k! i r!tki :uN!on !k"p!ri !ntalni tipovi :=3$ 6to "! ti2! po2!tni; inv!"ticija# o& "vi; ovi; tipova j!&ino 9luo c!vi "! o*u nabaviti po povoljnoj c!ni$ Iako j!&na 9luo c!v kota oko 1#K_ (u o&no"u na "ijalicu "a uar!ni vlakno koja j! oko +#@_)# vr! !no 0! "! i"platiti kroz anji ra2un za !l!ktri2nu !n!r*iju$ >!rujt! i na r!2$ I a i; u "vi pro"torija a o"i kupatila (zbo* vla*!)$ Iako "! r!*ulacija "v!tlo"ti "ijalica "a uar!ni vlakno lako i pl! !ntira 9azno r!*ulacijo # ko& 9luo c!vi "a pri*unica a j! to no*o t!! izv!"ti$ T!k "u "! oko @+++Bt! *o&in! pojavili tranzi"tori &ovoljno j!9tini i &ovoljno v!liko* probojno* napona &a o*u po"luiti kao konv!rtori r!no* napona u napon potr!ban za ra& 9luo c!vi$ Taj princip kori"ti 38:I za 9unkciju &i !ra (!n*$ 38:I &i in* balla"t)$ 3i !ro j! o o*u0!no &a "! potronja !l!ktri2n! !n!r*ij! jo vi! " anji$ 'a 38:I int!r9!j" o*u0! j! pov!zati &o 64 no&ova$ C!*ulacija "v!tlo"ti po"ti*nuta j! u @FF koraka# ali lo*arita "ko* o&no"a$ <n prua priro&niji o&no" poja2anja i " anj!nja "v!tlo"ti$ Tako%! j! o*u0! proizv!"ti i o0n! !9!kt! po"t!p!no* poja2anja ili " anj!nja "v!tla# po&!avalj! "v!tla po *rupa a i "li2no$ 38:I protokol n! a po"!bn! int!*ri"an! &rajv!r!$ - !"to nji;# i pl! !ntirani "u &i"kr!tno t!;nolo*ijo $ Ta2nij!# za prij! i pr!&aju "i*nala kori"t! "! optokapl!ri# 2i ! j! por!& ni"k! c!n! &rajv!ra o o*u0!no i *alvan"ko o&vajanj! linij! o& r!no* napona$ Gako j! 38:I protokol r!zultat "ara&nj! Microc;ipa i Int!rnational C!cti9i!ra# &o&atn! in9or acij! o 38:I protokolu o*u "! j!&ino naru2iti na C3Bu "a "ajta ;ttp/MM RRR$ir9$co Mpro&uctBin9oMli*;tin*M$ Za vi! &!talja po*l!&ajt! 8'8+Y i 8'811$
1@8
4). SPI
SPI (!n*$ S!rial P!rip;!ral Int!r9ac!) pr!&"tavlja ko unikacioni protokol na !nj!n brzo pr!no"u "i*nala# na kratki o&"tojanji a$ Iako SPI protokol n! a o*rani2!nj! naj anj! brzin!# zbo* br!* pr!no"a v!0! koli2in! po&ataka "! ikrokontrol!ru obi2no zabranjuj! izvravanj! o"tali; op!racija$ -pravo zbo* to*a >a &i*italni 9oto aparat n! o!t! i"tovr! !no kori"titi kao R!b ka !ru# niti na MPK pl!j!ru n! o!t! "luati uziku &ok j! pov!zan "a ko pjut!ro $ <bi2no "! kori"ti priliko ko unikacij! "a "!rij"ki ==PC<M ! orija a# kao i ! orij"ki kartica a (MMC# S3# N3# CF$$$)$ Iako ! orij"k! kartic! u o"novi pr!&"tavljaju v!liku ==PC<M ! oriju# i ajt! u vi&u &a j! proc!" 9or iranja "i"t! a za po&rku 9ajlova (!n*$ Fil!"W"t! npr$ F8T16# F8TK@ ili 'TFS) u ! orij"ki kartica a kao i "i"t! "ni anja i 2itanja 9ajlova iz takvo* 9ajl "i"t! a prili2no ko plikovan# tako &a PIC16 "!rija ikrokontrol!ra obi2no n! a &ovoljno r!"ur"a za nj!no !9!ktno kori0!nj!$ SPI protokol "li2an j! I@C protokolu# "a *lavno razliko a&r!"iranja razni; "lav! ur!%aja pr!ko po"!bno* pina# a n! prozivko nji;ov! a&r!"!$ 'a taj na2in "lav! ;ar&v!r n! ora i ati &o&atn! pinov! za 9or iranj! "voj! a&r!"!# ali ikrokontrol!r ora ob!zb!&iti po j!&an pin za a&r!"iranj! "vako* "lav! ;ar&v!ra ponao"ob$ Za j!&an SPI "lav! ;ar&v!r &ovoljn! "u tri linij!# a "vaki nar!&ni ora i ati "voj CS (!n*$ C;ip S!l!ct) pin$ -koliko j! na CS pinu pov!zano na o&*ovaraju0i "lav! SPI ;ar&v!r pri"utna lo*i2ka +# on&a 0! on r!a*ovati na "i*nal! "a o"tal! &v! linij!$ protivno # i*nori"a0! i; i nj!*ovi pinovi bi0! n!pr!"tano u "tanju vi"ok! i p!&an"!# o o*u0avaju0i a&r!"iranj! o"tali; "lav! SPI ;ar&v!ra$ Int!r!"antna j! o*u0no"t i"tovr! !no* "lanja po&ataka "vi Slav! ;ar&v!ri a ukoliko "u "v! CS linij! na lo*i2koj + ("vi "lav! o2!kuju po&atk!)$ I"to kao ko& I@C protokola# ikrokontrol!r ( a"t!r) j! uv!k za&u!n za *!n!ri"anj! takta pr!ko SCG linij!$ Pr!ko &ru*! (SI) linij! "in;ronizovano "a takto alju "! po&atci u ili iz ikrokontrol!ra$ Za vi! &!talja po*l!&ajt! 8'@48# 8'648 i 8'Y+Y$ I"to kao i CS@K@ i I@C ko& i pl! !ntovan$ o0niji; ikrokontrol!ra j! SPI ;ar&v!r"ki
1@Y
44. INK'e"
CS48F "tan&ar&o propi"an j! j!&ino ;ar&v!r$ I'Gn!t pr!&"tavlja "o9tv!r razij!n o& "tran! =& 'i"l!WBja# a 2iji "u principi opi"ani u Circuit C!llar 2a"opi"u$ Za razliku o& 3M`F1@ protokola# I'Gn!t protokolo o*u0a j! &vo" !rna ko unikacija$ Iako j! I'Gn!t protokol prv!n"tv!no razvij!n za 8+F@ ikroproc!"or (ti; *o&ina "u ikrokontrol!ri bili r!tki i "kupi)# protokol "! o! i"kori"titi ili prila*o&iti bilo ko &ananj! ikrokontrol!ru$ Go unikaciju inicira c!ntralni ikrokontrol!r ( a"t!r)# alju0i za;t!v za in9or acija a poj!&ina2ni 0!lija a (no&ovi a B !n*$ no&!)$ <blik poruk! j! takav &a "! u njoj pr! in9or acij! alj! &!"!tobajtno za*lavlj!# a nakon nj!*a in9or acij! "v! &o ak"i aln! v!li2in! poruk! o& @FF bajtova$ bajt + O r!z!rvi"ano# ora biti + bajt 1 O &uina poruk! "a za*lavlj! (Y &o @FF) bajt @ O a&r!"a no&a pri aoca in9or acij! bajt K O ko an&a pri aocu bajt 4 O a&r!"a no&a poaljioca in9or acij! bajt F O a&r!"a r!z!rvi"ano* no&a bajt 6 O MS5 bajt "tatu" 9la*ova no&a bajt P O :S5 bajt "tatu" 9la*ova no&a bajt 8 O :S5 bajt c;!ck"u a bajt Y O MS5 bajt c;!ck"u a bajtovi 1+ &o @FF O in9or acij! -o2avat! &a j! ovi na2ino o*u0! po"lati ak"i alno @4F bajtova in9or acija$ >i! in9or acija oralo bi "! po"lati unutar vi! poruka (kao SMS poruk!)$ Iako "vi no&ovi o*u i"tovr! !no pri iti in9or acij!# a"t!r j! taj koji 0! na o"novu za*lavlja (i in9or acija) r!*uli"ati ra& i ko unikaciju iz !%u no&ova$ Sli2no kao a&r!"a no&a pri aoca i poaljioca# r!z!rvi"ani no& 0! na&alj! o&*ovarati na poruk! poaljioca koji *a j! r!z!rvi"ao$ Go an&a pri aocu ukazuj! ta no& pri aoc poruk! tr!ba ura&iti "a in9or acijo $ <v&! "u prikazan! "tan&ar&n! ko an&!# ali o*u "! po potr!bi proiriti# to zavi"i o& konkr!tni; za;t!va r!!$ 8+ B P<:: Poll 9ro a"t!r to no&! 81 B ST8T-S Statu" r!"pon"! 9ro no&! to a"t!r 8@ B -'5-Sg Forc! no&! ^unbu"W^ r!*ar&l!"" o9 actual "tatu" (u"! Rit; caution1) 88 B C=S=C>= C!"!rv! no&! 9or !Nclu"iv! u"! o9 ^9ro ^ no&! (!Nc!pt 9or poll" h r!"pon"!") 8Y B C=:=8S= C!l!a"! no&! 9or *!n!ral u"! ( aW b! "!nt bW anW no&!) Y+ B C<'S<-T Con"ol! output (to &i"plaW) Y1 B C<'SI' Con"ol! input (9ro k!Wboar&) Y@ B C<'S=C,< =c;o o9 con"ol! input !""a*! YK B C<'SFI:= Con"ol! input (9ro 9il!) 1K+
-nutar "tatu" bajta no&a# tako%! (kao ko& ST8T-S r!*i"tra o&r!%!ni 9la*ovi opi"uju 9unkcij! no&a$ Fla*ovi "u "l!&!0i/ 1F B 5-Sg 'o&! i" bu"W ;an&lin* pr!viou" !""a*! 14 B <>=CC-' 8t l!a"t on! pr!viou" !""a*! Ra" lo"t 1K B =C,< 'o&! Rill !c;o all C<'SI' !""a*!" 1@ B :FSTCIP 'o&! "trip" :F a9t!r CC on C<'SI' "*" 11 B CS-M 'o&! &!t!ct!& a c;!ck"u !rror 1+ B r!"!rv!& +Y B r!"!rv!& +8 B M8ST=C 'o&! i" n!tRork a"t!r Fla*ovi o& + &o P "u r!z!rvi"ani$
ikrokontrol!ra)
<vakav princip o o*u0ava !9ika"nu int!*raciju "tan&ar&no* CS48F &rajv!ra i na !n"ko* "o9tv!ra za pravlj!nj! "op"tv!n! r!! ikrokontrol!ra$ 3!t!kcija *r!aka i pl! !ntirana j! c;!ck"u o # a kor!kcija ponovni "lanj! in9or acij! ukoliko prij! ni no& poalj! za*lavlj! "a "!tovani CS-M bito nj!*ovo* "tatu" bajta$ Za vi! &!talja po*l!&ajt! 2a"opi"! Circuit C!llar broj 1+ (av*M"!p 1Y8Y)# 11 i 1@$ nji a o!t! prona0i i objanj!nja int!r!"antni; principa ko unikacija b!z a"t!ra (&!t!kcijo kolizij! ili r!&ni tran"9!ro &ozvol! pr!&aj! o& j!&no* ka &ru*o no&u)$ -nutar i"ti; 2a"opi"a o!t! vi&!ti i or*anizacionu "trukturu "lo!niji; ko unikacioni; protokola# 9or iranu po "loj!vi a (!n*$ :aW!r") u C=5u" protokolu$ Za j!&no"tavniji ko unikacioni protokol pr!ko CS48F &rajv!ra po*l!&ajt! 2a"opi" Circuit C!llar broj @1$
1K1
44. SAART'e"
I'Gn!t protokol "a CS48F &rajv!ri a por!& o2i*l!∋ pr!&no"ti i a i par ana$ Por!& "i*nala# "vako no&u potr!bno j! &ov!"ti i napon napajanja (HF> i +>)$ 5ilo bi "vakako j!9tinij! ako bi "! broj provo&nika o*ao na n!ki na2in " anjiti$ SB8CTn!t (!n*$ S!rial# 8&&r!""abl!# C!c!iv!MTran" itt!r) protokol r!ava ovaj probl! # tako to "! kroz &va provo&nika pr!no"i i napon napajanja i kori"tan "i*nal$ <vo j! o o*u0!no tako to izlazni napon &rajv!ra o! biti 1F># P#F> ili +>$ Prij! nik na o"novu ovi; napona &!t!ktuj! &a li j! po"lata lo*i2ka + ili lo*i2ka 1$ Gako napon o& +> traj! prili2no kratko# no&ovi a 0! za to vr! ! napajanj! ob!zb!%ivati kon&!nzator$ SB8CTn!t protokolo o*u0! j! a&r!"irati &o K+ "lav! no&ova$
SB8CTn!t protokol kao i I'Gn!t i a a"t!r koji za ko unicira "a poj!&ini "lav! no&ovi a$ M!%uti # nj!*ovi "lav! no&ovi ni"u &o&atni ikrokontrol!ri# v!0 i; pr!&"tavlja "p!cijalizovano int!*ri"ano kolo CS@1@$ <no u "!bi i a obj!&inj!n ko unikacioni protokol# &va ulazna i &va izlazna pina i ulazno izlazni &rajv!r$ 8&r!"a o&*ovaraju0!* "lav! no&a ;ar&v!r"ki "! po"tavlja pov!zuju0i pinov! CS@1@ kola ka a"i ili naponu napajanja ("li2no kao ko& I@C)$ Ma"t!r i "lav! no&ovi ko uniciraju pr!ko 1+Bbitni; poruka$ Poruka o! biti j!&na o& K "l!&!0a tipa/ 1$ Sin;ronizacija O Ma"t!r alj! poruku +11111111+$ 'a o"novu nj! "vi "lav! no&ovi "in;ronizuju "voj takt$ @$ Pii O Ma"t!r alj! poruku tipa 8+ 81 8@ 8K 84 Pa Ur 3+ 31 P& *&! 8+ &o 84 bitovi "a&r! a&r!"u !lj!no* no&a# 3+ i 31 lo*i2ko "tanj! koj! "! tr!ba po"taviti na izlazni pinovi a CS@1@ kola# Ur bit (1 za in&ikaciju upi"a) i Pa i P& bitov! za prov!ru parno"ti a&r!"! i o"tatka poruk! K$ .itaj O Ma"t!r alj! poruku 8+ 81 8@ 8K 84 Pa C& *&! "u 8+ O 84 bitovi a&r!"!# Pa bit za prov!ru parno"ti a&r!"! i C& bit (+ za in&ikaciju 2itanja)$ Po prij! u# CS@1@ alj! poruku I+ I1 P& *&! "u I+ i I1 lo*i2ka "tanja na nj!*ovi ulazni pinovi a# a P& j! bit prov!r! parno"ti$ SB8CTn!t kao ni 38:I n! "a&ri int!*ri"an! &rajv!r! za a"t!r# ali i; i a u CS@1@ koli a$ '!op;o&na konv!rzija lo*i2ki; nivoa "! za a"t!r ob!zb!%uj! o&*ovaraju0i konv!rtori a "i*nala$ Pr!ko ovo* protokola a"t!r o! a&r!"irati &o K+ "lav! no&ova# o&no"no o2itavati 6+ u&alj!ni; ulazni; pinova# i po"tavljati &o 6+ u&alj!ni; izlazni; pinova "lav! no&ova$ Po potr!bi# a"t!r o! p!rio&i2no vriti prozivku "vi; no&ova$ Zbo* al! &uin! poruka i tro"t!p!no* "tanja na liniji# o*u0! j! prozivati "vi; K+ no&ova 6 &o P puta u "!kun&i$ >i! o ovo protokolu i at! u 2a"opi"u Circuit C!llar broj @1$
1K@
46. CAN
Svi raniji principi za;t!vaju "o9tv!r"ku &!t!kciju iMili kor!kciju *r!aka u okru!nju po&lono " !tnja a$ 'aravno &a j! to o*u0! ura&iti (kao u I'Gn!t protokolu)# ali Microc;ip "! potru&io pa j! "o9tv!r koji bi ina2! opt!r!0ivao ikrokontrol!r pr!bacio u ;ar&v!r$ Tako j!&no int!*ri"ano kolo (MCP@F1+ ili MCP@F1F) obavlja ko unikacionu 9unciju (u kojoj j! i pl! !ntirana CCC &!t!kcija *r!aka# kor!kcija *r!aka# izazivanj! int!rapta po prij! u "i*nala$$$)# a &ru*o pr!&"tavlja &rajv!r za "pojni put (MCP@FF+ ili MCP@FF1)$ 3rajv!ro upravlja ko unikacioni 2ip# a ko unikacioni 2ipo ikrokontrol!r pr!ko SPI protokola$ I"to kao CS48F# i C8' "tan&ar& kori"ti &i9!r!ncijaln! "i*nal!$ M!%uti # za razliku o& CS48F# C8' "tan&ar&o propi"an j! i ko unikacioni protokol$ - nj! u j! ikrokontrol!r ra"t!r!0!n o& ko unikacioni; al*orita a# i o! "vu "voju "na*u upotr!biti za ono za ta j! i na !nj!n$ Po C8' protokolu n! vri "! (kao ko& I@C ili I'Gn!t) prozivka "vako* poj!&ina2no* no&a$ '!$ 'o&ovi "! n! a&r!"iraju ni po"!bni pinovi a kao ko& SPI protokola$ - !"to to*a# no&ovi "u ravnopravni$ Svi oni oraju o&r!%!no vr! ! Io"lukivatiJ "tanj! na liniji pr! n!*o to po2nu "a pr!&ajo # kako n! bi upali u v!0 po"toj!0u v!zu$ -koliko "! ipak &o*o&i &a &va ili vi! no&ova i"tovr! !no zapo2nu pr!&aju po&ataka# na "c!nu "tupa kolo za &!t!kciju kolizij! (!n*$ Colli"ion 3!t!ction)$ Po &!t!kciji kolizij! no& koji j! prvi pr!&ao lo*i2ku + unutar po&atka na"tavlja "a pr!&ajo # &ok o"tali (2i &!t!ktuju + &ok u "tvari alju 1) o !ntalno pr!"taju "a pr!&ajo # 2!kaju &ok "! n! zavri "a "lanj! kao i n!ko vr! ! nakon to*a (&a "! n! bi javilo novo pr!plitanj!)# i t!k on&a pokuavaju novu pr!&aju$ Gako j! lo*i2ka + I&o inantnaJ# ona 0! uv!k pr!bri"ati lo*i2ku 1 ("li2no kao u I@C)$ 'a taj na2in po&atak 0! "ti0i &o prij! nika n!iz !nj!n i b!z ikakvo* kanj!nja ili kor!kcij!# a za ko unikaciju "! (zbo* i"t! linij! za "lanj! i prij! po&ataka) kori"t! "a o &va provo&nika (i zaj!&ni2ka a"a)$ - C8' r!i poj!&ina2ni no&ovi n! aju a&r!"!$ C8' protokol nij! a&r!"no v!0 ko an&no orj!nti"an "i"t! $ Zbo* to*a no&ovi obi2no ko uniciraju iz !%u "!b! p!rio&i2no alju0i poruk! po liniji$ 8ko j! n!ko ! potr!bna# !to u j!$ -koliko nij!# i*nori"a0! "!$ Struktura C8' protokola o o*u0ava upotr!bu ;ar&v!r"ki; C8' !k"pan&!ra (kao ko& SB8CTn!t v!z!)$ Microc;ip j! zaklju2io &a "! v!liki broj no&ova "a"toji j!&ino o& o&*ovaraju0!* -MI ;ar&v!ra (-MI pinova# 8M3 konv!rtora ili PUM o&ulatora)# pa j! proizv!o "!riju -MI !k"pan&!ra koji "! o*u &ir!ktno pov!zati na C8' r!u# i 2iji j! ;ar&v!ro o*u0a &ir!ktna anipulacija o& "tran! o"tali; (int!li*!ntniji;) no&ova$ Za vi! &!talja po*l!&ajt! &ata";!!tov! &rajv!ra# ko unikaciono* 2ipa# C8' IM< !k"pan&!ra# 8'@1F# 8'@@8 i 8'PF4$ Cazvitko C8' r!! ori*inalni protokol pr!trp!o j! iz !n! "o9tv!ra# pa j! o*u0! "r!"ti v!rzij! C8' 1$@# C8' @$+8# C8' @$+5 i =C8'$ 'a "r!0u# novij! v!rzij! po&ravaju "tarij! (!n*$ backRar& co patibil!)$ Za vi! &!talja po*l!&ajt! 8'Y16$ 1KK
7!&an &!o &o "a&a opi"ani; ko unikacioni; protokola j! ;ar&v!r"ki int!*ri"an u ja2i "!rija a ikrokontrol!ra$ To ipak n! zna2i &a "! "labiji ikrokontrol!ri (2itaj PIC16F84) n! o*u kori"titi za o&r!%!n! vr"t! ko unikacija$ -v!k j! o*u0! (u "lu2aju &a j! ikrokontrol!r &ovoljno brz) pravovr! !no &ir!ktno anipuli"ati ulazno izlazni pinovi a# i na taj na2in o"tvariti "o9tv!r"ku i pl! !ntaciju ;ar&v!r"ki; ko unikacioni; rutina (!n*$ bitBban*in*) kao to j! ilu"trovano u CS@K@ v!zi$ Taj na2in n!ka&a o! biti i n!op;o&an (na pri !r priliko i"tovr! !n! upotr!b! K CS@K@ v!z! j!&ni ikrokontrol!ro )$ Go unikacioni protokoli n! pr!"taju &a "! razvijaju$ I "a i v!rovatno znat! &a "! n!ka&a o*ao kori"titi j!&ino &ialBup# zati IS3'# a on&a 83S:$ 5rzina i &alj! ra"t!$ Mikrokontrol!ri "u u potpuno i"toj "ituaciji$
1K4
&rajv!r
"o9tv!r nij! potr!ban i pl! !nt$ n! n! i pl! !nt$ i pl! !nt$ i pl! !nt$ n! ;ar&v!r"ki MCP@F1+ aN$ broj zavi"i o& a&r$ 1 pr!&$# 1 K@ pr!&$# K@ 1 pr!&$# F1@ 1 pr!&$# alo zavi"i o& 1 a"t!r H 1 a"t!r H 64 1 a"t!r H K+ 11@ pr!&$# 2lanova a*i"tral! prij$ prij$ prij$ prij$ kapacit!ta linij! 16 "lav! "lav! "lav! 11@ prij$ aN$ brzina o*rani2!na @+kbitaMS 1++kbitaMS 1++kbitaMS FMbitaMS 1++# 4++kbitaMS @+kbitaMS ? ? 1MbitMS ;ar&v!ro &o KMbitaMS ili K#@MbitaMS aN &aljina ala#oko 1F 1#@k 1#@k ala#oko ala#oko @+c 4+ ? ? 4+ pri +$F +$F 1MbitMS &!t!k$ *r!"aka n! bit parno"ti zav$ o& "o9t$ n! n! n! parno"t H? &va bita ;ar&v!r"ka kor!k$*r!"aka n! zav$ o& "o9t$ aN$ napon +># HF> B@F># H@F> &rajv!ra o"!tljivo"t zavi"i o& HBK># prij! nika ;ar&v!ra pr! a a"i n!aktivno +> pr!ko HK> "tanj! na2in pr!n$ zav$o& ;ar&$ a"in;roni "i pl$br$prov &upl$br$prov$ r!p!titor ul$ i p!&an"a zav$ o& a*$ zav$ o& a*$ M zav$o& ;ar&v$ 1 H a"a @ H a"a M Kk &o Pk zav$ o& "o9t$ n! BP># H1@> BP># H1@>
n!
+># HF>
n!
+># HF>
parno"ti n!
+># P$F># 1F>
;ar&v!r"ka
B4+># H4+> HB+#F> &i9!r!ncijalni n! a "i*nala a"in;roni @H M 1++k a"a
HB+$@> HB+$@> zavi"i o& zavi"i o& zav$ o& &rajv$ HB?> tro"t!p!na &i9!r!ncijalni &i9!r!ncijalni ;ar&v!ra ;ar&v!ra &i9!r!ncijalni zavi"i o& pr!ko +#4> n! a takta vi"oka i p$ b!z Pr!ko Y> pr!ko ?> 1F> "o9tv!ra razlik! u H takta razlik! u H razlik! zav$ o& "o9t$ a"in;roni "in;roni "in;roni a"in;roni a"in;roni a"in;roni @ H a"a 4 H a"a &a aV1@k @ H a"a M &a aV1@k 4 H a"a M M zav$o& ;ar&v$ @ H a"a M M zav$o& ;ar&v$ 1 H a"a @ M M M M zav$ o& &rajv$ zav$ o& optok$ 1H a"a M M zav$ o& ;ar&v$
16+
Gako j! i p!&an"a izlazni; pinova (pri oba lo*i2ka "tanja) PIC ikrokontrol!ra prili2no ni"ka ( anja o& PF[ pri naponu napajanja o& F>) &alji ir!nj! otporn! r!! n! bi "! po"ti*li za&ovoljavaju0i r!zultati# pr! "v!*a u po*l!&u lin!arno"ti izlazno* napona$ <"i to*a# pr!cizno"t ovo* kola u v!likoj !ri zavi"i o& ta2ni; vr!&no"ti i tol!rancij! upotr!blj!ni; otpornika$ Po potr!bi binarna t!in"ka r!a o! "! napraviti "a lo*arita "ko a n! lin!arno karakt!ri"tiko izlazno* "i*nala$ To o! biti o& kori"ti ko& pov!0anja &ina i2ko* op"!*a *ovora u "i"t! i a za &i*italizaciju zvuka# j!r po :aplacianovoj &i"tribuciji obla"t oko napona bli"ko* + no"i vi! in9or acija o& obla"ti "a v!0i a plitu&a a$ Za vi! &!talja ovakv! t!in"k! r!! po*l!&ajt! ;ttp/MMRRR$k!4nWv$co Min&!N@$;t $ - "ituacija a ka&a j! n!op;o&na v!0a r!zolucija 3M8 konv!rtora o! "! kori"titi 3M 8 konv!rtor "a CB@C otporni nizo (!n*$ CB@C la&&!r 38C)$ 1K6
Go& ov! ! !# u !"to &upliranja vr!&no"ti otporno"ti kori"t! "! otpornici i"ti; vr!&no"ti$ Gori0!nj! int!*ri"ano* otporno* niza# kolo "a ovakvo ! o o! 2ak i ati anj! &i !nzij!$ C!zolucija ovo* kola j! o" obitna$ To zna2i &a "! ovi kolo o! (za razliku o& pr!t;o&no*) &obiti 2ak @FF "tabilni; analo*ni; "tanja$ - tablici o!t! vi&!ti n!k! tipi2n! vr!&no"ti izlazno* napona u zavi"no"ti o& po"tavlj!no* binarno* "tanja na P<CT5$ De0"%a,/" +r*1 + @P FK PY 1+F 1FP @+Y @KF @FF RB7 RB0 '5,a5/" /ap*/ +> +#F> 1> 1#F> @> K> 4> 4#F> F
:in!arno"t ovo* kola j! "koro i&!alna# a zavi"i j!&ino o& tol!rancij! upotr!blj!ni; otpornika$ Za ko pl!tnu tablicu izlazni; napona i &!talj! po*l!&ajt! 8'6FF "a ;ttp/MM RRR$ icroc;ip$co M$
Za *!n!ri"anj! "lo!niji; tala"ni; oblika izlazni; napona# najprakti2nij! j! uzi ati bajtov! za P<TC5 iz tab!l!$ Tako "! o*u "a lako0o r!alizovati t!"t!ra"ti# trou*la"ti# "inu"oi&ni oblici napona# pa 2ak i 3TMF tonovi$ -koliko ikrokontrol!r tr!ba izvravati i &ru*! op!racij! za vr! ! *!n!ri"anja "i*nala# o!t! j!&no"tavnij! 9unkcij! r!alizovati i "o9tv!r"ki$ 'a pri !r# u int!rapt rutini o!t! n!pr!ki&no pov!0avati "tanj! P<CT5 r!*i"tra$ Tako &obijat! t!"t!ra"ti "i*nal$ 'aiz !ni2ni pov!0avanj! i " anjivanj! "tanja P<CT5 r!*i"tra &obijat! t!"t!ra"ti "i*nal$ I "inu"ni "i*nal o!t! &obiti kori0!nj! at! ati2ki; 9unkcija$
1KP
'a"tavak "l!&i
Por!& ovi;# po"toji jo no*o# no*o principa po koji a "! o! i pl! !ntovati 3M 8 konv!rzija$ Po*l!&ajt! ;ttp/MM!n$Rikip!&ia$or*MRikiM8nalo*BtoB&i*italLconv!rt!r za vi! &!talja$ Za PIC16F84 o& zna2aja bi o*ao biti int!r!"antan na2in o&ulacij! tona "a &oRnloa& "!kcij! "ajta RRR$!l!ktronika$ba (pic"oun&)$ ?ornja *rani2na 9r!kv!ncija koju o!t! &obiti bilo koji o& prikazani; na2inina 3M 8 konv!rzij! zavi"i i"klju2ivo o& brzin! o"cilatora ikrokontrol!ra$ Svakako &a j! o!t! pov!0ati anji broj! razli2iti; "! plova koj! kori"tit! za *!n!ri"anj! !lj!no* tala"no* oblika# ali u to "lu2aju *ubit! na pr!cizno"ti *!n!ri"ano* "i*nala$ Sv! zavi"i o& to*a kakav "i*nal !lit! *!n!ri"ati$ 'a pri !r 2!tvorobitna r!zolucija 3M 8 konv!rtora "a"vi j! &ovoljna za *!n!ri"anj! prili2no 2i"to* "inu"oi&no* "i*nala# ali j! za *!n!ri"anj! 3TMF tonova n!op;o&na bar o" obitna r!zolucija$ -koliko "! ikrokontrol!ro *!n!riu "inu"oi&alni naponi "taln! 9r!kv!ncij!# po!ljno j! na izlazu 3M8 konv!rtora "taviti analo*ni 9ilt!r# propu"nik !lj!no* op"!*a 9r!kv!ncij!$ Po"!bno j! to po!ljno ko& "!rij"ki; 3M8 konv!rtora zbo* ;ar onika i " !tnji koj! oni *!n!riu$
1K8
<vaj 8M3 konv!rtor "p!ci9i2an j! po to ! to u j! za ra& potr!ban 3M8 konv!rtor$ Taj 3M 8 konv!rtor u ! i j! r!alizovan CM@C otporni nizo $ Izlaz 3M8 konv!rtora vo&i "! na j!&an ulaz !k"t!rno* napon"ko* ko paratora# a na &ru*i ulaz &ovo&i "! !r!ni napon$ Izlazni napon 3M8 konv!rtora "! pov!0ava korak po korak (o& +> &o F>)$ - tr!nutku ka&a napon"ki ko parator pro !ni "tanj!# o2ita "! tr!nutno "tanj! na izlazni pinovi a 3M8 konv!rtora$ To "tanj! o&*ovara !r!no analo*no naponu$ Sa" i ti pr!cizno"t 8M3 konv!rtora u najv!0oj !ri zavi"i o& pr!cizno"ti 3M8 konv!rtora$ >!rovatno i "a i uvi%at! anu ovo* principa$ -koliko j! !r!ni napon blizu "voj! ak"i aln! vr!&no"ti# ikrokontrol!r ora 3M8 konv!rtoro pov!0avati napon o& +> pa "v! &o !r!no* napona$ To o! potrajati$ 3a bi "! vr! ! !r!nja to vi! "kratilo# pri !njuj! "! princip opi"an u nar!&no po*lavlju$ ?lavna rutina pro*ra Pe& incf movf movwf btfsc goto ... a "a ovakvi SP"RTB,F SP"RTB,% P"RTB P"RTA,RA0 Pe& principo iz*l!&ala bi ovako/ A Pov!0aj S;a&&oR r!*i"tar$ A Pr!baci u U# A pa u P<CT5 O tako pov!0aj izlazni napon$ A 7!"u li "! ovi naponi "a&a izj!&na2ili? A 'i"u# pov!0avaj i &alj!$ A 7!"u# U "a&ri vr!&no"t 8M3 konv!rzij!$ 14+
<p!t za olit! "vo* prijat!lja &a za i"li broj iz !%u + i 1+++$ Za i"lio j!$ Sa&a *a pitajt! j! li nj!*ov broj v!0i o& \+H((1+++B+)M@) V F++] F++$ 'ij!$ Zna2i nj!*ov broj j! iz !%u + i F++$ 3a li j! v!0i o& \+H((F++B+)M@) V @F+] @F+? 'ij!$ Zna2i broj j! iz !%u + i @F+$ 3a li j! v!0i o& \+H((@F+B+)M@) V 1@F] 1@F? 'ij!$ 5roj j! iz !%u + i 1@F$ 3a li j! v!0i o& \+H((1@FB+)M@) V 6@#F] 6K? 7!"t!$ 5roj j! iz !%u 6K i 1@F$ 3a li j! v!0i o& \6KH((1@FB6K)M@) V Y4] Y4? 7!"t!$ 5roj j! iz !%u Y4 i 1@F$
3a li j! v!0i o& \Y4H((1@FBY4)M@) V 1+Y#F] 11+? 7!"t!$ 5roj j! iz !%u 11+ i 1@F$ 3a li j! v!0i o& \11+H((1@FB11+)M@) V 11P#F] 118? 'ij!$ 5roj j! iz !%u 11+ i 118$ 3a li j! v!0i o& \11+H((118B11+)M@) V 114] 114? 'ij!$ 5roj j! iz !%u 11+ i 114$ 3a li j! v!0i o& \11+H((114B11+)M@) V 11@] 11@? 7!"t!$ 5roj j! iz !%u 11@ i 114$ 3a li j! v!0i o& \11@H((114B11@)M@) V 11K] 11K? 7!"t!$ <n&a j! to broj 114$ <vaj princip o!t! za i"liti kao "!2!nj! pic!$ I"!2! "! na pola# zati na o" in!# i tako "v! &o naj anj!* par2!ta$ na 2!tvrtin!# pa
>i&it! &a "t! za razliku o& pr!t;o&no* "lu2aja "a "a o 1+ pitanja u"p!li &a &o%!t! &o ta2no* r!zultata$ = "a&a$ -koliko ovaj princip pri !nit! u !"to (kao u broja2ko 8M 3 konv!rtoru) po"t!p!no* pov!0anja napona korak po korak# vr! ! utro!no na !r!nj! bi0! no*o# no*o kra0!# uz potpuno i"tu !l!ktri2nu ! u$ Pro*ra j! prili2no j!&no"tavan$ 'ajpr! "! "!tuj! bit najv!0! t!in! (MS5 B C5P) na P<CT5 r!*i"tru$ - zavi"no"ti o& "tanja napon"ko* ko paratora# ovaj pin o"tavi "! "!tovan ili "! r!"!tuj!$ <n&a "! pr!lazi na C56# C5F# C54$$$ clrf P"RTB A Inicijalizuj P<CT5 bsf P"RTB,7 A S!tuj MS5 btfss P"RTA,0 A -koliko j! napon pr!v!liki# bcf P"RTB,7 A r!"!tuj *a$ bsf P"RTB,6 A S!tuj nar!&ni btfss P"RTA,0 A -koliko j! napon pr!v!liki# bcf P"RTB,6 A r!"!tuj *a$ bsf P"RTB,5 A S!tuj nar!&ni $$$ I tako "v! &o C5+ pina$ 'a kraju 0! P<CT5 "a&rati iz !r!nu vr!&no"t napona$ Go& j! &at ilu"trativno# a u pravi pro*ra i a bi "! kori"tio i S;a&&oR r!*i"tar$ 141
<vo kolo najpr! &ri C5+ na lo*i2koj + &ovoljno &u*o &a "! kon&!nzator i"prazni# o&no"no &a u oba pola bu&u na pot!ncijalu o& +>$ Zati "! pin C5+ po"tavlja u "tanj! ulaza# i !ri "! vr! ! za koj! 0! "! na pinu javiti lo*i2ka j!&inica$ Gako "! kon&!nzator "a&a puni pr!ko otpornika# ovo vr! ! &ir!ktno 0! zavi"iti o& tr!nutn! vr!&no"ti otporno"ti$ Pr!&no"t ov! ! ! na& pr!t;o&no j! o*u0no"t pojav! int!rapta po pro !ni "tanja na C5+MI'T pinu# to ra"t!r!0uj! ikrokontrol!r za o"tal! potr!b!$ Sa ovi kolo "! u*lavno &obijaju najbolji r!zultati$ C5+ "! po"tavi na lo*i2ku 1# kon&!nzator "! napuni# a zati "! !ri vr! ! koj! j! potr!bno &a "! na pinu javi lo*i2ka +$ I "a ovo ! o o*u0! j! po zavr!no !r!nju oti0i na int!rapt rutinu$ Mo&a >a 2u&no &!luj! taj "kok na int!rapt rutinu$ Gako 0! on&a pro*ra !riti vr! !? 7!&no"tavno$ 7o j!&ni int!rapto izazvani taj !ro $ <v! t!;nik! o*u "! pri !niti za bilo koju vr!&no"t otpornika i kon&!nzatora$ M!%uti # ukoliko "! kori"ti kon&!nzator kapacitivno"ti v!0! o& 1++nF iz !%u 14@
kon&!nzatora i pina potr!bno j! po"taviti zatitni otpornik o& oko @@+[$ <n "pr!2ava pr!v!liku "truju na pinu ikrokontrol!ra u tr!nutku na*lo* punj!nja ili pranj!nja kon&!nzatora$ Microc;ip 2ak navo&i &a "! u"l!& pr!v!lik! "truj! na pinovi a portova o! pro !niti "tanj! TCIS8 ili TCIS5 r!*i"tra# pa *a j! "to*a po!ljno povr! !no "o9tv!r"ki Io"v!itiS$ 3onja *ranica kapacitivno"ti kon&!nzatora zavi"i j!&ino o& brzin! va!* ikrokontrol!ra$ Pri kri"talu o& 4M,z "a"vi j! o*u0! kori"titi vr!&no"ti o& KKpF$ 6to anji kon&!nzator upotr!bljavat!# !r!nj! 0! biti kra0!$ Gako vr! ! za koj! "! kon&!nzator napunio ili i"przanio n! a &ir!ktn! v!z! "a c!lziju"ovi "t!p!ni a ili "v!tlo"ni luk"o # vr!&no"ti ovi; v!li2ina najj!&no"tavnij! j! &obiti iz o&*ovarajuc! tab!l!$ 5ilo koja izobli2!nja pri !r!nju (poput n!lin!arn! karakt!ri"tik! upotr!blj!no* "!nzora) o*u "! o& a; ko p!nzovati u "a oj tab!li$ 7o j!&na o*u0no"t *ornji; ! a o*l!&a "! u o*u0no0u !r!nja kapacitivno"ti u !"to otporno"ti$ 'a taj na2in o! "! na pri !r iz !riti poloaj o"ovin! pro !nljivo* kon&!nzatora$ 'aravno# u to "lu2aju u !"to pro !nljivo*# u ! u j! potr!bno po"taviti obi2an otpornik to anj!* "t!p!na tol!rancij!$ <v! ! ! zbo* "voj! j!&no"tavno"ti i aju j!&an v!liki n!&o"tatak$ Sa nji a nij! o*u0! &obiti v!0u pr!cizno"t zbo* pro !n! ra∋ karakt!ri"tika upotr!blj!no* kon&!nzatora u"l!& pro !n! ra&n! t! p!ratur!$ Zbo* to*a "! o! kori"titi ko p!nzacija ovi; n!&o"tataka kori"t!0i kalibracioni otpornik i !r!nj! nj!*ov! vr!&no"ti n!po"r!&no pr! !r!nja otporno"ti "!nzora$ Za &!talj! po*l!&ajt! 8'F1@# 8'F1K i 8'86K "a ;ttp/MMRRR$ icroc;ip$co M$ Mo&a " atrat! &a ovo nij! prava 8M3 konv!rzija zbo* o*rani2!nja na !r!nj! otporno"ti i kapacitivno"ti# a n! napona1 - pravu "t!$ M!%uti # uz al! iz !n! !l!ktri2n! ! ! o*u0! j! r!alizovati pravu &!"!tobitnu 8M3 konv!rziju$ Za princip ra&a i &!talj! po*l!&ajt! ;ttp/MMRRR$!l!$uva$!"Mjj!"u"Ma&"&$p&9$ <vakav princip !r!nja u lit!raturi "! naziva jo i Sin*l! Slop! 8M3 konv!rtor$
14K
- ovoj ! i upotr!blj!no j! popularno int!*ri"ano kolo '=FFF pov!zano kao a"tabilni ultivibrator$ Tako pov!zano# ono 0! u zavi"no"ti o& kapacitivno"ti !l!ktrolit"ko* kon&!nzatora o& 1ZF i otporno"ti !r!no* otpornika o& 1+k[ u ikrokontrol!r "lati i pul"!# ta2no o&r!%!no 9r!kv!ncijo $ 6to j! otporno"t pro !nljivo* otpornika anja# ova 9r!kv!ncija 0! biti v!0a$ 8l*orita pro*ra a tr!bao bi u 9ik"no vr! !n"ko int!rvalu (npr$ +#FS O to &ui int!rval to v!0a pr!cizno"t) brojati i pul"!$ Gako j! za !li inaciju " !tnji po!ljno kori"titi ulaz "a itovi oki&a2! # i pul"! j! najprakti2nij! &ov!"ti na C84 (ukoliko "! n! kori"t! int!rapti za brojanj!) ili C5+ (ukoliko "! kori"t! int!rapti za brojanj!) pin$ C5+ pin "! ponaa kao ulaz "a itovi oki&a2! j!&ino ka&a j! po&!!n za int!rapt!$ -koliko j! &aljina o& ikrokontrol!ra &o '=FFF pr!vi! v!lika# o!t! pov!0ati napon napajanja '=FFF$ Za jo v!0! &aljin! o! "! ko binovati '=FFF "a CS48F &rajv!ro $ - "tvari kako j! ov&! potr!ban j!&ino pr!&ajnik# &!o int!*ri"ano* inv!rtora "i*nala (P4+6) bi0! &ovoljan$ -koliko u !"to pro !nljivo* otpornika po"tavit! "talan otpornik alo* "t!p!na tol!rancij! &obijat! o&li2an !ra2 kapacitivno"ti upotr!blj!no* kon&!nzatora$ 3!talj! o ovo principu i at! na ;ttp/MMRRR$*lobu$n!tMppM!n*li";MPPMn!FFF$;t $ Tu "! nalaz! po&aci o 9r!kv!ncija a u zavi"no"ti o& kapacitivno"ti i otporno"ti$ 144
'a"tavak "l!&i1
14F
146
Pro*ra j! i"pitan po& UinY8 i Uin@+++# a &o"tupna j! i nj!*ova :inuN v!rzija$ 5!"platan j! (&at j! 2ak i izvorni ko&) i nalazi "! na o "ajtu 2iji link o!t! na0i na kraju ovo* uput"tva$ 14P
148
3a li j! ovo &obar na2in kontrol!? 'ij!1 Svi "!nzori po&loni "u " !tnja a$ 6ta o! izazvati t! " !tnj!? Za po2!tak# tu j! "a ikrokontrol!r$ 'j!*ov takt o"cilatora proizv!0! alo " anj!nj! i pov!0anj! napona napajanja$ 3alj!# tu "u ur!%aji koji "! kontroliu ikrokontrol!ro $ Pri ultipl!k"u :=3 &i"pl!ja najvi! "truj! troi0! &i"pl!j na ko ! "! prikazuj! broj 8 (ta&a "u "v! poj!&ina2n! :=3 uklju2!n!)# a naj anj! onaj "a broj! 1 (uklju2!na "a o &v! :=3)$ '! ora to obav!zno biti :=3 &i"pl!j$ I"ti !9!kat prouzrokova0! i r!l!j *r!ja2a$ Sl!&!0a j! vaa ko inica "a "voji ( a&! in C;ina) u"i"iva2! $ Iako 0! &!kaplin* kon&!nzator u &obroj !ri !li ini"ati ov! " !tnj!# j!&an &!o 0! "! "vakako pr!n!ti i &o "!nzora# i tu 0! proizv!ti u $ -pravo j! taj u po*uban za u"p!nu kontrolu t! p!ratur!$ Sa nji 0! pri i"toj t! p!raturi r!zultat 8M3 konv!rzij! j!&no biti 1P+# a &ru*i put 18+# to 0! ikrokontrol!r ";vatiti kao o&*ovaraju0u pro !nu t! p!ratur!# i brzo 0! uklju2ivati i i"klju2ivati r!l!j$ Gontakti obi2ni; r!l!ja j!&no"tavno ni"u na !nj!ni za takav ra&# i r!l!j 0! po"l! par n!&!lja "tra&ati$ 6ta j! r!!nj!? C!0i ikrokontrol!ru &a pro !ni "tanj! j!&ino ukoliko "! iz !r!na t! p!ratura &ovoljno (npr$ za $1+) u&aljila o& za&at! vr!&no"ti ($1PF)# "li2no kao to to itov oki&a2 ra&i ;ar&v!r"ki$ Zna2i# &a uklju2i *r!ja2 ukoliko j! o2itana vr!&no"t 16F i anja# i &a *a i"klju2i ukoliko j! o2itana vr!&no"t 18F i v!0a$ <v&! j! najbolj! ra&i to anj!* variranja t! p!ratur! po&!"iti *rani2n! vr!&no"tzi# tako &a "! po"ti*n! ko pro i" iz !%u 2!0!* ra&a r!l!ja i "poljni; " !tnji$ 3a li j! "a&a "v! u r!&u? I &alj! n! ora &a bu&!$
-koliko j! "!nzor t! p!ratur! po"tavlj!n u blizini *r!ja2a# u !"to !r!nja t! p!ratur! pro"torij!# !ri0! "! t! p!ratura *r!ja2a$ Tako 0! pri uklju2!nju *r!ja2a r!zultat 8M3 konv!rzij! v!o a brzo po"tati $@FF# o&no"no# i &alj! 0! "! r!l!j pr!vi! brzo uklju2ivati i i"klju2ivati$ <vo "! o! r!iti u&aljavanj! "!nzora na !"to *&! n!0! &ir!ktno o"!0ati t! p!raturu *r!ja2a$ <vo bi o*lo biti &ovoljno &obro r!!nj! za <'M<FF (uklju2iMi"klju2i) kontrolu *r!ja2a (r!l!jo )$ M!%uti # n!ka&a <'M<FF kontrola j!&no"tavno nij! &ovoljna$ 14Y
ti "ituacija a kori"ti "! kontinualna r!*ulacija "na*!# 9azni ("li2no kao PUM za j!&no" !rni napon)$
po ako
triaka
-z i o za pri !r &a !lit! u &voritu napraviti inkubator za jaja$ <v&! j! ra&i to anji; o"cilacija t! p!ratur! po!ljno kori"titi kontinualnu r!*ulaciju$ M!%uti # ta "a "ituacijo ka&a napolju po2n! &a pa&a kia (o&j!&no za;la&ni)? -z &ovoljno &obro toplotno izolovan inkubator# n!0! biti nikakvi; probl! a$ 8li n!ka&a j!&no"tavno n! a o &ovoljno "tiropora (i op!t j! "n!* izn!na&io na! putar!)$ - ovo "lu2aju potr!bno j! ikrokontrol!ru &o&ati jo alo lo*ik!$ <"i t! p!ratur! potpuno i"ti principi pri !njuju "! za kontrolu bilo koj! 9izi2k! v!li2in!$ >i! o ovi kontrolni proc!"i a i at! u 2a"opi"i a Circuit C!llar br$ 1P i 1Y$
1F+
Gao to vi&it!# ukoliko "! "i*nal !nja u " !ru ++# +1# 11# 1+ to zna2i &a "! o"ovina okr!0! u " !ru kazaljk! na "atu$ - "uprotno (1+# 11# +1# ++) o"ovina !nko&!ra "! okr!0! u "uprotno " !ru$ Takvo "tanj! "i*nala o o*u0ava &a por!%!nj! pr!t;o&no* i "a&anj!* "tanja lako otkrij! o u koj! "! " !ru okr!0! o"ovina$ 'a pri !r# ukoliko j! pr!t;o&no "tanj! bilo 11 a "a&anj! j! +1# o"ovina "! okr!0! "uprotno o& kazaljk! na "atu$ Iako >a o! iz*l!&ati &a "u rotacioni !nko&!ri "pori# to nij! "lu2aj$ <ni o*u i ati i pr!ko @FF poloaja za "a o 1 okr!taj o"ovin!$ Mo! "! &!"iti &a zbo* "poro"ti ikrokontrol!ra (ukoliko izvrava i &ru*! op!racij! za vr! ! okr!tanja pot!ncio !tra) PIC nakon "tanja 1+ &!t!ktuj! "tanj! +1 to j! o2i*l!&no *r!ka$ 7o *or!# pri pr!vi! brzo okr!tanju npr$ u " !ru kazaljk! na "atu o*u0! j! &a nakon "tanja +1 n! o2ita (zbo* "poroti) "l!&!0a @ "tanja (11 i 1+)# v!0 t!k tr!0! (++)# pa na o"novu to*a o! zaklju2iti &a j! o"ovina okr!nuta u "uprotno " !ru$ Go& !;ani2ki; rotacioni; !nko&!ra "ituacija j! jo "lo!nija# j!r "! ora izvravati i &!bouncin* rutina$ <na "! u*lavno o! upro"titi tako to "! u !"to nj! za j!&nu pro !nu "tanja !nko&!ra trai uza"topan "l!& @ ili vi! i"pravni; "tanja$ 'a taj na2in j! po"ti*nuta i"pravna &!t!kcija trvovanj! r!zolucij! !nko&!ra$ -koliko n! !lit! iz*ubiti na r!zoluciji o!t! iz !%u !;ani2ko* !nko&!ra i ikrokontrol!ra po"taviti ;ar&v!r"ki &!bouncin* ("a r!&ni otporniko iz !%u pina ikrokontrol!ra i !nko&!ra i kon&!nzatoro iz !%u izlaza !nko&!ra i a"!)$ 6to j! v!0a kapacitivno"t kon&!nzatora# v!0a 0! biti i uno"t na " !tnj! varni2!nja# ali 0! ak"i alna brzina okr!tanja o"ovin! !nko&!ra biti "raz !rno anja$ <bi2no j! &ovoljna vr!&no"t o& 1+nF$ -potr!blj!ni kon&!nzatori oraju biti o&abrani pr! a ak"i alnoj r!zoluciji i ak"i alnoj proc!nj!noj brzini okr!tanja o"ovin! !nko&!ra$ Gako 0! "! "tanj! o"ovin! !nko&!ra najv!rovatnij! r!tko ka&a !njati# najprakti2nij! j! pov!zati izlaz! rotaciono* !nko&!ra na int!rapt ulaz! ikrokontrol!ra$ - "lu2aju &a j! potr!bno "ni anj! tr!nutn! (ap"olutn!) vr!&no"ti poloaja o"ovin! rotaciono* !nko&!ra u ==PC<M# prakti2nij! j! "ni iti j! t!k nakon to "! o"ovina pr!"tan! po !rati (na pri !r 6S nakon za&nj!* "i*nala)$ 'a taj na2in titi "! ==PC<M$ >i! &!talja o upotr!bi r!lativni; rotacioni; !nko&!ra i at! ;ttp/MMRRR$ c ani"$co Mc;uckMrobotic"Mproj!ct"MlabBNKMXua&ratrak$;t l$ na "ajtu
Tr!bat! ";vatiti &a rotacioni !nko&!ri n! o*u za !niti analo*n! pot!ncio !tr! u pravo " i"lu t! r!2i$ <ni n! aju nikakvu v!zu "a pro !no otporno"ti$ To "u "a o &i*italni &ava2i poloaja o"ovin!$ M!%uti # to n! zna2i &a "! (u ko binaciji "a ikrokontrol!ro ) n! o*u upotr!biti kao pot!ncio !tar$ 3ovoljno j! o2itanu vr!&no"t &ov!"ti na 3M8 konv!rtor i i at! izlazni napon proporcionalan poloaju o"ovin! !nko&!ra$ Taj analo*ni izlazni napon o!t! kori"titi kao izvor napajanja za pr!&poja2ava2 ka"!to9ona# 2i ! "t! &obili o&li2an r!*ulator ja2in! zvuka$ Po"toj! int!*ri"ana kola koja izvravaju upravo tu op!raciju b!z upotr!b! 3M8 konv!rtora (3S166Y# T388FF1)$ 8 ukoliko "t! ba r!!ni &a &obij!t! pro !nljivu otporno"t pov!it! na PIC bilo koji pr!tvara2 &i*italno* "i*nala u otporno"t$ 'a pri !r 3F1P+4$
1F@
1FK
1F4
Motori koji "! i por!& r!&uktora n! o*u &ovoljno brzo zau"taviti (i aju v!liki za ajac) oraju por!& rotaciono* !nko&!ra pri !njivati u"poravanj!# ko2!nj! pa ubrzanj!$ To j! obja"nj!no u 8'FK@ Pon!ka& "! rotacioni !nko&!r n! o! upotr!biti zbo* pr!v!lik! ak"i aln! brzin! otora$ 'a "r!0u# o&*ovaraju0! &ava2! poloaja o"ovin! otora nij! t!ko napraviti uz par o&*ovaraju0i; "!nzora$ >i! o to ! i at! u 8'F6Y i 8'8Y4$
1FF
1F6
Slika
M!%uti # ukoliko ikrokontrol!r tr!ba &!t!ktovati prolazak kroz + za @@+># ovaj na2in nij! o*u0! kori"titi zbo* pr!v!liko* napona na bazi tranzi"tora i iz b!zb!&no"ni; razlo*a$ 3a bi "! ovaj probl! pr!vaziao# o! "! kori"titi "l!&!0a !l!ktri2na ! a/ Slika
Mo&a "! pitat! zbo* 2!*a j! ovoliko *ra&iva po"v!0!no upravo analo*noj !l!ktronici$ PIC16F84 "a po "!bi n! n! o! no*o to*a$ 3a bi ra&io ita kori"no potr!bno j! &ov!"ti u "polja n!k! "i*nal!$ 3a li 0! to biti "i*nal "a t!r o !tra# ta;o !tra# a!ro !rta# ;i&ro !tra# baro !tra ili t!r opara u ovo tr!nutku nij! bitno$ 5itno j! &a "!nzori ov! "i*nal! u*lavno &aju u analo*no obliku$ -koliko n! po"toji na2in &a "! oni o2itaju i &a "! na o"novu &obij!ni; in9or acija pr!&uz ! o&r!%!na akcija (npr$ navo&njavanj! povr0a u pla"t!niku ili aktiviranj! alar a)# &ab! "t! kupovali PIC$
1FP
Gnji*a koja i"to tako &!taljno obra%uj! ovu t! u j! I=l!ktronika &i*italni; ra2unaraJ 8lb!rta Paula Malvina$ Iako j! iz&ata jo 1Y81# toliko po"tupno izla! *ra&ivo# &a j! nj!n "a&raj i &alj! aktu!lan$ 7!&ini za"tar!li &!o u knjizi j!"t! opi" o&avno pr!vazi%!ni; a*n!t"ki; ! orija$ '!ki o& pro*ra a koji >a
Gako ob! "!rij! za pov!zivanj! "a ikrokontrol!ro kori"t! a&r!"nu a*i"tralu# brzina ko unikacij! 0! biti o*rani2!na j!&ino ;ar&v!ro # ali 0! "! i za najj!&no"tavnij! op!racij! orati utroiti v!0i broj pinova$
1F8
Sa ovo
! o
o o*u0!no j! upravljanj!
atrico
o& K@ :=3$
C84 pin P<CT8 r!*i"tra "! ov&! n! kori"ti# j!r n! o! &ati na "vo izlazu lo*i2ku j!&inicu$ M!%uti uz alo trikova (za !no polarit!ta :=3 i pov!zivanj! tranzi"tora na naponu napajanja) i on o! biti u 9unkciji$ - prak"i "! u*lavno "r!0! potr!ba za bar j!&ni ulazo # tako &a "! taj na2in n! praktikuj!$ 'ajpr! j! potr!bno i"klju2iti "v! pr!ki&a2k! tranzi"tor! &ovo%!nj! lo*i2k! + u P<CT8$ Zati j! potr!bno na P<CT5 r!*i"tru po"taviti "tanj! 8 :=3 u prvoj koloni# i na kratko (obi2no oko @+ S &a "! pro"!2an int!nzit!t "v!tlo"ti n! bi pr!vi! " anjio) uklju2iti pr!ki&a2ki tranzi"tor na C8+ pinu$ 3io&! na koj! j! &ov!&!na lo*i2ka 1 0! na tr!nutak za"v!tl!ti$ <n&a "! po"tavlja "tanj! :=3 &ru*! kolon!# i na kratko uklju2uj! tranzi"tor na C81 pinu$ Po"tupak "! ponavlja &ok "! n! prika! "tanj! i na za&njoj (2!tvrtoj) koloni# ka&a "! c!lokupan proc!" ponavlja$ Zbo* tro o"ti oka# iz*l!&a0! kao &a :=3 n!pr!ki&no "v!tl!$ :=3 0! "v!tl!ti anji int!nzit!to n!*o ina2!# ali to "! o! na&okna&iti proputanj! v!0! "truj! kroz nji; (" anjivanj! vr!&no"ti otpornika na pinovi a P<CT5 r!*i"tra)# ili po&!avanj! &uin! uklju2!no* "tanja# tako &a "! po"ti*n! ko pro i" iz !%u ja2in! "v!tla &io&a i nji;ovo* tr!p!r!nja$ Cutinu za i"pi" "tanja na &i"pl!ju# najprakti2nij! j! r!alizovati u int!rapt rutini izazvanoj taj !ro $ 'a taj na2in prikaz "tanja :=3 n! uti2! (pr!vi!) na ra& *lavno* pro*ra a$ 'a i"ti na2in &i"pl!ja$ o*u0! j! prikazati o&*ovaraju0! ci9r! na vi! "!& o"!* !ntni;
1FY
Svi izvo&i "vi; zaj!&ni2ki; "!* !nata (a# b# c# &# !# 9# *# i &p O ukupno 8 izvo&a) "poj!ni "u pr!ko otpornika za P<CT5 ikrokontrol!ra$ Zaj!&ni2k! kato&! &i"pl!ja "pajaju "! pr!ko pr!ki&a2ko* tranzi"tora na P<CT8$
'ajpr! "! i"klju2uju "vi pr!ki&a2ki tranzi"tori &ovo%!nj! lo*i2k! + u P<CT8$ Zati j! potr!bno na P<CT5 r!*i"tru po"taviti "liku ci9r! prvo* &i"pl!ja# i kratko uklju2iti pr!ki&a2ki tranzi"tor na C8+ pinu$ <n&a "! po"tavlja "lika ci9r! &ru*o* &i"pl!ja# i na kratko uklju2uj! tranzi"tor na C81 pinu$ Po"tupak "! ponavlja &ok "! n! prika! ci9ra i na za&nj! (2!tvrto ) &i"pl!ju# ka&a "! c!lokupan proc!" ponavlja$ - prak"i "! o! vi&!ti ovakav princip r!alizovan b!z ikakvi; opornika i pr!ki&a2ki; tranzi"tora# o&no"no &ir!ktni pov!zivanj! &i"pl!ja na PIC$ 'j!*ova ana j! pov!0ana potronja# "a i ti i *r!janj! ikrokontrol!ra kao i n!j!&nako"t "v!tla poj!&ini; ci9ara$ <vo "to*a to pin za pr!ki&anj! &i"pl!ja ora kroz "!b! propu"titi "truju "vi; "!* !nata &i"pl!ja# pa "a i ti int!nzit!t "v!tla nij! i"ti ka&a j! na &i"pl!ju prikazan broj 8 (uklju2!ni "vi "!* !nti) i broj 1 (uklju2!ni "!* !nti b i c)$ 5roj pinova o! "! " anjiti upotr!bo :=3 &rajv!ra 4+++ ili P4++ "!rij!$
4F11 int!*ri"ano kolo pr!&"tavlja &rajv!r za "!& o"!* !ntni :=3 &i"pl!j$ Ga&a u "! na ulaz &ovo&! binarni broj!vi o& + &o Y# na izlazu uklju2uj! o&r!%!n! "!* !nt! :=3 &i"pl!ja$ - !"to 4F11# o! "! kori"titi P44P$
Po"tupak j! i"ti kao i ranij!# "a ti to u !"to o&*ovaraju0!* obra"ca za prikaz na &i"pl!ju# na ulaz! 4F11 tr!ba &ov!"ti binarni broj o& + &o Y$ S!* !nt &!ci aln! ta2k! (&p)# orao j! biti &ov!&!n &ir!ktno na ikrokontrol!r# j!r 4F11 (i P44P) i a o*u0no"t prikaza "a o j!&n! ci9r!$ -koliko "! &!ci alna ta2ka n! kori"ti# &obi0!t! jo j!&an "lobo&an pin$ Za &!taljni opi" pov!zivanja 4F11 ili P44P int!*ri"ani; kola# "kinit! "a int!rn!ta nji;ov! t!;ni2k! po&atk!$ 16+
3a bi "! ovo kolo o*lo pri !njivati# potr!bno j! iz !riti o&r!%!n! para !tr!$ >o991 O ak"i alni napon pri ko ! :=31 n! ! ituj! "v!tlo >o99@ O ak"i alni napon pri ko ! :=3@ n! ! ituj! "v!tlo >on1 O ini inalni napon pri ko ! :=31 ! ituj! "v!tlo >on@ O ini inalni napon pri ko ! :=3@ ! ituj! "v!tlo Ion1 O !lj!na "truja kroz :=31 pri uklju2!no "tanju Ion@ O !lj!na "truja kroz :=3@ pri uklju2!no "tanju >cc O napon napajanja Potr!bni prora2uni "u "l!&!0i/ Ion1 V \ (>ccB>on1)MC1 ] B \ >on1M(C@HCK) ] Ion@ V \ (>ccB>on@)MC@ ] B \ >on@M(C1HCK) ] (>o991H>o99@)MCKV>ccB>o991B>o99@M(C1HC@) 3a bi "! " anjila n!potr!bna potronja "truj! potr!bno j! za CK izabrati to v!0u vr!&no"t# b!z uklju2ivanja :=3 pri ulazno "tanju pina$ Priblin! vr!&no"ti otpornika (za "truju o& 8 8 po uklju2!noj :=3) "u "l!&!0!/ C1VK++[# C@VK++[# CKV1#@k[$ -klju2!nj! :=31 po"ti! "! po"tavljanj! pina na lo*i2ku +# :=3@ na lo*i2ku 1# i"klju2!nj! ob! :=3 pr!la"ko pina u vi"okoi p!&an"no "tanj! (po"tavlj!n kao ulaz)# a uklju2!nj! ob! :=3 n!pr!"tani naiz !ni2ni &ovo%!nj! lo*i2k! + i 1 na pin (za to j! najprakti2nij! kori"titi int!rapt izazvan taj !ro )$ Za razliku o& "tan&ar∋ ultipl!k"a# ovo kolo troi 2ak @#F 8 u "tanju i"klju2!ni; :=3# pa nij! po*o&no za bat!rij"ko napajanj!$ Prakti2nij! j! kori"titi ultipl!k"$ <v&! j! ilu"trovano "a o kao pri !r ono*a to tr!bat! izb!*avati u "voji aplikacija a$ 'a "li2an na2in o!t! pov!zivati i T5+@Y "a ;ttp/MMRRR$ icroc;ip$co M$ - lit!raturi "! ovaj princip no*o v!0i broj :=3$ Za &!talj! po*l!&ajt! C;arli!pl!Nin*$ 161
a &i"pl!j 0! "! "a pobrinuti za "v! o"talo$ To o! biti n!&o"tatak ukoliko !lit! na &i"pl!ju prikazati naa "lova (npr$ 6lE.)$ Iz to* razlo*a pr!&vi%!na j! o*u0no"t &a pro*ra !r pro !ni "liku par "p!cijalni; karakt!ra$ Gako int!*ri"ani kontrol!r :C3Ba n! a ==PC<M ! oriju# "liku ovi; karakt!ra j! n!op;o&no 2uvati u ! oriji ikrokontrol!ra i inicijalizovati u :C3Bu po "vako uklju2!nju$ Slika karakt!ra u C<MBu :C3Ba obi2no "! 2uva u atrici o& FDP ili FD8 pik"!la# ali na &i"pl!ju j! ko& pon!ki; :C3Ba o*u0! prikazati i proir!nu atricu o& npr$ FD1+ pik"!la$ I"klju2!ni *ornji i &onji pik"!li j!&no"tavno "! n!0! vi&!ti$ 'a a ti &o&atni pik"!li o*u biti o& kori"ti ra&i prikaza npr$ "lova 6$ Iako "! &i"pl!ji o*u razlikovati po broju i ra"por!&u 0!lija# upotr!blj!ni 9ontovi a za karakt!r!# vr"ti# na2inu i boji poza&in"ko* o"v!tlj!nja# nji;ovo pov!zivanj! na ikrokontrol!r j! prili2no "tan&ar&izovano$ 14 pina kori"ti "! za upravljanj! :C3Bo # a jo @ pina za poza&in"ko o"v!tlj!nj!$ <na o*u biti u i"to r!&u "a o"tali pinovi a# ili po"!bno iz&voj!na$ Mo*u0! j! na0i i :C3 b!z poza&in"ko* o"v!tlj!nja# ali "a 16 pinova$ Pri to ! za&nja &va pina (1F$ i 16$) ni"u pov!zana$ Pinovi :C3Ba o*u biti po"tavlj!ni u j!&no (16D1) ili u &va (8D@) r!&a$ <bi2no "u broj!vi a ob!l!!ni bar krajnji pinovi$ 'a :C3Bu na "lici vi&it! j!&an r!& pinova$ Pinovi 1F i 16 pov!zani "u (o&oz&o) na :=3 kao izvor poza&in"ko* "v!tla (b!li pravou*aonik "a &!"n! "tran!)$ Funkcija pinova j! "l!&!0a/ :"/ 1 @ K 4 F 6 PB14 1F 16 8"%+*, >SS >33 >< CS CMU = 35+B35P 8 G Ma"a 'apajanj! za kontrol!r 'apajanj! za :C3 &i"pl!j (!n*$ C!*i"t!r "!l!ction) (!n*$ C!a&MRrit! S!l!ction) =nabl! pin Si*nal 9or :CM :inij! za po&atk! (+BP) 'apajanj! za :=3 (H) 'apajanj! za :=3 (B) Op"
Gako :C3 za;t!va 2ak 8 pinova za pr!no" bajtova u :C3 (35+O35P)# kontrol!ro :C3Ba j! pr!&vi%!na o*u0no"t upotr!b! "a o 4 pina (354B35P) a o" obitni bajt "! u :C3 alj! u @ *rup! niblova$ -t!&a 4 pina "! "vakako i"plati$ Gako j! kontrol!r :C3 &i"pl!ja u "tvari j!&an ali ikrokontrol!r# PIC16F84 tr!ba o&r!%!ni protokolo (kao CSB@K@) u nj!*a "lati po&atk!$ 3obro j! to ("a izuz!tko 16K
"tartno* pul"a) n! po"toji ak"i alno vr! ! za koj! "! ovi po&atci tr!baju po"lati$ 'a taj na2in ikrokontrol!ru o"taj! prili2no vr! !na za o"tal! op!racij! koj! tr!ba obavljati$ Ipak# po&atci "! na :C3 n! " !ju "lati pr!vi! v!liko brzino # j!r i; u to "lu2aju kontrol!r :C3Ba n!0! o0i i"pravno pri iti$ =nabl! ("tartni) pin o!t! " atrati pino za i"klju2!nj! :C3Ba$ 3ok j! na nj! u pri"utna lo*i2ka 1# :C3 n!0! r!a*ovati na o"tal! "i*nal!$ 'a taj na2in o*u0! j! o"tal! pinov! :C3Ba (kao u ultipl!k"u) kori"titi za n!k! &ru*! op!racij!$ I pul" za inicijalizaciju int!*ri"ano* kontrol!ra :C3Ba ora trajati bar 4F+nS$ 3ok j! "tartni
'a"tavak "l!&i
164
Izvo&i pinova ikrokontrol!ra "pajaju "! u atricu tako &a "u ta"t!r pr!ki&a2i "poj!ni iz !%u 2vorova$ - ovo pri !ru na P<CT5 r!*i"tar "poj!ni "u pinovi C5+# C51# C5@ i C5K# a na P<CT8 C8+# C81 i C8@$ 'a taj na2in r!alizovana j! atrica "a 1@ ulaza$ <na "! ina2! naj2!0! kori"ti# j!r npr$ t!l!9on"k! ta"tatur! ("a 1@ ta"t!ra) kori"t! i"ti princip$
Ca&i lak!* razu !vanja pr!tpo"tavi o &a "u pr!ki&a2i ob!l!!ni broj!vi a o& 1 &o 1@$ 'ajpr! "! P<CT8 r!*i"tar po"tavi na bQ+++++111Q$ Zati "! C8+ pin po"tavi na lo*i2ku +# 2i ! "! u prvu kolonu &ovo&i nivo lo*i2k! +$ C!&o "! t!"tiraju bitovi C5+ &o C5K P<CT5 r!*i"tra$ -koliko nij!&an nij! r!"!tovan# ni"u priti"nuti pr!ki&a2i ozna2!ni "a 1# 4# P i 1+$ <n&a "! C8+ "!tuj!# a C81 r!"!tuj!$ Ponovo "! t!"tiraju bitovi P<CT5 r!*i"tra# ali ovo*a puta za *rupu pr!ki&a2a @# F# 8 i 11$ za&nj! prolazu "!tuj! "! C81# a r!"!tuj! C8@# i t!"tiraju bitovi koji o&*ovaraju pr!ki&a2i a K# 6# Y i 1@$ Pull up otpornici oraju biti uklju2!ni kako "! na ulazni pinovi a n! bi javilo n!&!9ini"ano "tanj!$ Zbo* nji; "! t!"tiranj! obavlja za lo*i2ku +$ -koliko j! potr!bno obaviti o&r!%!nu op!raciju po otputanju ta"t!ra# pro*ra ora pa titi za&nj! "tanj! o&*ovaraju0!* ta"t!ra$ - to "lu2aju prakti2nij! bi bilo pov!zati pinov! C54 &o C5P u atricu# i po pro !ni "tanja izazvati int!rapt$ Int!rapt rutina tr!ba &!t!ktovati "tanj! pinova P<CT8 i P<CT5 r!*i"tra# utvr&iti koji bit j! izazvao int!rapt# i izvriti za&atu op!raciju$ <tpornici o& 1++[ "u pov!zani ra&i zatit! o& lano* oki&anja u"l!& !l!ktro"tati2ki; " !tnji$ -koliko "! ta"tarura nalazi blizu (e@ ) ikrokontrol!ra# o*u "! izo"taviti$ 8 ukoliko !lit! po"ti0i jo vi! ulaza uz kori"titi "l!&!0u ! u$ ini alni broj upotr!blj!ni; pinova# o!t!
16F
Pr!tpo"tavi o &a "u upotr!blj!ni pinovi C5+ &o C5K# i &a "u pr!ki&a2i ob!l!!ni &!ci alno (1 O 1@)# kao u prolo pri !ru$ Pr! "v!*a# potr!bno j! uklju2iti pullBup otpornik!$ <n&a tr!ba &!9ini"ati pin C5+ kao izlazni# a C51# C5@ i C5K kao ulazn! i po"taviti C5+ na lo*i2ku +$ C!&o "! t!"tiraju "tanja na C51 (za priti"nut broj 6)# C5@ (za broj Y) i C5K (za broj 1@)$ Zati "! C5+# C5@ i C5K &!9iniu kao ulazni# a C51 kao izlazni "a lo*i2ko +# i t!"tiraju "! "tanja na C5+ (za broj K)# C5@ (za broj 8) i C5K (za broj 11)$ Po"tupak "! ponavlja za pinov! C5@ i C5K$ <vaj na2in j! "o9tv!r"ki alo t!i za i pl! !ntaciju# j!r "! u i"to r!*i"tru ora vriti anipulacija iz !%u ulazni; i izlazni; "tanja pinova (to povla2i za "obo pr!lazak iz !%u banki)$ M!%uti # nji j! o*u0! t!"tirati 1@ pr!ki&a2a "a "a o 4 pina$ I u ovo "lu2aju ora "! pa titi za&nj! "tanj! o&*ovaraju0!* ta"t!ra ukoliko j! potr!bno obaviti o&r!%!nu op!raciju po nj!*ovo otputanju$ <vakvi na2ini t!"tiranja ta"t!ra o*u0i "u j!r j! (kao tro o"t oka ko& ultipl!k"a "a :=3) ov&! pri !nj!na tro o"t pr"ta koji "! priti"ka pr!ki&a2$ 'ai !# pro"!2no ini alno vr! ! za koj! kori"nik &ri ta"t!r pr!ki&a2 priti"nuti j! oko F+ &o 1++ S$ :i2no "a i ao za&ovolj"tvo &a na kratko popri2a "a prvako Srbij! u kucanju na t!l!print!ru ("prava poput !l!ktri2n! pi"a0! ain!)$ Guca 6++ "lova za 1 inut# o&no"no 1+ "lova za 1S$ Go& nj!*a j! ovo pro"!2no vr! ! "i*urno n!to kra0!$ Mo! li "! jo " anjiti broj potr!bni; pinova? 'aravno &a nar!&ni po*lavlji a$ o!$ >i! o to ! u
166
S!tit! "! ultipl!k"a izlaza$ Pic p!rio&i2no po"tavlja "tanj! na :=3 "!* !nti a i pr!ko zaj!&ni2k! kato&! uklju2uj! ko pl!tan &i"pl!j$ Zati *a i"klju2uj!# pa po"tavlja "tanj! na "l!&!0! $ 3upli ultipl!k"o bi "! u tr!nutku &ok j! "u "vi &i"pl!ji i"klju2!ni t!"tirali ta"t!r pr!ki&a2i pov!zani paral!lno "a &i"pl!ji a po principu ultipl!k"a ulaza$ <tpornici o& @@+[ po"tavlj!ni "u zbo* o*rani2avanja "truj! kroz :=3 "!* !nt! i " anj!nja uticaja in&ukovani; napona na ulazi a ikrokontrol!ra ("a o 4 *ornja)# a otpornici o& @#@k[ &a o"tali "!* !nti &i"pl!ja n! bi za"v!tl!li pri priti"kanju pr!ki&a2a &ok j! uklju2!n n!ki o& &i"pl!ja$ 'ajpr! j! &a "! n! bi javilo n!&!9ini"ano "tanj! na ulazi a potr!bno uklju2iti pull up otpornik!$ To "! o! ura&iti priliko inicijalizacij!# na po2!tku pro*ra a$ Gako "u :=3 &i"pl!ji aktivni "a o ka&a j! P<CT5 &!9ini"an kao izlazni# ovo i n!0! " !tati$ - ultipl!k" rutini "! u pauzi iz !%u uklju2!nja &i"pl!ja (&ok "u "vi &i"pl!ji pr!ko P<CT8 r!*i"tra i"klju2!ni) C5+ &o C5K &!9iniu kao ulazni# a C54BC5P kao izlazni pinovi$ C!&o "! na C54 &o C5P po"tavlja lo*i2ka +# i t!"tiraju "tanja na C5+# C51# C5@ i C5K pinovi a$ -koliko j! na n!ko o& nji; pri"utna lo*i2ka +# to in&ikuj! priti"nut o&*ovaraju0i pr!ki&a2$ Po t!"tiranju "vi; pr!ki&a2a# pinovi P<CT5 r!*i"tra &!9iniu "! kao izlazni# na P<CT5 "! po"tavlja "lika koja 0! "! pojaviti na :=3 &i"pl!ju i uklju2uj! "! o&*ovaraju0i &i"pl!j$ T!"tiranj! "! o! obavljati iz !%u ci9ara poj!&ini; &i"pl!ja ili nakon to j! prikazana "lika na "vi &i"pl!ji a$ Goji 0!t! na2in o&abrati zavi"i o& !lj!n! brzin! t!"tiranja pr!ki&a2a$ Za &!talj! po*l!&ajt! 8'F@Y i 8'FFP "a ;ttp/MMRRR$ icroc;ip$co M$ 16P
168
Princip ra&a j! "l!&!0i$ Pin C5+ pov!zan j! kao Rilkin"onov 8M3 konv!rtor# ali u !"to !r!n! otporno"ti# ov&! "! pojavljuj! otporna r!a$ C!zultuju0a otporno"t na pinu zavi"i o& to*a koji ta"t!r j! priti"nut u o&r!%!no tr!nutku$ 'aj anja j! (1k[) ka&a j! priti"nut ta"t!r 1# pov!0ava "! &o ta"t!ra 16 (1k[ H 4kP H 4kP H 4kP H 1k[ H 1k[ H 1k[ V 18#1G[)# a najv!0a j! (t!orij"ki b!"kona2na) ka&a nij! priti"nut ij!&an ta"t!r$ So9tv!r tr!ba po iz !riti vr!&no"t otporno"ti po principu 8M3 konv!rtora i na o"novu &obij!n! vr!&no"ti prona0i koji ta"t!r j! priti"nut$ Za razliku o& o"tali; ! a "a vi! ulaza# ovo ! o j! "koro n! o*u0! r!alizovati &!t!kciju vi! i"tovr! !no priti"nuti; ta"t!ra zbo* v!0!* broja r!∋ i paral!lni; "poj!va otpornika$ >i! o ovo principu i at! na ;ttp/MMRRR$ro anblack$co Mk!Wpa&$;t $ ;ttp/MMRRR$jo"!pino$co M i na
16Y
<v&! "! najpr! uklju2! pull up otpornici# a zati "! C5+ &o C5K pinovi &!klariu kao izlazni "a lo*i2ko +# a C54 &o C5P kao ulazni# po&!"i "! intarapt i o&! "! u "l!!p o&$ Priti"ko na bilo koji pr!ki&a2 PIC 0! "! probu&iti iz "l!!p o&a# i on&a j! potr!bno r!&o po"tavljati C5+ &o C54 pinov! na lo*i2ku + (&r!0i o"tal! na lo*i2koj 1)# i "k!nirati C54 &o C5P pinov! &a bi "! utvr&ilo koji j! ta"t!r i &alj! priti"nut$ Za vi! &!talja po*l!&ajt! 8'FF@ "a ;ttp/MMRRR$ icroc;ip$co M$ 3ru*i na2ino ikrokontrol!r "! r!"!tuj! po priti"ku pr!ki&a2a$
1P+
'a ovoj ! i "vi izlazi (C5+ &o C5K) po"tavlj!ni "u na lo*i2ku +$ Gon&!nzator C "! napunio pr!ko otpornika o& 4Pk[ i &ovo&i lo*i2ku 1 na MC:C pin ikrokontrol!ra$ .i "! bilo koji ta"t!r priti"n!# C "! i"prazni kroz j!&an o& 4kP otpornika (zavi"i o& to*a koji "! ta"t!r priti"nuo)# napon na kon&!nzatoru opa&a (oko 1 S) "v! &ok "! PIC zbo* pojavljivanja lo*i2k! + na MC:C pinu n! r!"!tuj!$ Po r!"!tu "! "vi -MI pinovi u ;ar&v!r"koj inicijalizaciji ikrokontrol!ra &!9iniu kao ulazi# to "pr!2ava &alj! pranj!nj! kon&!nzatora$ >r!&no"ti otpornika i kon&!nzatora izabran! "u tako &a j! trajanj! ciklu"a pranj!nja i punj!nja kon&!nzatora anj! o& vr! !na r!"!ta ikrokontrol!ra (oko 18 S)$ .i "! r!"!t zavri# potr!bno j! uklju2iti Pull up otpornik!# na C5+ &o C5K pinovi a r!&o na kratko po"taviti lo*i2ku + (&r!0i o"tal! izlaz! na lo*i2koj 1)# to br! t!"tirati "tanj! pr!ki&a2a na C8+ &o C8K pinovi a# i vratiti pinov! C5+ &o C54 na lo*i2ku 1$ Pr!bacivanj! izlaza na lo*i2ku + n! o! prouzrokovati ponovni r!"!t ikrokontrol!ra ukoliko j! vr! ! t!"tiranja pr!vi! brzo (r!&a 1+ZS)$ Za vi! &!talja o ovo ! po*l!&ajt! 8'F@8 "a ;ttp/MMRRR$ icroc;ip$co M$
1P1
=3=1144 B 3!ko&!r za 16 ta"t!ra$ S!rij"ka &!t!kcija pr!ko @ pina# ili paral!lna pr!ko 4 pina (H1 za "i*nalizaciju i"pravno pri lj!no* "tanja pr!ki&a2a) =3=1188 B 3!ko&!r za 64 ta"t!ra$ S!rij"ka &!t!kcija pr!ko @ pina$ ICMP@188 O :=3 &i"pl!j &rajv!r za 8 "!& o"!* !ntni; &i"pl!ja "a zaj!&ni2ko ano&o (b!z &!ci aln! ta2k!)$ Prikaz ci9ara +# 1# @# K# 4# F# 6# P# 8# Y# 8# b# C# &# = i F "a o*u0no0u &ir!ktno* a&r!"iranja poj!&ini; :=3 ICMP@185 O :=3 &i"pl!j &rajv!r za 8 "!& o"!* !ntni; &i"pl!ja "a zaj!&ni2ko kato&o (b!z &!ci aln! ta2k!)$ Prikaz ci9ara +# 1# @# K# 4# F# 6# P# 8# Y# 8# b# C# &# = i F "a o*u0no0u &ir!ktno* a&r!"iranja poj!&ini; :=3 -z nji; j! za razliku o& ultipl!k"a izazivano* ikrokontrol!ro b!z probl! a o*u0! oti0i u S:==P o&$ =3=P+P int!*ri"ano kolo 0! na"taviti "a prikazo po j!&no &ov!&!no "tanju# b!z ikakv! nakna&n! int!rv!ncij! ikrokontrol!ra# a =3=1144 i =3=1188 "! o*u pov!zati tako &a po priti"nuto ta"t!ru pr!ko j!&no* pina izazovu int!rapt (ovo "! o! upotr!biti za bu%!nj! iz S:==P o&a)# i (4F S nakon int!rapta O &ovoljno za "tabilizaciju o"cilatora ikrokontrol!ra) "!rij"ki pr!ko &ru*o* pina u ikrokontrol!r poalju kT& ta"t!ra$
1P@
'a taj na2in o!t! kori"t!0i "a o P<CT5 &obiti &o 64 ulazni; ili izlazni; pinova$ -koliko >a j! ovo pr!"kupo# o!t! kori"titi po !ra2k! (i9t) r!*i"tr! P4FYF za 8 izlaza# ili P4FYP za 8 ulaza$ <vi r!*i"tri i aju jo po j!&an "!rij"ki izlaz (P4FYF) i ulaz (P4FYP)# tako &a "! nji;ovi r!&ni v!zivanj! i pov!zivanj! pr!ko "a o K pina ikrokontrol!ra o! r!alizovati proizvoljno v!liki broj ulaza M izlaza$ So9tv!r ikrokontrol!ra orao bi r!*uli"ati po !ranj! i "!rij"k! ulazno M izlazn! rutin!$ Multipl!k" kori0!nj! ovako proir!no* broja ulazno M izlazni; pinova j! o*u0 j!&ino u "lu2aju &a nij! potr!bno !njati "tanj! pinova o& ulazno* u izlazni i obrnuto# ali uz &o"ta ko plikovaniji pro*ra $ - S:==P o& j! o*u0! oti0i# j!&ino ukoliko "! i"tovr! !no n! pri !njuj! ultipl!k"$ -koliko >a j! potr!bno 8 ulaza ili izlaza# o!t! kori"titi PCF8FP4$ Sa nji ultipl!k" t!! o"tvariti# ali j! o*u0 S:==P o&$ j!
- prak"i "! ovi na2ini v!o a r!tko kori"t!$ 7!&no"tavnij! (i j!9tinij!) j! uz!ti ikrokontrol!r "a v!0i broj! ulazno izlazni; pinova$
1PK
F8@ B 412 V P+ P+ B 64 V 6 6B 4V @ @B 2V +
De0"%a,/" u .e! a#e0"%a,/" *+,"! 'ajpr! konv!rtujt! &!ci alni oblik u binarni# a zati binarni u ;!k"a&!ci alni$ Za *ornji "lu2aj to bi iz*l!&alo ovako/ $F8@ V bQ1+ +1++ +11+Q V @N46 Po"toji i na2in &ir!ktn! konv!rzij! &!lj!nj! j!&no* nibla$ F8@ M @F6 V 2 "a o"tatko P+ P+ M 16 V 4 "a o"tatko 6 6 M 1 V 6 "a o"tatko + C!zultat j! 2N46$ u noci a ak"i aln! vr!&no"ti
Ae! a#e0"%a,/" u #e0"%a,/" *+,"! Gonv!rtujt! iz ;!k"a&!ci alno* u binarni oblik# a zati iz binarno* u &!ci alni$ Za raniji "lu2aj to bi iz*l!&alo ovako/ FFKNP5 V bQ1+11111++11+1111+11QV$KY++11 Po"toji i na2in &ir!ktn! konv!rzij! no!nj! u noaka ak"i aln! vr!&no"ti j!&no* nibla$ 'a pri !r za broj KN83 to j!/ K N @F6 V 668 8 N 16 V 1@8 3N 1 V 1) C!zultat j! 668 H 1@8 H (o"tatak koji nij! o*ao biti po no!n) 1) V $Y+Y$ Ipak# i &alj! j! j!&no"tavnij! kori"titi &i*itron$
1PF
r#"&e"#0
Canij! "t! nau2ili upotr!bu in"trukcija "abiranja i o&uzi anja$ Mo*uc! j! &a o" obitn! op!racij! ni"u &ovoljn! za o&r!%!n! pri !n!$ Iako PIC16F84 n! a ;ar&v!r"k! in"trukcij! za ra& "a !"na!"tobitni broj!vi a# nij! i; pr!vi! t!ko i pl! !ntovati "o9tv!r"ki$ Pr! "v!*a# broj!v! kao i r!zultat op!racij! orat! &rati u &va bajta$ <& ta &va bajta j!&an 0! biti bajt v!0! t!in! (!n*$ MS5 O +o"t Si*ni9icant ,Wt!)# a &ru*i anj! (!n*$ :S5 O -!a"t Si*ni9icant ,Wt!)$ 5roj!vi "! "abiraju tako to "! najpr! "ab!ru :S5# u zavi"no"ti o& "tanja CarrW 9la*a &o&a "! +N+1 na j!&an o& MS5# a on&a "! "ab!ru oba MS5$ Sl!&!0i potpro*ra o ilu"trovano j! "abiranj! !"na!"tobitni; broj!va$
cb2oc@ 0x1# ESB1 A Pro !nljiva 1# bajt anj! t!in! 4SB1 A Pro !nljiva 1# bajt v!0! t!in! ESB2 A Pro !nljiva @# bajt anj! t!in! 4SB2 A Pro !nljiva @# bajt v!0! t!in! ESBR=S A C!zultat# bajt anj! t!in! 4SBR=S A C!zultat# bajt v!0! t!in! e+dc S0b movf addwf movwf movf btfsc addlw addwf movwf return ESB1,% ESB2,% ESBR=S 4SB1,% STATUS,# 0x01 4SB2,% 4SBR=S A -z i bajt anj! t!in! prvo* op!ran&a A "ab!ri "a bajto anj! t!in! &ru*o* op!ran&a$ A C!zultat u bajt anj! t!in! r!zultata$ A -z i bajt v!0! t!in! prvo* op!ran&a A 3a li j! &olo &o pr!kora2!nja? A 7!"t!# &o&aj CarrW 9la*$ A "ab!ri "a bajto v!0! t!in! &ru*o* op!ran&a$ A C!zultat u bajt v!0! t!in! r!zultata$
C!zultat 0! biti ta2an j!&ino u "lu2aju &a &a "! zbir o! pr!&"taviti "a 16 bita (+ &o 6FFKF u "lu2aju n!ozna2!ni; ili BK@P68 &o K@P6P u "lu2aju ozna2!ni; broj!va)$ protivno # bi0! obav!zan jo j!&an r!*i"tar za 2uvanj! "tanja CarrW 9la*a$ 'a "li2an na2in o! "! r!alizovati i o&uzi anj! &va !"na!"tobitna broja$
Por!& ovi; op!racija# unutar PIC16F84 ikrokontrol!ra o*u0! j! r!alizovati no!nj!# &!lj!nj!# kva&ratni kor!n# *!n!ri"anj! p"!u&o"lu2ajno* niza broj!va pa 2ak i no*o# no*o ko plikovanij! op!racij!$ Po potr!bi# ov! 9unkcij! o*u "! proiriti za v!0u r!zoluciju# kao i za ra& "a pokr!tni zar!zo (!n*$ 9loatin* point)$ Za &!talj! po*l!&ajt! 8'F@6# 8'F44# 8'FPF# 8'61P# 8'66+ "a ;ttp/MMRRR$ icroc;ip$co M i ;ttp/MMRRR$picli"t$co Mc*iBbinMcon"t&iv ul$!N! link$
1P6
A - U "! nalazi broj o& $+ &o $@FF$ A+O: A1O1 A@O1 AKO1 A4O2 AFO2 A @F4 O 14 A @FF O 14
Tab!lo koja >a vra0a c!lobrojnu vr!&no"t o!t! &obiti ta2an c!lobrojni r!zultat u "a o FB6 in"trukcij"ki; ciklu"a$ I "a i uo2avat! &a j! pr!cizno"t r!zultata pr!vi! ala za ikakav ozbiljniji ra&$ '! a probl! a$ >r!&no"t prv! &!ci al! r!zultata na0i 0! "! u "l!&!0oj tab!li$ T0b2 addwf retlw retlw retlw retlw retlw retlw $ $ retlw retlw P#E,F .0 .0 .4 .7 .0 .2 $ .B .B A - U "! nalazi broj o& $+ &o $@FF$ A + O +#: A 1 O 1#: A @ O 1#4 A K O 1#6 A 4 O @#: A F O @#2 A @F4 O 1F#9 A @FF O 1F#9
Za &ru*u &!ci alu kori"tila bi "! nar!&na tab!la# i tako &alj!$ Iako "u ovi na2ini izuz!tno brzi# ni"u !kono i2ni u po*l!&u utroka pro*ra "k! ! orij!$ 3obar ko pro i" iz !%u brzin! i v!li2in! pro*ra a pr!&"tavljao bi 2uvanj! &!ci ala u binarno ili 5C3 obliku$ 'a taj na2in *ornj! &v! tab!l! o*l! bi "! ko pr!"ovati u j!&nu# tako to bi *ornji nibl "a&rao c!lobrojnu vr!&no"t (+ &o 1F)# a &onji vr!&no"t prv! &!ci al!$ Za prikaz c!lobrojn! vr!&no"ti na :=3 &i"pl!ju pozvala bi "! o&*ovaraju0a konv!rziona rutina za *ornji nibl# a &onji nibl (&!ci alna vr!&no"t) bi "! ionako nalazila u 5C3 9or atu$ Tab!la bi o*la iz*l!&ati ovako/
1PP
T0b2 addwf retlw retlw retlw retlw retlw retlw $ $ retlw retlw
A - U "! nalazi broj o& $+ &o $@FF$ A + O :?: A 1 O 1?: A @ O 1?4 A K O 1?6 A 4 O 2?: A F O 2?2 A @F4 O 14?9 A @FF O 14?9
Za v!0i broj &!ci ala po*o&nij! bi bilo kori"titi binarni oblik zapi"a ( akar "a o za &!ci al!) i o&*ovaraju0! konv!rzion! rutin!$ Sv! zavi"i o& to*a kolika >a j! brzina ra2unanja potr!bna$ 3obro poznavanj! oblika "i*nala o&*ovaraju0! at! ati2k! op!racij! o! >a po o0i priliko ko pr!"ij! nj!n! tab!l!$ Go pr!"ija opi"ana ranij! n! bi bila o*u0a &a j! c!lobrojni r!zultat op!racij! na& broj! @FF v!0i o& 1F# j!r "! broj v!0i o& 1F n! o! na0i u j!&no niblu$ Po*l!&ajt! na pri !r "inu"nu 9unkciju$ Slika - !"to 2uvanja vr!&no"ti c!l! p!rio&! unutar vi! tab!la# o*li bi"t! kori"titi ozna2!n! broj!v! i nakna&no &o&ati MS5 bito pokazivali pripa&no"t *ornjoj# o&no"no &onjoj polup!rio&i$ 'a taj na2in pr!polovili bi"t! broj potr!bni; tab!la za i"ti broj &!ci ala$ Slika 7o v!0u ko pr!"iju &obili bi"t! ukoliko "! o*rani2it! "a o na 2!tvrtinu p!rio&!# j!r zbo* "i !rti2no"ti polup!rio&! &ru*i &!o o!t! r!*!n!ri"ati o&uzi anj! in&!k"a tab!l! o& ak"i aln! vr!&no"ti$ Tako j! broj potr!bni; tab!la " anj!n na 2!tvrtinu$ 7!&an na2in ra2unanja "inu"n! (i ko"inu"n!) 9unkcij! za u*lov! o& + &o 4F "t!p!ni i "a ta2no0u o& 6 &!ci ala &obiti obra"ci a/ SI'(`) V 1$P4FK@YK D ` D (1 O +$F+PF8 D ` D ` D (1 O +$14Y D ` D `)) C<S(`) V l O 1$F@K+8P D ` D ` D (1 O +$@FK8@ D ` D ` D (1 O +$1 D ` D `)) Za u*lov! o& 4F &o Y+ "t!p!ni# "!tit! "! &a j! SI'(`) V C<S(Y+ O `)$ Sl!&!0i na2in brzo* ra2unanja po&razu !va upotr!bu !k"t!rn! ==PC<M ! orij!$ 'a pri !r uz o&*ovaraju0u I@C ==PC<M ! oriju o*u0! j! unutar ==PC<MBa 2uvati r!zultat! "vi; potr!bni; at! ati2ki; op!racija$ 5rzina ra2unanja bila bi j!&naka brzini I@C v!z!# a pro*ra n! i ao &u*! tab!l!$ Mak"i alnu brzinu &obili bi 1P8
upotr!bo !k"t!rn! =PC<M ! orij!# ali ona troi najv!0i broj pinova$ 5u&u0i &a j! nj!na c!na &ana" izuz!tno ni"ka# to bi ipak o*lo pr!&"tavljati &obro r!!nj!$ -koliko >a ni ovaj princip n! o! za&ovoljiti ap!tit# raz i"lit! o !k"t!rno kooproc!"oru$ Int!*ri"ano kolo uMBFP- >K$1 pr!&"tavlja K@Bbitni kooproc!"or "a pokr!tni zar!zo i int!*ri"ano I@C i SPI v!zo $ Za razliku o& ikrokontrol!ra on j! "p!cijalno razvij!n za brzo izvravanj! "lo!ni; at! ati2ki; op!racija# tako &a 0! na pri !r r!zultat kva&ratno* kor!na zavi"iti j!&ino o& brzin! ko unikacij!$ - prak"i "! at! ati2ki prora2uni uz !k"t!rni ;ar&v!r r!tko ka&a kori"t!$ I"to kao ko& pov!0anja broja -MI pinova# &al!ko j! j!&no"tavnij! (i j!9tinij!) kori"titi o0niji ikrokontrol!r$
1PY
1,z O @,z O 4,z O 8,z O 16,z O K@,z O 64,z O 1@8,z O @F6,z O F1@,z O 1#+@4k,z O @#+48k,z O 4#+Y6k,z O 8#1Y@k,z O 16#K84k,z O )2?668k,z$$$ Mno*o j! prakti2nij! uz!ti kri"tal (kakav "! i ina2! kori"ti u &i*italni 2a"ovnici a) o& K@#P68k,z# ili kri"tal "a n!ko o& 9r!kv!ncija iz niza$ 'j!*ov takt o! "! vi!"truki uza"topni &!lj!nj! "a &va " anjiti na ravno 1,z$ 7o bolj!# za proc!" &!lj!nja o! "! kori"titi int!*ri"ani pr!"kal!r taj !ra "a "koko na int!rapt po &o"ti*nuto o&no"u &!lj!nja$ Int!rapt bi >a ionako bio potr!ban zbo* ultipl!k"a :=3 &i"pl!ja$ <"i to*a kvarcni kri"tali ov! 9r!kv!ncij! 9abri2ki i aju anj! o&"tupanj! 9r!kv!nij! o& o"tali;# upravo zbo* nji;ov! pri !n! u *!n!ratori a pr!cizni; vr! !n"ki; int!rvala$ -koliko ikrokontrol!r tr!ba (por!& "ata) obavljati i n!k! &ru*! op!racij!# prakti2nij! j! na T+CGI ulaz &ov!"ti "i*nal! "a K@#P68k,z kri"tala i po&!"iti po"t"kal!r &a i pul"! za brojanj! uzi a "a ovo* pina u !"to "a takta o"cilatora$ Tako PIC o! ra&iti "vojo ak"i alno brzino # uz i"to tako ak"i alnu pr!cizno"t vr! !na$ 'aravno# ovo alo ko plikuj! ;ar&v!r zbo* potr!b! za !k"t!rni kri"talni o"cilatoro $ Tu "u napr!&niji ikrokontrol!ri u pr!&no"ti na& PIC16F84 zbo* po"tojanja !"na!"tobitno* TIM=C1 o&ula$ Sa nji j! o*u0! &ir!ktno na pinov! ikrokontrol!ra pov!zati kri"tal ("a pripa&aju0i kon&!nzatori a)# i tako &obiti takt n!zavi"an o& 9r!kv!ncij! ikrokontrol!ra$ 7o bolj!# ovaj taj !r aktivan j! i u S:==P o&u$ -koliko planirat! u "at (!n*$ CTC O R!al Ti ! Clock) ubaciti i kal!n&ar# orat! pr! "v!*a o&lu2iti &a li 0!t! u i pl! !ntirati kor!kciju @Y$ 9!bruara za "lu2aj pr!"tupn! *o&in! (:!ap W!ar) i auto at"ko auriranj! priliko pro !n! vr! !na (!n*$ 3aWli*;t "avin*")$ Zbo* to*a >a" va ko pjut!r pita za pr!lazak na l!tnji ili zi "ki na2in ra2unanja vr! !na$ 3a li "t! ika&a po&!"ili "at na "vo ko pjut!ru# ali nako* 6 !"!ci pri !0uj!t! &a on uri F inuta$ Iako "! 9abrik! tru&! &a i kri"tali bu&u "a to pr!ciznijo 9r!kv!ncijo # n! u"p!vaju uv!k u to !$ Sr!0o # o!t! "o9tv!r"ki kalibri"ati vr! ! 18+
tako to "atu &o&at! (ili o&uz !t!) 1 "!kun&u "vaki; par "ati# &ana# n!&!lja ili !"!ci$ >!rovatno 0! >a biti potr!bno par !"!ci za ta2nu kalibraciju upotr!blj!no* kri"tala$ 'ajbolj! j! "vakako ovu kor!kciju ubaciti za o&r!%!ni (9ik"ni) broj "!kun&i# ali to &o"ta ko plikuj! pro*ra i "a i ti na !0! potr!bu za nj!*ovi "poriji izvravanj! $ 3ru*a2iji na2in (;ar&v!r"ki) kalibracij! vr! !na "a"tojao bi "! u !njanju kapacitivno"ti j!&no* o& kon&!nzatora por!& kri"tala o& K@G,z$ 'ajlak! t!lovanj! po"ti! "! tri !r kon&!nzatoro $ 3o&atnu pr!cizno"t o!t! po"ti0i t! p!raturno kontroli"ani o"cilatoro $
?otov! "o9tv!r"k! rutin! za "at o!t! na0i iro int!rn!ta$ >!0 i at! a"! bl!r"ku rutinu u Microc;ip Ma!"tro pro*ra u$ >!rovatno "t! *a v!0 in"talirali uz MP:85 pak!t$ 7o n!k! "u na a&r!"a a ;ttp/MMRRR$iki$9iMjap i ;ttp/MMourRorl&$co pu"!rv!$co M;o !pa*!"M5illL5oR&!nM;o !pa*!$;t b !nu$ Pravlj!nj! najobi2nij!* &i*italno* 2a"ovnika ikrokontrol!ro nij! ba prakti2no$ 3i*italni 2a"ovnici i aju "voja "p!cijalizovana int!*ri"ana kola$ '! a "vr;! troiti novac na "kuplji ikrokontrol!r$ I"plati "! to ra&iti j!&ino u "lu2aju &a j! potr!bno napraviti "at "p!ci9i2ni; o"obina (vi! alar a# pov!zivanj! "a ko pjut!ro )# kao na pri !r "a "ajta ;ttp/MMRRR$bobblick$co Mt!c;r!9Mproj!ct"MpropclockMpropclock$;t l$ 8 ukoliko j! ala potronja i p!rativ# o*u "! "p!cijalizovana int!*ri"ana kola pov!zati "a ikrokontrol!ro $ Tipi2ni pr!&"tavnici ovakvi; int!*ri"ani; kola "u 3S1K+P# PCF8FYK i '7-6KFF$ Zbo* nji;ov! ini aln! potronj! &ir!ktno na ta panu plo2icu o! "! zal! iti ala litiju "ka bat!rija pr!ko koj! bi "! "at napajao !l!ktri2no !n!r*ijo u "lu2aju n!"tanka "truj! (i"to kao ko& ati2ni; plo2a ko pjut!ra)$ Por!& to*a ova kola (i"to kao i *or! po !nuti Ma!"tro "o9tv!r) u "!bi "a&r! kal!n&ar# zaj!&no "a prora2uni a pr!"tupni; *o&ina$ '! ojt! i"liti &a bi upotr!bo ti; kola &obili v!0u pr!cizno"t$ Pr!cizno"t takta &ir!ktno zavi"i o& upotr!blj!no* kri"tala (i nj!*ov! kalibracij!)# a potpuno i"ti kri"tal "! kori"ti i u ti koli a$
181
91. Dr (ver#
Iako >a o! tako iz*l!&ati# ovo nij! ala$ <v&! "! &o&u! n! ra&i o &rajv!ri a za "k!n!r# ta pa2 ili *ra9i2ku karticu# v!0 o &rajv!ri a za :=3# :C3 &i"pl!j# pr!ki&a2! ili "t!p otor$ Po*l!&ajt! najj!&no"tavniji pri !r$ Pr!tpo"tavlja &a >a j! lak! i razu ljivij! &a t!"tirat! pr!ki&a2! tako &a pri nji;ovoj priti"nuto"ti o2!kuj!t! pojavu lo*i2k! 1# a n! lo*i2k! + (to bi "! "i*urno &!"ilo pri upotr!bi pullBup otpornika)$ 'ajj!&no"tavnij! j! u to "lu2aju inv!rtovati "v! ulaz!$ ()0>Ie):S0:5)e@-d0ce comf P"RTB,% andlw b'00000011' return A Stanj! pr!ki&a2a u bitovi a + i 1 u U A Inv!rtovani P<CT5 u U A Ma"kiranj! bitova @ &o P (izlazni) A Povratak iz potpro*ra a
3rajv!r bi "! o*ao &o&atno ko binovati "a *lavni pro*ra o tako &a "! vr!&no"t bQ++++++11Q za&aj! j!&no pr! inicijalizacij! (npr$ "a 5L-:8ZI !Xu bQ++++++11Q)# a zati &a "! inicijalno po&!avanj! TCIS5 r!*i"tra kao i an&lR in"trukcij! unutar &rajv!ra po&!"i ovako i !novano vr!&no0u$ Po*l!&ajt! "a&a "l!&!0i pri !r$ 7!&an :=3 &i"pl!j na portu 5$ 3rajv!r bi "! "a"tojao o& v!0 ranij! nau2!n! tab!l! i potpro*ra a za i"pi"$ To bi o*lo iz*l!&ati ovako/ ()0>Ie):S0:2ed call T0b2 movf SP"RTB call U5d0&e return T0b2 addwf retlw retlw retlw retlw retlw retlw U5d0&e movf movwf movf movwf return Potpro*ra -p&at! po"!bna c!lina$ P#E,, b'00001100' b'10110110' b'10011110' b'11001100' b'11011010' b'11111010' SP"RTA,% P"RTA SP"RTB,% P"RTB A 3rajv!r za i"pi" U broja na :=3 &i"pl!j A Poziv za "liku :=3 &i"pl!ja A Slika ci9r! u ";a&&oR r!*i"tar za port 5$ A Poziv potpro*ra a za i"pi" A Povratak iz potpro*ra a A - U "! nalazi "! vr!&no"t o& A $1 &o $6$ Ta vr!&no"t "! &o&aj! na PC:$ A <brazac za crtanj! ci9r! 1 B 1 A <brazac za crtanj! ci9r! @ B 2 A <brazac za crtanj! ci9r! K B 3 A <brazac za crtanj! ci9r! 4 B 4 A <brazac za crtanj! ci9r! F B 5 A <brazac za crtanj! ci9r! 6 B 6 A S;a&&oR r!*i"tar porta 8 A u P<CT8 A S;a&&oR r!*i"tar porta 5 A u P<CT5 A Povratak iz potpro*ra a o! "luiti kao
18@
Ga& *o& j! o*u0! "tan&ar&izujt! "o9tv!r za uobi2aj!ni ;ar&v!r &rajv!ri a$ Potru&it! "! &a o&r!%!n! "tan&ar&n! vr!&no"ti (ulazi u prvo &rajv!ru) i !nuj!t! i po&!"it! "a o j!&no u pro*ra u$ Tako 0! pri ka"nijoj iz !ni "o9tv!ra (npr$ pri &o&avanju jo j!&no* ulazno* pina) biti &ovoljno iz !niti "a o j!&an j!&ini r!& pro*ra a$ Manj! iz !na# anj! *r!aka$ 3rajv!ri koji "u vr! !n"ki kriti2ni (npr$ za o"v!avanj! vi! :=3 &i"pl!ja# &!bouncin* ili kontrolu "t!p otora) o*u "! pozivati u o&r!%!ni tr!nutci a iz int!rapta$ Ipak# ra& "a vi! ovakvi; vr! !n"ki kriti2ni; &!lova unutar j!&no* pro*ra a &o&atno ko plikuj! o"novni al*orita pro*ra a$ 3a bi "! takvi &!lovi o*li izvravati b!z &o&atni; u"lonjavanja# *lavni pro*ra tr!ba p!rio&i2no# po za&ati krit!riju i a pozivati ov! &!lov!$ >i! o takvo principu nau2i0!t! u nar!&no po*lavlju$
18K
184
18F
186
Iz "vi; ovi; razlo*a PIC16 9a ilija ikrokontrol!ra j! prili2no n!za;valna za pravlj!nj! pro*ra a v!0i; o& @Gb$ Mora "! vo&iti ra2una o pr!vi! "itnica$ Go& PIC18 "!rij! na pri !r ukinuto j! "trani2!nj! pro*ra "k! ! orij!# &ok j! pro"tor za r!*i"tar! u banka a pov!0an na @F6$
18P
188
96. Pre%ro5e!or
- pro*ra i a "! 2!"to javlja potr!ba za "tan&ar&ni pro*ra "ki "truktura a tipa i9$$$t;!n$$$!l"!$$$ ili &o$$$R;il!$$$ (pri !ri "u iz Pa"kal j!zika# iako "! i"ta "truktura "r!0! u "vi vii pro*ra "ki j!zici a)$ Svakako &a "! ov! "truktur! o*u r!alizovati ru2no u a"! bl!ru# ali u v!0i pro*ra i a nji;ov ko& j! t!ko pratiti# 2ak i uz ko !ntar!$ Pr!proc!"or pr!&"tavlja pro*ra koji j! o*u0! ubrzati razvoj; pro*ra a# za&ravaju0i pri to ! "vu "na*u a"! bl!ra$ Gako j! to o*u0!? Pr!tpo"tavi o &a i at! v!0 razvij!n! &rajv!r! za "tan&ar&n! p!ri9!rij!$ -toliko bolj! po >a"$ M!%uti # nij! ba lako pov!zati i; u c!linu$ Za najobi2nij! t!"tiranj! &vobajtno* broja i izvravanj! razli2ito* ko&a u zavi"no"ti o& r!zultata# orali bi napi"ati &o"ta ko&a$ 6to vi! ru2no pi"ano* ko&a# to v!0a o*u0no"t pojav! *r!aka$ 'ij! li lak! pi"ati/ -, '"(I;A 9 .2008 &he+ -+c, BR"$,F e23e dec, BR"$,F e+d-, n!*o/ movf sublw btfsc goto btfsc goto UIec0> Te3& incf goto movf sublw btfss goto decf ... QI:'"(I;A,% 0x07 STATUS,? Te3& STATUS,# S10+>BR"$,F J)0> E":'"(I;A,% 0x(8 STATUS,# UIec0> BR"$,F
S10+>J)0>
Prvi "lu2aj j! razu ljiviji (op!t "u ko !ntari na !rno izo"tavlj!ni)# i nji ! j! pr!proc!"oru pr!put!na bri*a oko ra2unanja konkr!tni; vr!&no"ti (+N+P i +N38) za por!%!nj!# r!alizovanj! o&*ovaraju0! pro*ra "k! "truktur! i iz iljanj! naziva lab!la$ Potr!bno j! naravno pr!t;o&no &!9ini"ati &a j! ?<3I'8 &vobajtna vr!&no"t$ 'akon to "! pr!proc!"oro &obij! o&*ovaraju0i a"! bl!r"ki ko&# tako &obij!n $a" 9ajl "tan&ar&no bi "! ko pajlirao MP:85 a"! bl!ro $ 18Y
Mo&a " atrat! &a j! lak! kori"titi C ili PIC 5a"ic$ 3!li i2no "t! u pravu$ Probl! j! to vii pro*ra "ki j!zici n! o"tavljaju pro*ra !ru o*u0no"t "i uliranja pro*ra a in"trukciju po in"trukciju (bar n! na na2in koji bi pro*ra !r o*ao uticati na pro*ra na in"trukcij"ko nivou)# nji;ov ko& j! &ui i "porij! "! izvrava$ Pr!proc!"or pak &o&aj! "a o a"! bl!ru (o"novn!) o*u0no"ti vii; pro*ra "ki; j!zika# tako &a "! a"! bl!r"k! in"trukcij! "lobo&no o*u nalaziti u okviru ko&a koji izvrava pr!proc!"or$ Pr!proc!"or 0! i; j!&no"tavno i*nori"ati$ 'akon to pr!proc!"or *!n!ri! o"novni a"! bl!r"ki ko&# lako j! nakna&no *a iz !niti &ir!ktno u MP:85Bu# ukoliko >a &obij!ni ko& iz bilo koji; razlo*a n! o&*ovara$ Pr!pic pr!proc!"or o!t! "kinuti "a ;ttp/MMRRR$! b!&inc$co MpicM&loa&$;t $ Gako on n! a ?-I (?rap;ical -"!r Int!r9ac!) probl! 0! >a v!rovatno pr!&"tavljati pr!no!nj! para !tara unutar ko an&n! linij!$ S8SM (7!""ica M!r! ont!Q" Structural PIC 8""! bl!r pr!proc!""or) pr!proc!"or nalazi "! na ;ttp/MMRRR$picbook$co M&oRnloa&"$;t l$ <n j! "kro niji; o*u0no"ti# i n! o"tavlja pro*ra !ru o*u0no"t nakna&n! iz !n! &obij!no* ko&a (&obija "! "a o $;!N 9ajl)$ .i"ta j! t!ta to "! o*u0no"ti pr!proc!"ora n!&ovoljno i"kori0avaju$ -z pr!proc!"or j! razvoj pro*ra a "koro i"to toliko brz kao ko& vii; pro*ra "ki; j!zika# a op!t j! kori"niku o o*u0!na ak"i alna o*u0a kontrola pro*ra a$
1Y+
1Y1
Po"!bna "ituacija j! :C3 &i"pl!j$ -*lavno j! toliko ali; &i !nzija i toliko "labo o"v!tlj!n &a "! u prak"i prili2no alo kori"ti$ '! ojt! i"liti &a 0! >a "a nji iz*ra%!ni ur!%aji iz*l!&ati pro9!"ionalnij!$ '! a "vr;! na :C3 &i"pl!ju prikazati @ ili K ci9r!# koj! bi upotr!bo :=3 &i"pl!ja o*li no*o j!9tinij! r!alizovati$ <"i to*a :=3 &i"pl!j "! o! po" atrati po& "vi u*lovi a i o&li2no "! vi&i po raku$ 7o j!&na o&!rna novotarija j! -S5 kon!kcija$ 5ila bi "a"vi u r!&u# ka&a bi pro"!2an PIC ikrokontrol!r i ao koji !*abajt ! orij!$ <vako# j!&ina pr!&no"t joj j! ko patibilno"t iz !%u "vi; PC kon9i*uracija$ '! ka! &a j! to ala pr!&no"t# ali zapitajt! "! po kojoj c!ni >a j! potr!bna$
1Y@
za*lavlju koj! kori"tit! za razvoj novi; pro*ra a unapr!& inicijalizuj!t! "tanj! na P<CT8 i P<CT5 r!*i"tri a pr! pro !n! TCIS8 r!*i"tra$ - "tvari po!ljno j! ubaciti inicijalizaciju u za*lavlj! za "v! najkori0!nij! r!*i"tr! (npr$ I'TC<' i <PTI<'LC=?) zaj!&no "a nji;ovi kratki objanj!nji a# &a "! nji;ova inicijalizacija n! bi pr!vi&!la$ -koliko "u &ir!ktno na ikrokontrol!r pov!zani pr!ki&a2i# orat! na ulazni pinovi a po"taviti pull up ili pull &oRn otpornik!$ 'ajprakti2nij! j! kori"titi int!*ri"an! pull up otpornik! na P<CT5$ - protivno # zra2!nj! va!* obilno* t!l!9ona# poja2ana aktivno"t "un2!vi; p!*a pa 2ak i ko ni2in upravo uklju2!n u"i"iva2 o*u &ov!"ti &o pr!la"ka ulazno* pina u n!&!9ini"ano "tanj! i lanu &!t!kciju priti"nuto* ta"t!ra$ Pro*ra b!z &!bouncin* rutin! ra&i0! b!z probl! a &ok "u kontakti pr!ki&a2a novi$ .i "! oni i"krzaju# pro*ra 0! &!t!ktovati vi! uza"topni; priti"aka pr!ki&a2a$ Gori"nici uv!k o*u priti"nuti @# K ili vi! ta"t!ra i"tovr! !no$ 5u&it! "i*urni &a 0! bar n!ko o& nji; to i u2initi$ Pro*ra ora biti napi"an tako &a pr!&vi&i i tu o*u0no"t$ Po"!ban "lu2aj pr!&"tavljaju *r!k! izazvan! int!rni ciklu"o 2itanja i upi"a "tanja "a porta (!n*$ CMU O R!a&# +o&i9W .rit!)$ Priliko iz !n! "tanja porta in"trukcijo bc9 P<CT8#@ ikrokontrol!r 0! o2itati tr!nutno "tanj! "vi; pinova P<CT8 r!*i"tra# r!"!tovati bit @ i po"taviti &obij!no "tanj! u P<CT8$ M!%uti # ukoliko j! na pri !r pin C8+ &!9ini"an kao izlazni "a lo*i2ko 1# ali "! iz bilo ko* razlo*a (pr!vi! ala i p!&an"a na liniji) pin C8+ tr!nutno nalazi u "tanju u ko ! nij! po"tavlj!n# o*u0! j! &a ikrokontrol!r pri CMU ciklu"u "a nj!*a o2ita lo*i2ku + u !"to lo*i2ku 1# i &a u na taj na2in *r!ko priliko upi"a pro !ni "tanj!$ 3a bi "! ovo izb!*lo# po!ljno j! n! izvravati op!racij! &ir!ktno na& portovi a# v!0 "v! op!racij! obavljati na& ";a&&oR r!*i"tro # a t!k ka"nij!# ka&a j! to n!op;o&no kopirati r!zultat u o&*ovaraju0i port$ - !"to 2!kanja na "!tovanj! 9la*a kraja upi"a u ==PC<M o!t! (ukoliko va brzina nij! i p!rativ) j!&no"tavno "a2!kati &ovoljno &u*o &a "! upi" "i*urno zavri$ Tako%! &obra j! prak"a t!"tiranj! ak"i alno* vr! !na "ni anja i na"tavak pro*ra a ukoliko j! ono no*o &u! o& nor alno* i*noriu0i pri to ! "tanj! 9la*a$ 'a taj na2in "i*urni "t! &a 0! pro*ra i"pravno ra&iti 2ak i &a ikrokontrol!r (iz bilo ko* razlo*a) n! "!tuj! pravovr! !no 9la*$ ==PC<M ! orija ikrokontrol!ra i a "voj ra&ni v!k$ '! bi " !li &ozvoliti pro*ra u "ni anj! pr!ko vr!&no"ti "p!ci9iciran! u t!;ni2ko uput"tvu$ 5olj! po inicijalizaciji ikrokontrol!ra obavit! "v! potr!bn! op!racij! u obi2noj (C8M) ! oriji# a "ni ajt! u ==PC<M# "a o ka&a j! to n!op;o&no$ Ipak# "a PIC j! prili2no iz&rljiv$ =vo &obro* pri !ra "a j!&n! ailin* li"t!$ Fro / ^n!p!LWu^ To/ ikro!l!ktronikamWa;oo*roup"$co Subj!ct/ \ ikro!l!ktronika] C!/ Pouz&ano"t PICBova (U3T) 8 !vo i o* "kro no* i"ku"tva /) 'ai ! *r!ko "a u j!&no proj!ktu upi"# u int!rni ==PC<M PIC18F4F@ ikrokontrol!ra# vrio na 1++ S n!pr!ki&no# i nakon 1Y4
vi! !"!ci ra&a ta lokacija ==PC<Ma j! "tra&ala$ ^<b&ukcijo ^ j! utvr%!no &a j! vi! o& 1@++++++ (1@ iliona) puta izvr!n upi" pr! n!*o to "! javio probl! /) =to# i a i pozitivni; i"ku"tava /))) 3obru prak"u pr!&"tavlja kratko uklju2!nj! "vi; :=3 za vr! ! inicijalizacij! ikrokontrol!ra$ 'a taj na2in o& a; po uklju2!nju ikrokontrol!ra o!t! pri !titi &a li "u "vi "!* !nti :=3 &i"pl!ja kao i poj!&ina2n! :=3 i"pravn!$ -koliko j! o*u0!# u toku inicijalizacij! t!"tirajt! i !k"t!rn! ko pon!nt!$ 'a pri !r &i*italni "!nzor t! p!ratur! j! o2i*l!&no n!i"pravan ukoliko prijavljuj! t! p!raturu ap"olutn! nul! (B@PKoC)$ 3!t!kciju bilo kakvo* kvara ikrokontrol!r o! "i*nalizirati tr!p!r!nj! &i"pl!ja ili poj!&ina2ni; :=3 uz !v!ntualni opi" *r!k! (npr tr!p!r!0a oznaka =1 na :=3 &i"pl!ju "i*nalizira pr!ki& v!za &o "!nzora o"v!tlj!no"ti utvr%!nu nj!*ovo pr!v!liko otporno0u# a tr!p!r!0a oznaka =@ n!i"pravno"t &i*italno* "!nzora t! p!ratur! utvr%!nu izla"ko !r!n! t! p!ratur! iz nj!no* uobi2aj!no* B ra&no* op"!*a)$ 'a taj na2in bli! o&r!%uj!t! !"to kvara# to va o! po o0i priliko opravk!$ Microc;ip j! tako%! i ao Mar9ija na u u ka&a j! proj!ktovao ikrokontrol!r! pa a"! bl!r u "v! n!i"kori0!n! a&r!"! pro*ra "k! ! orij! "ni a ko& '<P in"trukcij!$ 'akon ak"i aln! pro*ra "k! a&r!"! KNFF pro*ra "! na"tavlja o& po2!tka (+N++)$ Ipak# probl! o! izazvati a&r!"iranj! ! orij! koja nij! i pl! !ntovana u PIC16F84 ikrokontrol!ru (4N++ O 1FNFF)# j!r 0! "! ona ponaati kao &a j! u njoj apirana obi2na (ra&na) pro*ra "ka ! orija$ Potpuno j! i"to a&r!"iranj! lokacija +N@+# 4N@+# 8N@+# CN@+# 1+N@+# 14N@+# 18N@+ i 1CN@+$ <vo "u ipak !k"tr! ni "lu2aj!vi i n! bi >a" tr!bali brinuti$
1YF
6$ - !"to rotaciono* !nko&!ra po"tavlj!na j! ta"tatura "a ci9ra a I+J &o IYJ i ta"t!ro I38:7=J b!z &!bouncin* rutin!# ali "a pauzo o& tr!0in! "!kun&! po priti"nuto ta"t!ru$ >r! ! potr!bno za po&!avanj! izno"i oko KS$ P$ 3o&ata j! &!bouncin* rutina$ >r! ! za po&!avanj! izno"i "a o @S$ Si*urno "t! i >i &oli &o zaklju2ka &a bi j!&ino na2ini po& ta2ko 4# F i P bili najprila*o%!niji kori"niku$ Goji na2in 0! "! kori"titi zavi"i j!&ino o& broja "lobo∋ pinova i c!n! o&*ovaraju0!* int!r9!j"a$ <"i ulazni;# nij! t!ko o"tvariti poboljanja ni na izlazno ;ar&v!ru$ 6ta i"lit! o :=3 &i"pl!ju koji !nja ja2inu "vo* "v!tla u zavi"no"ti o& "poljno* o"v!tlj!nja? 'o0u bi "v!tl!o "labo# a &anju jako$ <"i to l!p! iz*l!&a (n! blj!ti)# &i"pl!j 0! >a &u! trajati$ -koliko i at! 2!"t! n!"taic! "truj!# pa "t! zbo* to*a za "at pr!&vi&!li &o&atno napajanj! bat!rijo # n! a potr!b! &a :=3 &i"pl!j bu&! "vo vr! ! uklju2!n$ 8ko *a v!0 orat! uklju2ivati ka&a n! a napajanja iz r!!# n!ka to bu&! po priti"ku ta"t!r pr!ki&a2a i na kratko$
1YP
1Y8
'ajnovija Microc;ip 9a ilija ikrokontrol!ra PICK@ N o o*u0uj! ra& "a tri&!"!t&vobitni in"trukcija a# ali naalo"t in"trukcij! "u joj potpuno razli2it! o& raniji; "!rija$ Iz*l!&a &a j! Microc;ip r!io &a prila*o&i "voj! proizvo&! i za pro*ra "ki j!zik C koji u raniji "!rija a nij! bio !9!ktno za"tuplj!n$ - !"to PIC16F84 ikrokontrol!ra o!t! uz o&*ovaraju0! iz !n! "o9tv!ra kori"titi PIC16F6@8 koji i a &uplo vi! ! orij!# int!*ri"ani PUM i CS@K@ i jo &va taj !ra uz &uplo anju c!nu$ -koliko "u >a bitni 8M3 konv!rtori i&!alno r!!nj! pr!&"tavljaju 18Bpin"ki PIC16F88 i 4+Bpin"ki PIC16F8PP$ -z ovakv! o"nov! o!t! i"probati i &ru*! 9a ilij! ikrokontrol!ra$ Tr!nutno "u aktu!ln! "!rij! 8>C i Motorola$ 'aalo"t otorolini ikrokontrol!ri (iako o&li2ni i j!9tini) i aju prili2no "kup "o9tv!r# a i &o"tava i o! biti probl! ati2na za nau z! lju$ <no to 2ini ikrokontrol!r! toliko o0ni nij! nji;ova brzina# ! orija ni int!*ri"ani ;ar&v!r# v!0 i&!ja o nji;ovoj o*u0oj upotr!bi u "vako&n!vno ivotu# i poboljanja koja bi "! nji;ovo upotr!bo o*la o"tvariti$ -koliko v!0 n! at! u"lova &a ikrokontrol!ri a poboljat! in&u"trij"k! ain!# po2nit! o& "vo* &o a0in"tva$ St!p!ni2ni auto at za "v!tlo# !l!ktron"ka brava# zvono# taj !r za o"v!tlj!nj! akvariju a# taj !r za pr!;ranu p2!la zi i# auto at"ka ;ranilica za ku0n! ljubi c!# &i*italni po&"!tnik# brzino !r za biciklu# "v! "u to ali proj!kti koji >a o*u po o0i u "vako&n!vno ivotu$ 3!luj! j!&no"tavno? S!tit! "! "vo* prvo* pro*ra a$ Mo*u0no"t za na&o*ra&nju uv!k po"toji$
@++
1:). Pr#$o1#
Prilo*! na nar!&ni "trana a po!ljno j! ta pati po"!bno# kako bi >a uv!k bili na &o;vatu ruk!$ Mo!t! i; kori"titi kako bi "! brzo po&"!tili ta2no* naziva in"trukcija ili bank! r!*i"tara$ XOR + 1 + 1 A&D + 1 + 1 'OR + 1 + 1 CO( + 1 1 + 00101110 A"R 10010110 6 10111000 C!zultat `<C op!racij! 0! biti lo*i2ka 1 "a o ukoliko "u u oba op!ran&a razli2ita$ -koliko "u i"ta (ob! + ili ob! 1)# r!zultat 0! biti lo*i2ka +$ 01101011 A;( 10100101 6 00100001 C!zultat 8'3 op!racij! bi0! lo*i2ka 1 "a o ukoliko "u oba op!ran&a na lo*i2koj 1$ -koliko bar j!&an nij!# r!zultat 0! biti lo*i2ka +$ 01101011 I"R 10100101 6 11101111 C!zultat I<C op!racij! bi0! lo*i2ka 1 ukoliko j! bar na j!&no op!ran&u pri"utna lo*i2ka 1$ -koliko "u oba na lo*i2koj +# i r!zultat 0! biti j!&nak lo*i2koj +$ #"4 01101011 6 10010100 Go pl! !nt ili inv!rtovanj! pr!&"tavlja lo*i2ku op!raciju u kojoj "vaki bit u bajtu !nja "voju vr!&no"t$
+ + 1 1
+ 1 1 +
+ + 1 1
+ + + 1
+ + 1 1
+ 1 1 1
@+1
De0 Aex $+ $1 $@ $K $4 $F $6 $P $8 $Y
B"/
BCD ++ +1 +@ +K +4 +F +6 +P +8 +Y +N +N +N +N +N +N BCD @+ @1 @@ @K @4 @F @6 @P @8 @Y @N @N @N @N @N @N
O5/ + H$1 H$@ H$K H$4 H$F H$6 H$P H$8 H$Y H$1+ H$11 H$1@ H$1K H$14 H$1F O5/ H$K@ H$KK H$K4 H$KF H$K6 H$KP H$K8 H$KY H$4+ H$41 H$4@ H$4K H$44 H$4F H$46 H$4P
De0 Aex
B"/
BCD 1+ 11 1@ 1K 14 1F 16 1P 18 1Y 1N 1N 1N 1N 1N 1N BCD K+ K1 K@ KK K4 KF K6 KP K8 KY KN KN KN KN KN KN
O5/ H$16 H$1P H$18 H$1Y H$@+ H$@1 H$@@ H$@K H$@4 H$@F H$@6 H$@P H$@8 H$@Y H$K+ H$K1 O5/ H$48 H$4Y H$F+ H$F1 H$F@ H$FK H$F4 H$FF H$F6 H$FP H$F8 H$FY H$6+ H$61 H$6@ H$6K
+N++ bQ++++ ++++Q +N+1 bQ++++ +++1Q +N+@ bQ++++ ++1+Q +N+K bQ++++ ++11Q +N+4 bQ++++ +1++Q +N+F bQ++++ +1+1Q +N+6 bQ++++ +11+Q +N+P bQ++++ +111Q +N+8 bQ++++ 1+++Q +N+Y bQ++++ 1++1Q
$16 +N1+ bQ+++1 ++++Q $1P +N11 bQ+++1 +++1Q $18 +N1@ bQ+++1 ++1+Q $1Y +N1K bQ+++1 ++11Q $@+ +N14 bQ+++1 +1++Q $@1 +N1F bQ+++1 +1+1Q $@@ +N16 bQ+++1 +11+Q $@K +N1P bQ+++1 +111Q $@4 +N18 bQ+++1 1+++Q $@F +N1Y bQ+++1 1++1Q $@6 +N18 bQ+++1 1+1+Q $@P +N15 bQ+++1 1+11Q $@8 +N1C bQ+++1 11++Q $@Y +N13 bQ+++1 11+1Q $K+ +N1= bQ+++1 111+Q $K1 +N1F bQ+++1 1111Q De0 Aex B"/
$1+ +N+8 bQ++++ 1+1+Q $11 +N+5 bQ++++ 1+11Q $1@ +N+C bQ++++ 11++Q $1K +N+3 bQ++++ 11+1Q $14 +N+= bQ++++ 111+Q $1F +N+F bQ++++ 1111Q De0 Aex B"/
$K@ +N@+ bQ++1+ ++++Q $KK +N@1 bQ++1+ +++1Q $K4 +N@@ bQ++1+ ++1+Q $KF +N@K bQ++1+ ++11Q $K6 +N@4 bQ++1+ +1++Q $KP +N@F bQ++1+ +1+1Q $K8 +N@6 bQ++1+ +11+Q $KY +N@P bQ++1+ +111Q $4+ +N@8 bQ++1+ 1+++Q $41 +N@Y bQ++1+ 1++1Q $4@ +N@8 bQ++1+ 1+1+Q $4K +N@5 bQ++1+ 1+11Q $44 +N@C bQ++1+ 11++Q $4F +N@3 bQ++1+ 11+1Q $46 +N@= bQ++1+ 111+Q $4P +N@F bQ++1+ 1111Q
$48 +NK+ bQ++11 ++++Q $4Y +NK1 bQ++11 +++1Q $F+ +NK@ bQ++11 ++1+Q $F1 +NKK bQ++11 ++11Q $F@ +NK4 bQ++11 +1++Q $FK +NKF bQ++11 +1+1Q $F4 +NK6 bQ++11 +11+Q $FF +NKP bQ++11 +111Q $F6 +NK8 bQ++11 1+++Q $FP +NKY bQ++11 1++1Q $F8 +NK8 bQ++11 1+1+Q $FY +NK5 bQ++11 1+11Q $6+ +NKC bQ++11 11++Q $61 +NK3 bQ++11 11+1Q $6@ +NK= bQ++11 111+Q $6K +NKF bQ++11 1111Q
@+@
De0 Aex
B"/
BCD 4+ 41 4@ 4K 44 4F 46 4P 48 4Y 4N 4N 4N 4N 4N 4N BCD 6+ 61 6@ 6K 64 6F 66 6P 68 6Y 6N 6N 6N 6N 6N 6N
O5/ H$64 H$6F H$66 H$6P H$68 H$6Y H$P+ H$P1 H$P@ H$PK H$P4 H$PF H$P6 H$PP H$P8 H$PY O5/ H$Y6 H$YP H$Y8 H$YY
De0 Aex
B"/
BCD F+ F1 F@ FK F4 FF F6 FP F8 FY FN FN FN FN FN FN BCD P+ P1 P@ PK P4 PF P6 PP P8 PY PN PN PN PN PN PN
O5/ H$8+ H$81 H$8@ H$8K H$84 H$8F H$86 H$8P H$88 H$8Y H$Y+ H$Y1 H$Y@ H$YK H$Y4 H$YF O5/ H$11@ H$11K H$114 H$11F H$116 H$11P H$118 H$11Y H$1@+ H$1@1 H$1@@ H$1@K H$1@4 H$1@F H$1@6 H$1@P
$64 +N4+ bQ+1++ ++++Q $6F +N41 bQ+1++ +++1Q $66 +N4@ bQ+1++ ++1+Q $6P +N4K bQ+1++ ++11Q $68 +N44 bQ+1++ +1++Q $6Y +N4F bQ+1++ +1+1Q $P+ +N46 bQ+1++ +11+Q $P1 +N4P bQ+1++ +111Q $P@ +N48 bQ+1++ 1+++Q $PK +N4Y bQ+1++ 1++1Q $P4 +N48 bQ+1++ 1+1+Q $PF +N45 bQ+1++ 1+11Q $P6 +N4C bQ+1++ 11++Q $PP +N43 bQ+1++ 11+1Q $P8 +N4= bQ+1++ 111+Q $PY +N4F bQ+1++ 1111Q De0 Aex B"/
$8+ +NF+ bQ+1+1 ++++Q $81 +NF1 bQ+1+1 +++1Q $8@ +NF@ bQ+1+1 ++1+Q $8K +NFK bQ+1+1 ++11Q $84 +NF4 bQ+1+1 +1++Q $8F +NFF bQ+1+1 +1+1Q $86 +NF6 bQ+1+1 +11+Q $8P +NFP bQ+1+1 +111Q $88 +NF8 bQ+1+1 1+++Q $8Y +NFY bQ+1+1 1++1Q $Y+ +NF8 bQ+1+1 1+1+Q $Y1 +NF5 bQ+1+1 1+11Q $Y@ +NFC bQ+1+1 11++Q $YK +NF3 bQ+1+1 11+1Q $Y4 +NF= bQ+1+1 111+Q $YF +NFF bQ+1+1 1111Q De0 Aex B"/
$Y6 +N6+ bQ+11+ ++++Q $YP +N61 bQ+11+ +++1Q $Y8 +N6@ bQ+11+ ++1+Q $YY +N6K bQ+11+ ++11Q $1++ +N64 bQ+11+ +1++Q $1+1 +N6F bQ+11+ +1+1Q $1+@ +N66 bQ+11+ +11+Q $1+K +N6P bQ+11+ +111Q $1+4 +N68 bQ+11+ 1+++Q $1+F +N6Y bQ+11+ 1++1Q $1+6 +N68 bQ+11+ 1+1+Q $1+P +N65 bQ+11+ 1+11Q $1+8 +N6C bQ+11+ 11++Q $1+Y +N63 bQ+11+ 11+1Q $11+ +N6= bQ+11+ 111+Q $111 +N6F bQ+11+ 1111Q
$11@ +NP+ bQ+111 ++++Q $11K +NP1 bQ+111 +++1Q $114 +NP@ bQ+111 ++1+Q $11F +NPK bQ+111 ++11Q
H$1++ $116 +NP4 bQ+111 +1++Q H$1+1 $11P +NPF bQ+111 +1+1Q H$1+@ $118 +NP6 bQ+111 +11+Q H$1+K $11Y +NPP bQ+111 +111Q H$1+4 $1@+ +NP8 bQ+111 1+++Q H$1+F $1@1 +NPY bQ+111 1++1Q H$1+6 $1@@ +NP8 bQ+111 1+1+Q H$1+P $1@K +NP5 bQ+111 1+11Q H$1+8 $1@4 +NPC bQ+111 11++Q H$1+Y $1@F +NP3 bQ+111 11+1Q H$11+ $1@6 +NP= bQ+111 111+Q H$111 $1@P +NPF bQ+111 1111Q
@+K
De0 Aex
B"/
BCD 8+ 81 8@ 8K 84 8F 86 8P 88 8Y 8N 8N 8N 8N 8N 8N BCD N+ N1 N@ NK N4 NF N6 NP N8 NY NN NN NN NN NN NN
O5/ B$1 B$@ B$K B$4 B$F B$6 B$P B$8 B$Y B$1+ B$11 B$1@ B$1K B$14 B$1F B$16 O5/ B$KK B$K4 B$KF B$K6 B$KP B$K8 B$KY B$4+ B$41 B$4@ B$4K B$44 B$4F B$46 B$4P B$48
De0 Aex
B"/
BCD Y+ Y1 Y@ YK Y4 YF Y6 YP Y8 YY YN YN YN YN YN YN BCD N+ N1 N@ NK N4 NF N6 NP N8 NY NN NN NN NN NN NN
O5/ B$1P B$18 B$1Y B$@+ B$@1 B$@@ B$@K B$@4 B$@F B$@6 B$@P B$@8 B$@Y B$K+ B$K1 B$K@ O5/ B$4Y B$F+ B$F1 B$F@ B$FK B$F4 B$FF B$F6 B$FP B$F8 B$FY B$6+ B$61 B$6@ B$6K B$64
$1@8 +N8+ bQ1+++ ++++Q $1@Y +N81 bQ1+++ +++1Q $1K+ +N8@ bQ1+++ ++1+Q $1K1 +N8K bQ1+++ ++11Q $1K@ +N84 bQ1+++ +1++Q $1KK +N8F bQ1+++ +1+1Q $1K4 +N86 bQ1+++ +11+Q $1KF +N8P bQ1+++ +111Q $1K6 +N88 bQ1+++ 1+++Q $1KP +N8Y bQ1+++ 1++1Q $1K8 +N88 bQ1+++ 1+1+Q $1KY +N85 bQ1+++ 1+11Q $14+ +N8C bQ1+++ 11++Q $141 +N83 bQ1+++ 11+1Q $14@ +N8= bQ1+++ 111+Q $14K +N8F bQ1+++ 1111Q De0 Aex B"/
$144 +NY+ bQ1++1 ++++Q $14F +NY1 bQ1++1 +++1Q $146 +NY@ bQ1++1 ++1+Q $14P +NYK bQ1++1 ++11Q $148 +NY4 bQ1++1 +1++Q $14Y +NYF bQ1++1 +1+1Q $1F+ +NY6 bQ1++1 +11+Q $1F1 +NYP bQ1++1 +111Q $1F@ +NY8 bQ1++1 1+++Q $1FK +NYY bQ1++1 1++1Q $1F4 +NY8 bQ1++1 1+1+Q $1FF +NY5 bQ1++1 1+11Q $1F6 +NYC bQ1++1 11++Q $1FP +NY3 bQ1++1 11+1Q $1F8 +NY= bQ1++1 111+Q $1FY +NYF bQ1++1 1111Q De0 Aex B"/
$16+ +N8+ bQ1+1+ ++++Q $161 +N81 bQ1+1+ +++1Q $16@ +N8@ bQ1+1+ ++1+Q $16K +N8K bQ1+1+ ++11Q $164 +N84 bQ1+1+ +1++Q $16F +N8F bQ1+1+ +1+1Q $166 +N86 bQ1+1+ +11+Q $16P +N8P bQ1+1+ +111Q $168 +N88 bQ1+1+ 1+++Q $16Y +N8Y bQ1+1+ 1++1Q $1P+ +N88 bQ1+1+ 1+1+Q $1P1 +N85 bQ1+1+ 1+11Q $1P@ +N8C bQ1+1+ 11++Q $1PK +N83 bQ1+1+ 11+1Q $1P4 +N8= bQ1+1+ 111+Q $1PF +N@F bQ1+1+ 1111Q
$1P6 +N5+ bQ1+11 ++++Q $1PP +N51 bQ1+11 +++1Q $1P8 +N5@ bQ1+11 ++1+Q $1PY +N5K bQ1+11 ++11Q $18+ +N54 bQ1+11 +1++Q $181 +N5F bQ1+11 +1+1Q $18@ +N56 bQ1+11 +11+Q $18K +N5P bQ1+11 +111Q $184 +N58 bQ1+11 1+++Q $18F +N5Y bQ1+11 1++1Q $186 +N58 bQ1+11 1+1+Q $18P +N55 bQ1+11 1+11Q $188 +N5C bQ1+11 11++Q $18Y +N53 bQ1+11 11+1Q $1Y+ +N5= bQ1+11 111+Q $1Y1 +N5F bQ1+11 1111Q
@+4
De0 Aex
B"/
BCD N+ N1 N@ NK N4 NF N6 NP N8 NY NN NN NN NN NN NN BCD N+ N1 N@ NK N4 NF N6 NP N8 NY NN NN NN NN NN NN
O5/ B$6F B$66 B$6P B$68 B$6Y B$P+ B$P1 B$P@ B$PK B$P4 B$PF B$P6 B$PP B$P8 B$PY B$8+ O5/ B$YP B$Y8 B$YY
De0 Aex
B"/
BCD N+ N1 N@ NK N4 NF N6 NP N8 NY NN NN NN NN NN NN BCD N+ N1 N@ NK N4 NF N6 NP N8 NY NN NN NN NN NN NN
O5/ B$81 B$8@ B$8K B$84 B$8F B$86 B$8P B$88 B$8Y B$Y+ B$Y1 B$Y@ B$YK B$Y4 B$YF B$Y6 O5/ B$11K B$114 B$11F B$116 B$11P B$118 B$11Y B$1@+ B$1@1 B$1@@ B$1@K B$1@4 B$1@F B$1@6 B$1@P B$1@8
$1Y@ +NC+ bQ11++ ++++Q $1YK +NC1 bQ11++ +++1Q $1Y4 +NC@ bQ11++ ++1+Q $1YF +NCK bQ11++ ++11Q $1Y6 +NC4 bQ11++ +1++Q $1YP +NCF bQ11++ +1+1Q $1Y8 +NC6 bQ11++ +11+Q $1YY +NCP bQ11++ +111Q $@++ +NC8 bQ11++ 1+1+Q $@+1 +NCY bQ11++ 1++1Q $@+@ +NC8 bQ11++ 1+1+Q $@+K +NC5 bQ11++ 1+11Q $@+4 +NCC bQ11++ 11++Q $@+F +NC3 bQ11++ 11+1Q $@+6 +NC= bQ11++ 111+Q $@+P +NCF bQ11++ 1111Q De0 Aex B"/
$@+8 +N3+ bQ11+1 ++++Q $@+Y +N31 bQ11+1 +++1Q $@1+ +N3@ bQ11+1 ++1+Q $@11 +N3K bQ11+1 ++11Q $@1@ +N34 bQ11+1 +1++Q $@1K +N3F bQ11+1 +1+1Q $@14 +N36 bQ11+1 +11+Q $@1F +N3P bQ11+1 +111Q $@16 +N38 bQ11+1 1+++Q $@1P +N3Y bQ11+1 1++1Q $@18 +N38 bQ11+1 1+1+Q $@1Y +N35 bQ11+1 1+11Q $@@+ +N3C bQ11+1 11++Q $@@1 +N33 bQ11+1 11+1Q $@@@ +N3= bQ11+1 111+Q $@@K +N3F bQ11+1 1111Q De0 Aex B"/
$@@4 +N=+ bQ111+ ++++Q $@@F +N=1 bQ111+ +++1Q $@@6 +N=@ bQ111+ ++1+Q $@@P +N=K bQ111+ ++11Q $@@8 +N=4 bQ111+ +1++Q $@@Y +N=F bQ111+ +1+1Q $@K+ +N=6 bQ111+ +11+Q $@K1 +N=P bQ111+ +111Q $@K@ +N=8 bQ111+ 1+++Q $@KK +N=Y bQ111+ 1++1Q $@K4 +N=8 bQ111+ 1+1+Q $@KF +N=5 bQ111+ 1+11Q $@K6 +N=C bQ111+ 11++Q $@KP +N=3 bQ111+ 11+1Q $@K8 +N== bQ111+ 111+Q $@KY +N=F bQ111+ 1111Q
$@4+ +NF+ bQ1111 ++++Q $@41 +NF1 bQ1111 +++1Q $@4@ +NF@ bQ1111 ++1+Q
B$1++ $@4K +NFK bQ1111 ++11Q B$1+1 $@44 +NF4 bQ1111 +1++Q B$1+@ $@4F +NFF bQ1111 +1+1Q B$1+K $@46 +NF6 bQ1111 +11+Q B$1+4 $@4P +NFP bQ1111 +111Q B$1+F $@48 +NF8 bQ1111 1+++Q B$1+6 $@4Y +NFY bQ1111 1++1Q B$1+P $@F+ +NF8 bQ1111 1+1+Q B$1+8 $@F1 +NF5 bQ1111 1+11Q B$1+Y $@F@ +NFC bQ1111 11++Q B$11+ $@FK +NF3 bQ1111 1111Q B$111 $@F4 +NF= bQ1111 111+Q B$11@ $@FF +NFF bQ1111 1111Q
@+F
'/ tru!0"1a Pr!pi" po&ataka M<>F 9#& M<>UF 9 M<>:U k C:CF 9 C:CU SU8PF 9#& 833UF 9#& 833:U k S-5UF 9#& S-5:U k I'CF 9#& 3=CF 9#& I<CUF 9#& I<C:U k 8'3UF 9#& 8'3:U k `<CUF 9#& `<C:U k C<MF 9#& 5CF 9#b 5SF 9#b C:F 9#& CCF 9#& 5TFSC 9#b 5TFSS 9#b I'CFSZ 9#& ?<T< k C8:: k C=T-C' C=T:U k C=TFI= <"talo '<P C:CU3T S:==P 5!z op!racij! Pr!pii 9 u & Pr!pii U u 9
Op"
C"!. 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
<*#
F,a-*6" &ap. 1@
001000 d,,,,,,, Z 000000 1,,,,,,, 1100xx @@@@@@@@ 000001 1,,,,,,, Z 000001 0xxxxxxx Z 001110 d,,,,,,,
-pii kon"tantu u U -pii + u 9 -pii + u U Pr!pii unakr"no niblov! iz 9 u & Sab!ri U i 9 Sab!ri U "a kon"tanto <&uz i U o& 9 <&uz i U o& kon"tant! -v!0aj 9 S anji 9 :o*i2ko I:I U "a 9 :o*i2ko I:I U "a kon"tanto :o*i2ko I U "a 9 :o*i2ko I U "a kon"tanto :o*i2ko ISG:7-.->< I:I U "a 9 Inv!rtuj 9 C!"!tuj bit b u 9 S!tuj bit b u 9 Cotiraj nal!vo kroz C8CCg Cotiraj na&!"no kroz C8CCg pro*ra a T!"t bita b u 9# pr!"ko2i ako j! bit V + T!"t bita b u 9# pr!"ko2i ako j! bit V 1 -v!0aj 9# pr!"ko2i ako j! V + I&i na a&r!"u Pozovi potpro*ra >rati "! iz potpro*ra a >rati "! "a kon"tanto >rati "! iz int!rapta uU
@ 1@
8rit !ti2ko lo*i2k! op!racij! 000111 d,,,,,,, C 3C Z 1 @ 11111x @@@@@@@@ C 3C Z 000010 d,,,,,,, C 3C Z 1 @ 11110x @@@@@@@@ C 3C Z 001010 d,,,,,,, Z 001011 d,,,,,,, Z 000100 d,,,,,,, Z 111000 @@@@@@@@ Z 000101 d,,,,,,, Z 11111x @@@@@@@@ Z 000110 d,,,,,,, Z 111010 @@@@@@@@ Z 001001 d,,,,,,, Z 0100bb b,,,,,,, 0101bb b,,,,,,, 001101 d,,,,,,, C 001100 d,,,,,,, C 1@ 1@ 1@ 1@ 1@ K K 1@K 1@K 1@ 1@ 1@ 1@ 1@
-pravljanj! toko
1 (@) 0110bb b,,,,,,, 1 (@) 0111bb b,,,,,,, 1 (@) 001111 d,,,,,,, 1 (@) 001011 d,,,,,,, @ @ @ @ @ 1 1 1 101@@@ @@@@@@@@ 100@@@ @@@@@@@@ 000000 00001000 1101xx @@@@@@@@ 000000 00001001 000000 0xx00000 000000 01100100 T< P3 000000 01100011 T< P3
@+6
:!*!n&a/ , % b @ x d # (# ? T" P( T T T T T T T T T T T a&r!"a r!*i"tra U r!*i"tar a&r!"a bita unutar o" obitno* r!*i"tra kon"tantna (n!pro !nljiva) vr!&no"t ili lab!la n!bitan bit (nj!*ova vr!&no"t "! i*nori!$ 8"! bl!r *a auto at"ki r!"!tuj!) o&r!&it!/ &V+ r!zultat u U# &V1 r!zultat u 9 CarrW 9la* ST8T-S r!*i"tra 3i*it CarrW 9la* ST8T-S r!*i"tra Z!ro 9la* ST8T-S r!*i"tra Ti ! out bit ST8T-S r!*i"tra PoR!r &oRn bit ST8T-S r!*i"tra
'apo !n!/ 1 O -koliko j! izlazni pin o2itan pa o&i9ikovan o& "tran! j!&n! in"trukcij! (npr$ ov9 P<CT5#9)# vr!&no"t koja j! uz!ta za po2!tnu bi0! vr!&no"t koja j! o2itana "a "a i; pinova$ <vo o! izazvati probl! ! zbo* CMU ciklu"a$ @ O -koliko "! ova in"trukcija izvrava na& TMC+ r!*i"tro (i ukoliko j! o&r!&it! & V 1 ako "! kori"ti)# "tanj! pr!"kal!ra 0! biti obri"ano ukoliko j! pri&ru!no taj !ru$ K O -koliko j! t!"t i"pravan# in"trukcija 0! "! izvriti za @ in"trukcij"ka ciklu"a$ Za &!taljnija objanj!nja po*l!&ajt! 3SKK+@K8 "a RRR$ icroc;ip$co $
@+P
A#re a +N++ +N+1 +N+@ +N+K +N+4 +N+F +N+6 +N+P +N+8 +N+Y +N+8 +N+5 +N8+ +N81 +N8@ +N8K +N84 +N8F +N86 +N8P +N88 +N8Y +N88 +N85
&a5"6 I'3F TMC+ PC: FSC P<CT8 P<CT5 M ==38T8 Sa&raj !lj!n! ==PC<M ==83C 8&r!"a unutar ==PC<M
Op" Sa&raj !lj!no* C8M r!*i"tra u in&ir!ktno a&r!"iranju Taj !r +$ Pov!0ava "! o& $+ &o $@FF 'ii; 8 bitova pro*ra "ko* broja2a PC:8T, H PC: V PC ikrokontrol!ra Point!r in&ir!ktno* a&r!"iranja -lazno izlazni port 8 -lazno izlazni port 5 ! orij! ! orij! B B
B"t 7
B"t 6
B"t 5
B"t 4
B"t 3
B"t 2
B"t 1 B"t 0
Ba/! ob! + ob! ob! ob! + + M + + ob! ob! ob! 1 ob! ob! ob! 1 1 M 1 1 ob! ob!
PC B
PC B B C56 B
PC CP+ B C5F B
PC T<
PC P3
PC Z C8@ C5@ B
PC 3C C81 C51 B
PC C C8+ C5+ B
0000 0000 0001 1xxx xxxx xxxx DDDx xxxx xxxx xxxx 0000 0000 xxxx xxxx xxxx xxxx
C5P B
PC:8T, >ii; F bitova pro*ra "ko* broja2a PC:8T, H PC: V PC I'TC<' Int!rapt kontrol!r I'3F PC: FSC TCIS8 TCIS5 M ==C<'1 ==PC<M kontrol!r ==C<'@ <tklju2avanj! upi"a u ==PC<M PC:8T, >ii; F bitova pro*ra "ko* broja2a PC:8T, H PC: V PC I'TC<' Int!rapt kontrol!r Sa&raj !lj!no* C8M r!*i"tra u in&ir!ktno a&r!"iranju ikrokontrol!ra <PTI<' Gon9i*uri"anj! ;ar&v!r"ko* "tanja ST8T-S C!*i"tar "tanja ikrokontrol!ra
B ==I=
B T+I=
PC I'T=
PC C5I= PS8 PC P3
PC T+IF PS@ PC Z
PC
PC
?I=
I'TF C5IF 0000 000x PS1 PC 3C PS+ PC C 1111 1111 0000 0000 0001 1xxx xxxx xxxx DDD1 1111 1111 1111
C5P- I'T=3? T+CS T+S= PC B B B B B ?I= PC B B B B B ==I= PC CP+ B B B B T+I= B ==IF PC I'T= PC T<
'ii; 8 bitova pro*ra "ko* broja2a PC:8T, H PC: V PC Point!r in&ir!ktno* a&r!"iranja C!*i"tar " !ra po&ataka za P<CT8 C!*i"tar " !ra po&ataka za P<CT5
B C3 PC
166
Molio bi; pro&avc! PIC ikrokontrol!ra &a i "! jav! ra&i objavljivanja nji;ovi; kontakt po&ataka (a&r!"a# t!l# ob# ail# "ajt# ban!r$$$) u ovo uput"tvu po nj!*ovo zavr!tku$ Zbo* zatit! o& "pa a# !B ail 0! biti prikazan u obliku "lik!$ - uput"tvu i a izv!"ni; n!&or!2!no"ti u po*l!&u 9unkcija poj!&ini; r!*i"tara# pinova# taj in*a i "li2ni; "tvari$ Gako j! ovo prv!n"tv!no po2!tni2ko uput"tvo# n! " atra &a j! bitno opt!r!0ivati 2itaoca znanj! koj! u v!rovatno nika&a n!0! ni kori"titi$ Za pro9!"ionalan ra& "a PIC ikrokontrol!ri a# nau2it! !n*l!"ki i 2itajt! Microc;ipova t!;ni2ka uput"tva (3ata";!!t)$ '! krivit! ! zbo* upotr!b! "trani; r!2i$ 6ta i"lit!# kako bi kar&iova"kularni ;irur* o*ao obja"niti "voju pro9!"iju laiku b!z upotr!b! latin"ki; izraza? Pri !tili "t! *r!ku? '!po"toj!0i link? Prvo prov!rit! &a li j! to i"pravlj!no u najnovij! uput"tvu (na "ajtu kao i u uput"tvu uv!k objavljuj! i &atu izla"ka nov! v!rzij!)# i ukoliko nij! kontaktirajt! ! pr!ko knji*! uti"aka ili ailo objavlj!ni na "ajtu$ E!lit! li &a >a" obav!tava o objavljivanju nov! v!rzij! uput"tva na "ajtu? Mo!$ Poaljit! i "voj !B ail ! ' 1' 0o& d De$#"e d b3de"e ob ve;" v '#$ Tako%! *a poaljit! i za !v!ntualnu ka"niju o&javu$ Mo!t! "! prijaviti i pr!ko knji*! uti"aka na "ajtu$ 5!z bri*!$ =B ail a&r!"a n!0! >a biti objavlj!na$ -put"tvo "! o! "lobo&no kopirati i &i"tribuirati po& u"lovo &a "! u nj!*a n! uno"! iz !n!$ 3!li i2no kopiranj! uput"tva j! &ozvolj!no uz navo%!nj! linka &o o* "ajta# ali nij! pr!poru2ljivo zbo* novi; v!rzija uput"tva i !v!ntualni; *r!aka$ M!%uti # %rod ( ovog 3%3"!"v (e 1 br '(e' $ -koliko "t! ovo uput"tvo kupili bilo *&! i u bilo ko obliku (na C3Bu na buvljaku# na 9lopiju o& kol!*! "a po"la O pirata# o& lokalno* T> "!rvi"!ra u ta pano iz&anju)# oli >a" &a ! o to ! obav!"tit!$ 8utor n! "no"i ni naj anju o&*ovorno"t za kori0!nj! in9or acija "a ovo* uput"tva# &ati; linkova ili pro*ra a$ 8ko "prit! PIC# *o ilu !l!ktron"ki; ko pon!nti ili najnoviji Macinto"; laptop# kupit! novi# ali o "vo troku$ - izra&i ovo* uput"tva kori0!na j! "l!&!0a lit!ratura/
'ajv!0i &!o "a ;ttp/MMRRR$ "trac!W$btint!rn!t$co$ukMin&!N$;t 3ata";!!tovi "a ;ttp/MMRRR$ icroc;ip$co M T!k"tovi >oj! 8ntoni0a ;ttp/MMRRR$paralaNa$co$r"M objavlj!ni u 2a"opi"u PC Pr!"" ;ttp/MMRRR$pcpr!""$co$r"M nov! bra 1YYP za IM< ;ar&v!r S!rij"ka i rutina za kanj!nj! "a ;ttp/MMRRR$no a&$!!MPICMpicpro*$;t l Slik! 3M8 konv!rzij! "a ;ttp/MMRRR$avrBa" Btutorial$n!tMavrL!nM8>CL38C$;t l @ :=3 na 1 pinu "a &oRnloa& "!kcij! "ajta ;ttp/MMRRR$!l!ktronika$baM .a"opi" =l!ktor PB8 @++1 ;ttp/MMRRR$!l!ktorB!l!ctronic"$co$uk za ultipl!k" '!ka objanj!nja "a ;ttp/MMRRR$*!ociti!"$co M"in!lWuMpicMpicLkontrol!ri$;t Pri !r iz&rljivo"ti PICBa "a ailin* li"t! ikro!l!ktronikamWa;oo*roup"$co -put"tvo po"tavlj!no @1$8$@++8$ na "ajtu ;ttp/MMRRR$ptt$r"Mkori"niciMtMrMtri9unovM @+Y