lap trinh avr voi c www.eeelabs.org chuong2

Upload: spy004

Post on 10-Apr-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/8/2019 Lap Trinh Avr Voi c Www.eeelabs.org Chuong2

    1/7

    Lp trnh vi iu khin AVR vi ngn ng C WWW.EEELABS.ORG

    Trn Tha 2010 22

    CHNG 2: CU HNH CNG (FUSE BIT)

    CHO

    VI IU KHIN AVRChng ny tham kho bi vitThit lp Fuse Bits ca website

    www.hocavr.com v c sa i, b sung 1 s mc cho ph hp vi iu kinbi vit

    I. Gii thiu

    AVR c sn mt s mch in v cc thit b h tr bn trong, viciu khin cc mch in ny c thc hin thng qua cc Fuse bits. V d

    bn trong cc chip AVR c b to dao ng cho chip, nu mun s dng hocv hiu ha b to dao ng ny chng ta s set cc Fuse bits iu khin ngun

    xung clock(c th phn sau). Nh th, Fuse bits cng ging nh cc cu chhay cc cng tc cng ni AVR vi cc mch in h tr. V l cc cngtc cng nn chng phi c set ring bit, khng set c bng lnh"mm".

    Mi loi AVR c s lng mch in h tr khc nhau v v th s lngFuse bits s khc nhau. V tr cc Fuse bits cng khc nhau trn mi dng chiptuy nhin tn gi th nh nhau. Ti s dng chip ATmega32 lm minh ha.Chip ATmega32 c 16 Fuse bits c b tr trong 2 byte gi l Fuse HighByte v Fuse Low Byte. V tr cc Fuse bits khng quan trng (v chng tadng phn mm h tr set tng Fuse bit) nhng tn gi v chc nng th cn

    kho st. Bng 1 tm tt cc bits trong Fuse High Byte v bng 2 tm tt ccbits trong Fuse Low Byte.

    Bng 1. Fuse High Byte

  • 8/8/2019 Lap Trinh Avr Voi c Www.eeelabs.org Chuong2

    2/7

    Lp trnh vi iu khin AVR vi ngn ng C WWW.EEELABS.ORG

    Trn Tha 2010 23

    Bng 2. Fuse Low Byte

    II. Lp trnh fuse bit.

    Hin nay c rt nhiu phn mm h tr FUSE BIT, c loi lp trnh trntng bit, c loi cu hnh bng cc thng s trn giao din ngi dng rt trcquan. Bi ny ti xin gii thiu mt chng trnh cu hnh trn giao din vhnh nh cc bit thc t sau khi c cu hnh. Chng trnh cu hnh Fuse bitchnh l chng trnh np nm trong b cng c lp trnh v bin dch AVRStudio 4 gii thiu trn.

    Nu cc bn dng mt chng trnh lp trnh fuse bit khc th ch li vi cc Fuse bits, gn gi tr 0 cho mt Fuse bit ng ngha vi Fuse bit c lp trnh (programmed), trong khi 1 ngha l khng c lp trnh

    (unprogrammed).

    Hnh 1. Mc cu hnh Fuse bit Atmega32

  • 8/8/2019 Lap Trinh Avr Voi c Www.eeelabs.org Chuong2

    3/7

    Lp trnh vi iu khin AVR vi ngn ng C WWW.EEELABS.ORG

    Trn Tha 2010 24

    Hnh 1 l mc cu hnh sau khi kt ni vi mch np (phn hng dn np chiptrang 16) v chn th Fuses.

    Chng ta s ln lt kho st cc Fuse bit theo nhm chc nng ca chng.

    1. JTAGEN (JTAG Enable):

    Trn AVR c tch hp sn b JTAG, l mt module giao tip vi phn cng ca chip. Nhn chung, JTAG thng c dng kim tra hotng ca chip. Trn AVR, JTAG c th c dng np chng trnh nhng

    ph bin hn l dng debug li chng trnh (g ri chng trnh). ModuleJTAG lm vic thng qua 4 chn TCK, TMS, TDO v TDI, trn chipATmega32 4 chn ln ln lt l PC2, PC3, PC4 v PC5. Theo mc nh JTAGc kch hot, bit JTAGEN=0 (programmed). V th vi cc chip ATmega32mi mua v, cc chn PC2:5 trn PORTC c th khng s dng xut nhpthng thng c. Nu bn khng mun s dng chc nng debug trc tip

    trn chip th hy uncheck bit JTAGEN (uncheck tng ng unprogrammed,tng ng JTAGEN=1) dng cc chn JTAG nh cc chn xut nhpthng thng.

    2. OCDEN (On Chip Debug Enable):Nh trnh by trn, AVR cho php chng ta g ri chng trnh

    trc tip trn chip thng qua module JTAG. Trong khi bit JTAGEN cho phpkch hot JTAG th bit OCDEN cho php thc hin debug trn chip (Ngha lcho d kch hot JTAG bn cha th dng chc nng debug nu cha kch

    hot OCDEN). Nu bn c mt mch Debug cho AVR nh mch JTAG ICEca Atmel (xem bi Debug vi JTAG ICE) v bn mun debug chng trnhth hy set bit OCDEN bng 0 (check vo OCDEN). Bn cn nh rng, khilp trnh cho bit OCDEN th AVR s hot ng trong mode debug, trong modeny chip s trong trng thi ng (Sleep mode), bn ch c th thc hindebug m khng th chy chng trnh tht. Theo mc nh, OCDEN khngc lp trnh v ch debug c v hiu ha. Li khuyn l bn nn bitny unprogrammed(uncheck) trc khi a chip vo s dng. (ng ng vo

    bit ny nu bn khng c nh debug trn chip).

    3. BODEN (Brown-OutDetection Enable) v BODLEVEL(BODLevel):

    AVR c sn mt mch in Brown-Out Detection, hiu n gin lmch pht hin s st in p ngun. Nu fuse BODEN c lp trnh thmch BOD c kch hot, khi fuse bit BODLEVEL chn mc in p caBOD (mc in p dng so snh st ngun). Nu BODLEVEL=1(unprogrammed) th mc in p BOD mc nh l 2.7V, ngc li nuBODLEVEL c lp trnh th mc in p BOD l 4.0V. Vi AVR Studio, tac th chn 1 cch trc quan bng tr s BODLEVEL v check(lp trnh) hocuncheck(khng lp trnh) BODEN. Khi cc fuse bit s t ng cp nht.

  • 8/8/2019 Lap Trinh Avr Voi c Www.eeelabs.org Chuong2

    4/7

    Lp trnh vi iu khin AVR vi ngn ng C WWW.EEELABS.ORG

    Trn Tha 2010 25

    Khi mch BOD c s dng, nu in p VCC gim xung thp hnmc in p BOD th 1 Reset BOD xy ra. Nu khng tht s cn thit hy cc bit ny khng c lp trnh nh mc nh. Hnh 2 m t mt s kin BOD

    trn AVR.

    Hnh 2. S kin BOD trn AVR.

    4. EESAVE (EEPROM Erase SAVE):Nu bit EESAVE c lp trnh (bng 0 hay check), th b nh

    EEPROM s khng b xa khi xa chip, ngc li EESAVE =1 (uncheck) thEEPROM s b xa theo chip.

    6. BOOT LOADER:y l mt tnh nng rt hay trn cc chip AVR mi (ch khng phi

    dng AVR no cng c Boot Loader), Boot Loader l phn b nh chngtrnh c kch hot u tin khi khi ng chip. Boot Loader trn cc chipAVR c b tr pha di ca b nh chng trnh (xem li trang 4). BootLoader thng c s dng ghi hoc c ni dung b nh chng trnh, vth ng dng ph bin nht ca n l cp nht (update) chng trnh cho chipmt mt cch nhanh chng m khng cn mch np.

    C ch nh sau:-Trc ht chng ta cn c 1 chng trnh Boot Loader c np sn

    trong phn b nh Boot Loader (pha di b nh chng trnh). Chng trnhny c kh nng giao tip vi my tnh (thng qua UART chng hn) v c,ghi b nh chng trnh ca chip.

    -Khi cn update chng trnh mi cho AVR, trn my tnh c 1 chngtrnh giao tip vi Boot Loader, kt ni AVR vi my tnh, chng trnh trnmy tnh s gi ni dung cn update cho AVR, chng trnh Boot Loader sc ni dung ny v ghi vo b nh chng trnh ca AVR. Bng cch ny

    chng ta np chng trnh cho AVR m khng cn dng mch np.

  • 8/8/2019 Lap Trinh Avr Voi c Www.eeelabs.org Chuong2

    5/7

    Lp trnh vi iu khin AVR vi ngn ng C WWW.EEELABS.ORG

    Trn Tha 2010 26

    Np chng trnh bng Boot Loader cho php khch hng ca bn tcp nht cc chc nng mi m khng cn trao chip cho bn. S dng haykhng s dng Boot Loader s c xc lp thng qua cc Fuse bitsBOOTRST, BOOTSZ1 v BOOTSZ0.

    BOOTRST (Select Reset Vector) : Nu Fuse bit BOOTRST khngc lp trnh (bng 1 - uncheck) th khi va khi ng chip, con tr chngtrnh s nhy n v tr u tin trong chng trnh (0x0000) ln lt thcthi phn chng trnh nh thng thng. Nu BOOTRST c lp trnh (bng0- check) th v tr Reset l a ch u ca phn Boot Loader, khng phi ach 0x0000 nh thng l. Khi phn chng trnh trong Boot Loader sc thc thi thay cho chng trnh chnh pha trn (xem hnh 3).

    BOOTSZ1 v BOOTSZ0 (Select Boot Size Chn kch thc choboot section):

    Kch thc phn b nh dnh cho Boot Loader khng c nh, nu BootLoader khng c kch hot (fuse BOOTRST=1) th ton b b nh chngtrnh dnh cho chng trnh chnh. Khi Boot Loader c kch hot, 2 Fuse

    bits BOOTSZ1 v BOOTSZ0 s quyt nh kch thc Boot Loader. Bng 3tm tt cc kch thc ca phn Boot Loader ph thuc vo 2 bit BOOTSZ1:0.Ch l kch thc tnh theo INSTRUCTION WORD, vi AVR 1INSTRUCTION WORD = 2 bytes. Phi nhc li i vi Fuse bits, gi tr 1ngha l khng c lp trnh (uncheck trong Avr Studio). Nu bit BOOTRSTkhng c lp trnh th 2 bit BOOTSZ khng c tc dng.

    RESET

    BOOTRST=1

    BOOTRST=0

  • 8/8/2019 Lap Trinh Avr Voi c Www.eeelabs.org Chuong2

    6/7

    Lp trnh vi iu khin AVR vi ngn ng C WWW.EEELABS.ORG

    Trn Tha 2010 27

    Bng 3. Kch thc Boot Loader.

    Khi dng AVR Studio, ta chn trc tip cc gi tr ny thng qua menus xung ca mc BOOTSZ

    V d: chn boot flash size l 2048

    Th 2 bit BOOTSZ1 v BOOTSZ0 l 00

    Trong cc ng dng lp trnh thng thng, Boot Loader khng cquan tm, v th ti khuyn bn nn cc Fuse bit BOOTRST, BOOTSZ1:0nh mc nh. Nu cc bn thi cng mch np USB AVR-Lab th s dng n

    BOOT LOADER khi , cc bn c th xem video cu hnh chip Atmega8 camch np trong bi vit ng trn www.eeelabs.org

    7. Chn Ngun Xung gi nhp v thi gian khi ng (start-up times):y l phn rt c quan tm khi set Fuse bits. C n 7 Fuse bits

    tham gia vo vic ny l 4 bits CKSEL3:0, 2 bit SUT1:0 v bit CKOPT.Trong , 2 bit SUT1:0 ch yu dng chn thi gian khi ng, phn nykhng nh hng nhiu trong hu ht cc trng hp (t nht l cc v d tiliu ny) v th ti s b qua (chn mc nh l 64ms). Nu start-up time thts nh hng n chng trnh ca bn, bn hy tham kho thm phn

    System Clock and Clock Option trong datasheet ca chip. Phn ny ti chyu trnh by cch chn ngun xung gi nhp cho chip.

    C tt c 5 loi ngun xung gi nhp chnh cho chip nhng n ginchng ta ch xt 2 trng hp l dng ngun thch anh ngoi v dng xung ginhp c to bi mch RC trong chip.

    Xung gi nhp trong chip (xung ni internal clock): Hu ht cc chipAVR mi sau ny c trang b 1 mch to xung gi nhp RC bn trong, nus dng ngun xung gi nhp ny chng ta c th b qua mch to xung bnngoi. Ngun xung gi nhp c to ra bn trong chip c c nh 1 trong

    4 mc : 1MHz, 2 MHz, 4 Mhz v 8 MHz. Cc Fuse bits CKSEL3:0 quyt nh

  • 8/8/2019 Lap Trinh Avr Voi c Www.eeelabs.org Chuong2

    7/7

    Lp trnh vi iu khin AVR vi ngn ng C WWW.EEELABS.ORG

    Trn Tha 2010 28

    vic chn ngun xung ny. Bng 4 tm tt cch phi hp cc Fuse bits CKSEL chn ngun xung ni.

    Bng 4. Chn xung gi nhp ni bng cc Fuse bits CKSEL.

    (Nomial frequency: tn s danh ngha, gi tr thc c th khc do sai s)

    i vi chip ATmega32, ngun xung ni 1MHz c set mc nh trn

    cc chip mi.Xung gi nhp t mch bn ngoi (External - Clock): dng xung ni c

    nhc im l tn s xung c gi c nh trong 4 mc v tn s cao nhtc th t l 8MHz trong khi AVR cho php lm vic 16Mhz, mt khc sai scng tng i ln khi xng xung ni. Do ta c th dng mch to xung bnngoi bng RC hoc l tng nht l thch anh ( xem li s trang 11).

    bo cho AVR bit l chng ta mun s dng thch anh ngoi lmmch to xung, hy set cc Fuse bits CKSEL3:0 thnh 1 trong 2 gi tr: 1111hoc 1010 (nh phn). Trong trng hp ny, Fuse bit CKOPT c tc dng

    chn gia 2 ch khuych i, ch CKOPT = 0 (programmed- check)thch hp vi thch anh c tn s ln nht l 16MHz v CKOPT=1(unprorgammed - uncheck) khi tn s thch anh nh hn hoc bng 8MHz.

    Vic chn thi gian khi ng, ngun xung nhp cho chip v ch khuch i thc hin d dng vi AVR Studio qua 2 mc :

    CKOPT : check hoc uncheck

    SUT_CKSEL : chn t menu s xung.

    Sau khi chn cc Fuse bits, vic cui cng v rt quan trng l ghicc Fuse bits ny vo chip bng cch nhn nt Program.

    i vi cc chng trnh np chip khc, Fuse bits set da trn vic checkhoc uncheck tng bit ca 2 byte LOW v HIGH v vy ta cn nm vng vicchn cc bit ny. i vi AVR Studio, sau khi cu hnh trn phn giao din, tac th xem 2 byte LOW v HIGH thc t pha di ca ca s :