13
Dr. Kónya László: PIC mikrokontrollerek alkalmazástechnikája 1 PIC mikrokontrollerek alkalmazástechnikája Bevezetés - a sorozat elé ... A következőkben a Rádiótechnika hasábjain egy több részes sorozatot indítunk, amelynek célja a korszerű elektronikai ismeretek megismerte-ése, azon területé, amely a mikrovezérlőkkel vagy más néven mikrokontrollerekkel foglakozik. A történetet jól ismerjük: az elektroncsövek után jöttek a félvezetők majd az ezekből felépülő integrált áramkörök. Az integráltsági fok növekedésével lehetővált egyre bonyolultabb áramkörök kialakítása, megjelent az egy lapkán kialakított számítógép központi egység: a mikroperocesszor. Ahhoz hogy egy teljes működő egységet, egy számítógépet kialakítsunk, az információfeldolgozás általános modellje szerint memóriára és be- kimeneti egységekre is szükség volt. Ezeket az egységeket külön lapkákon helyezték el, és ezek kapcsolatát nyomtatott áramköri huzalozásokkal oldották meg. Igy megjelent az egy NYÁK-lemezen felépített számítógép: a Single Board Computer. Az integráltsági fok további növekedése - ami még több tranzisztor egy lapkán való elhelyezését jelentette - két irányban való fejlődést eredményezett: egyrészt biztosította hogy a mikroprocesszor még összetetebb, többet tudó eszközzé alakuljon (Intel: 8080 -> 8085 ->8086 ->80286 - >80386 ->80486 ->Pentium ->P6), másrészt lehetővé vált hogy a központi egység (a processzor) mellé az eddig külön lapkán kialakított elemeket (memória, perifériák) is elhelyezzék. A gyártástechnológia lehetővé tette, hogy az áramkörökkel szembeni kivánságok: pl. kis fogyasztás, nagy sebesség is megvalósulhassanak. Az ilyen módon, egy tokban elhelyezett központi egységet, memóriát, ki-bemeneti egységeket és járulékos áramköröket tartalmazó rendszert hívjuk egytokos mikroszámítógépnek vagy más néven mikrokontrollernek (1. ábra). A Központi egység (CPU) feladata a Programtároló-ban tárolt utasítások végrehajtása, az utasítások végrehajtásához az Aritmetikai logikai egység (ALU) - t használja fel a számításokhoz. A Vezérlő egység felelős az egyes részegységek jeleinek ütemezéséért. Az Óragenerátor szolgáltatja a rendszert működtetö órajelet. A Reset áramkör az egész rendszer alaphelyzetbe hozását végzi el - például tápfeszültségre kapcsoláskor. A mikrokontroller a perifériáin keresztül kapcsolódik a környezetéhez, azaz a külvilághoz. Az Utasítászámláló tartalma határozza meg, hogy a programtároló melyik regiszteréből olvassuk ki az utasítást tartalmazó kódot. A mikrokontrollerek felhasználása két tevékenységet igényel: meg kell tervezni a feladatnak eleget tevő áramkört, meg kell írni a kontroller által végrehajtandó programot, amivel az adott feladat megoldható. A lapot olvasók közül sokan talán most kezdik keresni azt a sarkot, ahova az újságot vághatják. Ugyanis az áramkörépítésen nevelkedettek -"a hardveresek" - sokszor nehezen képesek egy módszerében más, "szoftveres" tevékenységet alkalmazni, pedig a mikrokontrollerek esetében ez a két tevékenység szorosan összefonódik. Természetesen a programozás "művészet" is lehet, de bizonyos alapismeretek megtanulásával, előre megadott minták alkalmazásával, bárki képes mesterember szintjén a programozást megtanulni, és hatékonyan használni. Ezért kérem, hogy a sarkok méregetése helyett bízzanak magukban (meg a cikk írójában...) hogy túl fognak jutni ezeken a nehézségeken. A világon számos mikrokontroller típus található. A sorozat megmaradhatna egy általános megközelítés szintjén is, de ezen típusok között van egy olyan - az eladási adatok szerint dinamikusan fejlődő - típus, amely egyre népszerűbb. Ezt alacsony ára, nagy teljesítménye, rugalmassága, könnyű fejleszthetősége és a hozzá adott vagy könnyen hozzáférhető dokumentált alkalmazások nagy száma biztosítja. Nem elhanyagolható az tény sem, hogy hazánkban ez a típus könnyen hozzáférhető a ChipCAD Kft-nél. Ez a típus a Microchip cég által gyártott PIC család. ( Itt a PIC a Programmable IC = programozható IC rövidítése.) Család azért, mert több ága és tagja van, amelyek használatával az alkalmazások ár/teljesítmény viszonya a legkedvezőbbé tehető. A sorozat ezen típus alkalmazás technikáját kivánja bemutatni, sok - sok konkrét alkalmazáson keresztül. Az alkalmazástechnikai jellegből adódóan felhasználunk minden rendelkezésre álló információt az ismeretek megfelelő szintű közlésére. Mivel a sorozat szerzője egy főiskolán dolgozó oktató, ezért a sorozat irásánál igyekezett a didaktikai követelményeket is figyelembe venni, azaz az új ismereteket mindig a már megmagyarázottakra alapozni. A terjedelem szabta korlátok miatt ez természetesen csak korlátozott mértékben volt lehetséges, ezért folyamatosan utalunk azon irodalmakra amelyekben az ismertetett Programtároló Központi egység (CPU) Aritmetikai - logikai egység Vezérlő egység Adat tároló Óragenerátor Reset áramkör Időzítő/számláló egység Párhuzamos I/O 1. ábra: A mikrokontroller belső felépítése Soros I/O Egyéb (ALU) PERIFÉRIÁK Utasításszámláló Cimzés

KÓNYA_LÁSZLÓ_PIC_13oldal_picbev.pdf

Embed Size (px)

Citation preview

  • Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja 1

    PIC mikrokontrollerek alkalmazstechnikja

    Bevezets - a sorozat el ...

    A kvetkezkben a Rditechnika hasbjain egy tbb rszes sorozatot indtunk, amelynek clja a korszer elektronikai ismeretek megismerte-se, azon terlet, amely a mikrovezrlkkel vagy ms nven mikrokontrollerekkel foglakozik. A trtnetet jl ismerjk: az elektroncsvek utn jttek a flvezetk majd az ezekbl felpl integrlt ramkrk. Az integrltsgi fok nvekedsvel lehetv vlt egyre bonyolultabb ramkrk kialaktsa, megjelent az egy lapkn kialaktott szmtgp kzponti egysg: a mikroperocesszor. Ahhoz hogy egy teljes mkd egysget, egy szmtgpet kialaktsunk, az informcifeldolgozs ltalnos modellje szerint memrira s be- kimeneti egysgekre is szksg volt. Ezeket az egysgeket kln lapkkon helyeztk el, s ezek kapcsolatt nyomtatott ramkri huzalozsokkal oldottk meg. Igy megjelent az egy NYK-lemezen felptett szmtgp: a Single Board Computer. Az integrltsgi fok tovbbi nvekedse - ami mg tbb tranzisztor egy lapkn val elhelyezst jelentette - kt irnyban val fejldst eredmnyezett: egyrszt biztostotta hogy a mikroprocesszor mg sszetetebb, tbbet tud eszkzz alakuljon (Intel: 8080 -> 8085 ->8086 ->80286 ->80386 ->80486 ->Pentium ->P6), msrszt lehetv vlt hogy a kzponti egysg (a processzor) mell az eddig kln lapkn kialaktott elemeket (memria, perifrik) is elhelyezzk. A gyrtstechnolgia lehetv tette, hogy az ramkrkkel szembeni kivnsgok: pl. kis fogyaszts, nagy sebessg is megvalsulhassanak. Az ilyen mdon, egy tokban elhelyezett kzponti egysget, memrit, ki-bemeneti egysgeket s jrulkos ramkrket tartalmaz rendszert hvjuk egytokos mikroszmtgpnek vagy ms nven mikrokontrollernek (1. bra). A Kzponti egysg (CPU) feladata a Programtrol-ban trolt utastsok vgrehajtsa, az utastsok

    vgrehajtshoz az Aritmetikai logikai egysg (ALU) - t hasznlja fel

    a szmtsokhoz. A Vezrl egysg felels az egyes rszegysgek jeleinek temezsrt. Az ragenertor szolgltatja a rendszert mkdtet rajelet. A Reset ramkr az egsz rendszer alaphelyzetbe hozst vgzi el - pldul tpfeszltsgre kapcsolskor. A mikrokontroller a perifriin keresztl kapcsoldik a krnyezethez, azaz a klvilghoz. Az Utastszmll tartalma hatrozza meg, hogy a programtrol melyik regiszterbl olvassuk ki az utastst tartalmaz kdot. A mikrokontrollerek felhasznlsa kt tevkenysget ignyel:

    meg kell tervezni a feladatnak

    eleget tev ramkrt, meg kell rni a kontroller ltal

    vgrehajtand programot, amivel az adott feladat megoldhat.

    A lapot olvask kzl sokan taln most kezdik keresni azt a sarkot, ahova az jsgot vghatjk. Ugyanis az ramkrptsen nevelkedettek -"a hardveresek" - sokszor nehezen kpesek egy mdszerben ms, "szoftveres" tevkenysget alkalmazni, pedig a mikrokontrollerek esetben ez a kt tevkenysg szorosan sszefondik. Termszetesen a programozs "mvszet" is lehet, de bizonyos alapismeretek megtanulsval, elre megadott mintk alkalmazsval, brki kpes mesterember szintjn a programozst megtanulni, s hatkonyan hasznlni. Ezrt krem, hogy a sarkok mregetse helyett bzzanak magukban (meg a

    cikk rjban...) hogy tl fognak jutni ezeken a nehzsgeken.

    A vilgon szmos mikrokontroller tpus tallhat. A sorozat megmaradhatna egy ltalnos megkzelts szintjn is, de ezen tpusok kztt van egy olyan - az eladsi adatok szerint dinamikusan fejld - tpus, amely egyre npszerbb. Ezt alacsony ra, nagy teljestmnye, rugalmassga, knny fejleszthetsge s a hozz adott vagy knnyen hozzfrhet dokumentlt alkalmazsok nagy szma biztostja. Nem elhanyagolhat az tny sem, hogy haznkban ez a tpus knnyen hozzfrhet a ChipCAD Kft-nl. Ez a tpus a Microchip cg ltal gyrtott PIC csald. ( Itt a PIC a Programmable IC = programozhat IC rvidtse.) Csald azrt, mert tbb ga s tagja van, amelyek hasznlatval az alkalmazsok r/teljestmny viszonya a legkedvezbb tehet. A sorozat ezen tpus alkalmazs technikjt kivnja bemutatni, sok - sok konkrt alkalmazson keresztl. Az alkalmazstechnikai jellegbl addan felhasznlunk minden rendelkezsre ll informcit az ismeretek megfelel szint kzlsre. Mivel a sorozat szerzje egy fiskoln dolgoz oktat, ezrt a sorozat irsnl igyekezett a didaktikai kvetelmnyeket is figyelembe venni, azaz az j ismereteket mindig a mr megmagyarzottakra alapozni. A terjedelem szabta korltok miatt ez termszetesen csak korltozott mrtkben volt lehetsges, ezrt folyamatosan utalunk azon irodalmakra amelyekben az ismertetett

    Programtrol

    Kzponti egysg (CPU)

    Aritmetikai - logikai egysg

    Vezrl egysg

    Adat trol

    ragenertor

    Reset ramkr Idzt/szmll egysg

    Prhuzamos I/O

    1. bra: A mikrokontroller bels felptse

    Soros I/O

    Egyb

    (ALU)

    PERIFRIK

    Utastsszmll

    Cimzs

  • Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja 2

    informcik rszletesen megtallha-tk. Milyen ismereteket tteleztnk fel a sorozat megrsa sorn? Egy tlagos technikai mveltsget, a logikus gondolkods hasznlatt, alapvet ramkri ismereteket s a binris szmok ismerett. Termszetesen szksges nhny angol sz s kifejezs jelentsnek a megjegyzse is, de ezeket a zrjelbe tett magyar megfeleljkkel megmagyarzzuk. Az sorozatot gy kivnjuk kzreadni hogy a rszeknek legyen egy olyan ve, fokozatosan nehezl foka, ami az olvaskat is inspirlja a kvetkez szm keressre, elolvassra. Ez utn a kiss hosszra sikeredett, de fontos bevezet utn lssunk munkhoz.

    A PIC16/17

    mikrokontroller csald A PIC mikrokontroller csald gyrtja, a Microchip Technology Inc. cg kzpontja az USA Arizona llamban Chandler-ben tallhat, de a vilg szmos pontjn vannak rszlegei. A Mikrochip trtnet 1990-ben a General

    Instruments flvezet gyrainak privatizlsval, a PIC16C5X eszkzcsald piacra dobsval indult. Az elretrs soha nem ltott mrtk ebben az ipargban. Eladsa szinte hihetetlen 60-70%-kos mrtkben nvekszik folyamatosan minden vben messze az ipari tlag felett, aminek a kvetkeztben 1993-ra a 8. helyre lpett el. 1994-rl mg nincs rszletes adat, de az elzetes hirek szerint a Philips-et is sikerlt tavaly megelznie. Az idei vben az els 3 hely valamelyiknek a vromnyosa. Hogy megrtsk ezen sikeressgnek az okt, vizsgljuk meg, hogy a felhasznlk mit vrnak el egy mikrovezrltl: kis fogyasztsa legyen, gyors legyen: idegysg alatt sok

    utastst tudjon vgrehajtani, rugalmas, knnyen vltoztahat

    perifriakszlete legyen, klnbz alkalmazsokhoz az

    optimalizls miatt ms s ms csaldelemet lehessen vlasztani.

    egyszeren s gyorsan lehessen az alkalmazsokat fejleszteni, s ehhez szksges fejleszteszkzk ne legyenek tl drgk,

    a mikrokontrollerek ra is alacsony legyen, nagy szriknl ez mg kisebb legyen.

    A Microchip PIC16/17 kontrollerei a piacon elrhet nyolcbites eszkzk kztt az egyetlen, amely RISC felpts: azaz kevs szm utastst tartamaz utastskszlettel rendel-ezik. Az utastskszlet kdolst gy terveztk meg, hogy az utastsok mindegyike egyetlen program memria cmen eltrolhat legyen. A kvetkezmny: rendkvl gyors mkds (5

    milli utasts vgrehajtsa msodpercenknt 20MHz-es rajel esetn)

    a program memria rendkvl hatkony kihasznlsa

    A 2. brn az alaptpus, a PIC16C5X sorozat felptse lthat, amely alapja a csald tbbi, nagyobb teljestmny tagjnak is. sszehasonltva az 1. bra vzlatval az ott blokknt szerepl elemek mr kiss rszletesebben is lthatk s rviden sszefoglajuk a rszegysgek szerept.

    EPROMProgram Memory

    Program Counter

    Stack1Stack2

    Instruction Decode &

    Control

    Timing Generation W Reg

    ALU

    I/O Ports

    PortsA, B, C

    Direct Addr

    IndirectAddr

    RAMFile Registers

    Clock/Counter

    MCLR

    OSC1OSC2

    Data Bus

    Program Bus

    RAM Addr

    RTCC

    Watchdog Timer

    Power on Reset

    Oscillator Start-up Timer

    STATUS Reg

    Mux

    FSRAddr MuxInstruction Reg

    PIC16C5X Architektra: Harvard Architektra

    2. bra

  • Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja 3

    Az els fontos megjegyzs, hogy a kontroller n. Harvard architektrj: ez azt jelenti, hogy a programmemria (Program Memory) s az adatmemria (RAM File Registers) elklnl egymstl. (A PC-ben pldul ez nem gy van: ott az operatv memria mind a vgrehajtand program utastsait, s az adatokat is tartalmazza. Ezt hvjk kigondolja, Neumann Jnos utn von Neumann architektrnak.) Milyen elnnyel jr ez a felpts? Ez azrt kedvez, mert az adatszavak hossza (8 bit) nem kell hogy megegyezzen az utastsszavak hosszval (itt ez 12 bit szles). Ez a dnts teszi lehetv, hogy a legtbb utasts csak 1 szbl lljon. Ugyanis sok utasts vgrehajtshoz operandusokra is szksg van. Az egyszersg kedvrt az egyik operandus mindig egy kitntett, az akkumultornak nevezett regiszter (az brn ez a W regiszter), mg a msik egy, a RAM-ban szerepl regiszter. Az utasts vgrehajtshoz ennek a cmt is ismerni kell. Az egyik megolds, hogy az utasts nem egy szbl ll, s ekkor a msodik sz tartalmazza ezt a cmet. Ez nem elnys, mert kevesebb utastst tud a CPU vgrehajtani idegysg alatt. A msik megolds az, hogy az utastst tartalmaz sz kt rszbl ll:

    UTASTS SZ

    UTASTS KD 2. OPERANDUS CME

    az egyik rsze hatrozza meg (kdolja) a vgrehajtand tevkenysget, mg a msik rsz tartalmazza a msodik operandus cmt: Ezzel a megoldssal a legtbb utasts mindssze egy trolhelyet foglal el a programmemriban. Termszetesen minl hosszabb az utastssz, annl hosszabb lehet az utastskd rsz (= tbb fajta utasts) s hosszabb lehet az operanduscm rsz is (= nagyobb kzvetlenl cmezhet memriaterlet.) Ezrt a nvekv teljestmny PIC vezrlkhz nvekv utastssz hossz is tartozik (12, 14, illetve 16 bit). Mivel a cmet tartalmaz rsz rgztett, ezrt a megadhat cmtartomny is

    rgztett. Pl. 8 bites cmrsszel csupn 256 fle cm kpezhet. Ha ennl nagyobb terjedelm memrit kivnunk cmezni, akkor az n. "lapozsos" technikt alkalmazzuk: a tnyleges cm tovbbi bitjeit egy kln trolban a lapregiszterben troljuk. A lapregiszter tartalma hatrozza meg hogy tnylegesen a memria melyik lapjt hasznljuk. Ezzel a megoldssal elvileg tetszleges nagysg memriarsz cmezhet, de van egy kis szpsghibja: lap tlpsekor a lapregiszter tartalmt is mdostani kell. A PIC kontrollerek mind az adat- mind a program memria cmzsnl alkalmazzk ezt a lapozsi technikt.

    Program-memria

    A kzponti egysg a vgrehajtand utastskdokat a program memribl olvassa ki. Ez a tr a klnfle ignyek miatt klnbz tpus: ROM, EPROM, EEPROM s OTP lehet. Mit is jelentenek ezek a rvidtsek ?

    ROM memria: ennek tartalmt a

    gyrts sorn rjk bele a memriba. Ez - mivel nagy darabszm esetn a legolcsbb memriamegolds - akkor elnys, ha nagy mennyisgben akarjuk az adott felprogramozott PIC vezrlt felhasznlni. Termszetesen ilyenkor a gyrthoz el kell juttatni a ROM-ba rand pontos tartalmat, s ez rjk be a gyrtstechnolgia adott fzisban a ROM-ba.

    EPROM memria: ez a

    memriatpus olyan, hogy a felhasznl kpes ennek tartalmt

    berni, azaz programozni, majd j tartalom bersa eltt ultraibolya fnnyel (pl. kvarclmpa) trlni (kinapoztatni). Ennek a tpusnak az az elnye, hogy a programfejleszt egyszeren tudja programjt a PIC EPROM-jba rva kiprblni, mdostani.

    EEPROM memria: hasonl az

    EPROM memrihoz, de itt a trls a kinapozs helyett elektromos jelekkel trtnik, gy programfejlesztshez az ilyen tpus memria mg elnysebb.

    OTP memria: az elbbiekben

    mr megllaptottuk, hogy a legolcsbb memriatpus a ROM. Ennek hasznlata azonban ignyli a chipgyrtval val szoros kontaktust. J lenne olyan memria, amely olcs, a felhasznl ltal egyszer programozhat, de nem kell ezt a programozst a gyrtnl elvgeztetni. A megolds : az OTP (nem takarkpnztr!) memria, (OTP = One Time Programming (egyszer progra-mozhat) amely az elbb lert kvetelmnyeknek eleget tesz.

    A PIC kontrollerek esetben mindegyik kialakts ltezik, amely nagyon kltsgkml megoldst biztost. Az EPROM, EEPROM, s OTP tpusok programozsa nagyon egyszer: a Microchip a programozsra kt megoldst ajnl: a gyorsabb prhuzamos, s az egyszerbb soros mdszert. Soros programozsnl a program memriba

    Soros programozs

    PIC16CXX

    MCLR/VPP

    VDD VDD

    VPP

    VSS VSS

    RB6 Clock

    RB7Data/in/out

    Command in

    Csak 2 lb kell a programozshoz

    RB6 az rajel bemenet

    RB7 az adat be/ki- vagy a parancs bemenet

    Parancsok:- Load data (adatrs)- Read data (adatolvass)- Begin programming (programozs indul)- End programming (programozs vge)- Increment address (memriacm nvelse)

    3. bra

  • Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja 4

    kerl szavakat bitenknt rjuk kt vezetk felhasznlsval (adatvonal s az rajel). A programozshoz a Vdd tpfeszltgnl nagyobb feszltsg (Vpp) szksges. A programozs iddiagrammjt a gyrt a mikrokontrollerek adatlapjn kzli, s a rendszerfejlesztsekhez hasznlt programozk ltalban ezt hasznl-jk.

    Adatmemria A programok vgrehajtsa sorn adatokkal mveleteket vgznk. Az adatokat tartalmaz regisztereket - amelyek a RAM memrit alkotjk - a gyors elrs rdekben clszer a kzponti egysg szmra elrhet mdon kialaktani. A PIC mikrovezrlk esetben ez a File Registers nven szerepl RAM terlet, amelynek nhny fontos tulajdonsga van: Brmelyik regiszter lehet az ALU

    ltal vgzett mveletek egyik operandusa.

    Az itt lv regisztereknek kt fajtjuk van: vannak specilis adatokat tartalmaz, rgztett cm regiszterek, amelyek fontos szerepet jtszanak a kontroller mkdsben s programoz-sban, valamint vannak ltalnos cl regiszterek, amelyek tetszleges adatok trolsra hasznlhatk.

    Ezen utbb emltett regiszterek-ben troldnak a kontrollerben lv perifrik programozshoz s adatkezelshez szksges regiszterek.

    rajel megoldsok

    Egy digitlis rendszer a legtbb esetben mkdshez rajelet ignyel, amit egy oszcilltor ramkr llt el.

    PIC kontrollerek esetn klnfle rajelmegoldsok kzl vlaszthatunk: a megolds frekvenciatabilitsa s felhasznlt alkatrsz ra alapjn: LP- Low Power Crystal (kisfogyaszts kvarc) XT- Kvarc/kermia rezontor HS- Nagyfrekvencij kvarc/kermia rezontor RC- ellenlls - kondenztor Minden PIC mikrovezrln van kt kivezets: az OSC1 s OSC2 elnevezs, amelyekre kell ktni az alkalmazni kivnt rajel elllt alkatrszeket: A tokban egy bels konfigurcis bitprral kell megadni, hogy milyen tpus rajel kialaktst hasznlunk.

    RESET ramkr Digitlis rendszerek bekapcsolsakor szksges egy jl definilt alaphelyzet belltsra, mert csak ez biztostja a rendszer helyes mkdst. Ez a RESET folyamat. A tpfeszltsg bekapcsolskor emelkedik a tpfeszltsg s az oszcilltor is mkdni kezd. Nyilvnval, ha tl

    lassan nvekszik a tpfeszltsg, vagy az oszcilltor frekvencija lassan stabilizldik, a RESET folyamat helytelenl jtszdhat le. Ez egy kontrolleres rendszer megbzhatsgt

    nagy mrtkben cskkenti, mert esetleg a rendszert tbbszr ki be kell kapcsolgatni. Ezt elkerlend a PIC-ekben tp-eszltsg bekapcsolsa utn egy specilis folyamat jtszdik le: Bekapcsolskor a tpfeszltsg emelkedik. Amikor egy adott szintet elr, egy bels, tokon belli oszcilltorrl mkd szmll ramkr elindul (a neve DEVICE RESET TIMER vagy POWER UP TIMER) s tipikusan TPWRT=18 msec ideig mg fenntartja a tok RESET llapott. Ez id alatt kpes a tokot mkdtet kls oszcilltoros rajelgenrtor elindulni s frekvencijt stbilzlni. s ha ez id alatt mgsem stabilizldik a kls oszcilltor? Akkor baj van. Ezrt az jabb PIC tpusoknl (16CXX, 17CXX) a RESET folyamatot mg egy egy jabb ksleltetst biztost idzt megnyjta: ez az OSC START UP TIMER . A PIC kontrollereknl egy kln lb (a neve: MCLR) alacsony, majd magas szintre lltsval is elidzhet brmikor egy RESET. Ha erre nincs igny (ami az alkalmazsok tbbsgnl igaz), akkor

    a fentiek miatt ez a lb egyszeren a tpfeszltsgre kthet, s a tpfeszltsg tokra kapcsolsa RESET-eli a mikrokontrollert. Mindezeket a 6. brn foglaltuk ssze.

    A Watch Dog Timer (WDT)

    A mikrokontroller folyamatosan mkdse sorn egy ciklikusan ismtld utasts sorozatot hajt vgre. Egyik utasts jn a msik utn, s abban az esetben ha valamilyen kls ok miatt (ramkri zavar) az utasts tvesen kerl beolvassra, ez a ciklikussg megsznik, s a fut program "eltrl", s nem tr vissza a

    PICOSC1

    OSC2

    LP, XT, HS rajel kialakts

    PICOSC1

    OSC2

    Utp

    RC rajel kialakts

    PICOSC1

    OSC2

    Kls rajel hasznlata

    fosc/4

    Kls rajel

    rajel generls PIC kontrollereknl

    5. bra

    Indirect Addr 00hRTCC

    PCStatusFSR

    PortAPortBPortC

    W regiszter

    ALU

    ltalnosan felhasznlhat regiszterek

    (24-72)(RAM)

    Idzt/szmll regiszterUtastsszmllProgram sttusz regiszter

    A portB portC port (ha van)

    Indirekt cmre hivatkozsnl hasznlt

    Indirekt cmet tartalmaz

    (File registers)

    4. bra

  • Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja 5

    ciklusba. Mi a megolds az ilyen problmk megoldsra? A watch dog, sz szerint fordtva: rakutya. Maga a kifejezs onnan szrmazik, hogy amerikban az jjelirknek a nyakukban lg kulccsal az rztt objektum klnbz pontjain pl. rnknt lejr rkat kell jra s jra felhzni. Ha nem hzza fel idben, az ra lejr, s jelzi a mulasztst. A watch dog ramkr is gy mkdik: egy nllan mkd szmllt a ciklikus

    programban elhelyezett utastssal (CLRWDT) trlni kell. Ha ez nem trtnik meg akkor a szmll lejr s ez RESET folyamatot indt el, ami a kontrollert jra elindtja, vagyis a program csak a szmll (neve: watch-dog timer) lejrtig "kszlhat". Mivel nem minden esetben van szksg a WDT hasznlatra, ezrt egy bels konfigurcis bit programozsval engedlyezhetjk, vagy tilthatjuk a mkdst. A kontroller perifria egysgei

    A kontroller a klvilggal kapcsolatban ll adatok alapjn mkdik, s az eredmny is oda kell hogy kerljn. ltalnosan egy perifrilis egysg a mkdse sorn ngy tpus jelet hasznl: bemen adatok - ezek jnnek a

    klvilg fell a perifria egysgbe, kimen adatok - ezek mennek a

    klvilg fella perifria egysgbl, vezrl jelek - ezekkel trtnik a

    perifria mkdsmdjnak s tnyleges mkdsnek vezrlse,

    sttusz jelek - ezeket a jeleket a perifria adja az aktulis llapotrl.

    Termszetesen adott perifria esetn ezen jelek brmelyike hinyozhat.

    A kvetkezkben rviden sszefoglaljuk a PIC kontrollerekben alkalmazott legfontosabb perifria egysgeket, nhnyrl majd a konkrt alkalmazsok ismertetsekor ejtnk nhny szt. Ktllapot ki-bemeneti egysgek - ms nven digitlis I/O portok: Mivel a kontroller binris adatokkal dolgozik, a legkzenfekvbb, ha a klvilggal val kapcsolat is ilyen ktllpot jelekkel valsul meg. Mivel csak egy konkrt alkalmazs esetn tudjuk mr pontosan, hogy hny be-

    illetve kimenetre van szksg, ezrt a PIC-ek esetn az I/O vonalak mindegyike akr bemenet, akr kimenet lehet, s ezt a programfutskor lltjuk be. Ezen I/O vonalaknak a RAM - ban lv regiszterek felelnek meg: az irnyregiszterek bitjeibe rt 0-k jelzik, hogy a hozztartoz vonal kimenet, 1-esek pedig az adott I/O vonalat bemenetre programozzk. Az adatregiszterek hordozzk az adatokat. A PIC kontrollerek esetn a kimenetek terhelhetsge nagy: kpesek kzvetlenl LED-eket meghajtani. Idzt/szmll egysg (RTCC): (8. bra) Nagyon sok feladatnl van szksg idztsre illetve impulzusok szmllsra. Ezt egy kzs - egyszerre csak egyik mdon hasznlhat egysg valstja meg: egy szmll ramkr: a lptet jel forrsa vagy kls impulzus (szmlls) vagy a bels rajel (idzts) lehet. Egy eloszt alkalmazsval bvthetjk az egysg "mrsi tartomnyt". A szmll rtke mindig a RAM RTCC regiszterben tallhat, ami rhat vagy olvashat. Az ELOSZT - feladata a rugalmasabb alkalmazhatsg megvalstsa, amelynek osztsviszonya szintn programozhat. A legegyszerbb kialakts PIC16C5X vezrlk esetn ms perifrit a kontroller nem tartalmaz. A PIC vezrlk fejlettebb vltozatai egyb perifrikat is tartalmaznak: rviden felsorolva: A/D talakt: a bemeneti analg jelet alaktja t digitlis adatt, PWM talakt: egy regiszterben lv binris rtktl fgg a kimenetn megjelen ngyszgjel 1 ill. 0 szintjnek arnya, Capture regiszter: egy kls jel megjelensekor a bels szmll rtke ebbe a regiszterbe rdik,

    PIC

    Mkds

    VDD

    MCLR

    Tpfesz (VDD)

    MCLR

    Power-upTimer

    OSC Start-upTimer

    TOST

    TPWRT

    Reset

    6. bra

    Kls impulzusbemenet

    Bels rajel

    8 bites szmll 8 bites szmll

    ELOSZT RTCC Tlcsorduls

    8. bra

    Bels RC oszcilltor 8 bites szmll

    "CLRWDT"

    Trls Tlcsordulstokresetelse

    Oszt

    7. bra

  • Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja 6

    troldik, s onnan kiolvahat, Compare regiszter: ebbe a regiszterbe rt rtkkel trtnik a bels szmll rtknek sszehasonltsa. Jelzst ad a kt rtk egyezse esetn. Soros perifria: soros adattvitelt megvalst egysg Egyb perifrik: ezekrl majd az alkalmazsoknl esik sz.

    Megszaktsok: Ha egy kontrollerrel valamilyen esemny ltrejttt kivnjuk rzkelni, ezt szoksos mdon ktflekppen tehetjk meg. Az els mdszernl a kls esemnyek ltrejttt egy bemenet llapotnak figyelsvel rzkelhetjk. Pldul ilyen megolds alkalmazhat, mikor egy billentyzetrl akarunk beolvasni. Brmelyik billenty megnyomsakor a billentyzet kimenetn lv "adat rvenyes" jel szintet vlt. Ha ezt egy bemeneti portra ktjk, akkor az llapotnak a programbl val figyelse lehetv teszi a billenty megnyomsnak az rzkelst, majd a kd beolvasst. Ezt a mdszert ltalnosan elterjedt kifejezssel "polling"-nak hvjk. Alkalmazsa azonban lelasstja a rendszer tnyleges mkdsi sebessgt, hiszen a mikrokontroller idejnek egy rszt azzal tlti, hogy ciklikusan megvizsglja a kijellt bemeneti bit llapott. Sokkal szerencssebb, ha az esemny maga jelzi a processzor szmra llapotnak megvltozst. Ez a megolds a megszakts vagy ismert angol kifejezssel az interrupt (e.: interrapt). (Szoktk IT-nek rvidteni). A megszakts megszaktja az utastsok sorozatnak (a program) vgrehajtst, s a processzor egy gynevezett megszaktsi alprogramot hajt vgre, ami az esemny kezelst elvgzi, majd ennek befejeztvel a processzor visszatr a megszaktott program vgrehajtsra. Az elbbi pldnal maradva, a billenty megnyomst jelz "adat rvnyes" jel megszaktst okoz, a megszaktsi alprogram elvgzi a lenyomott billentyhz tartoz kd

    beolvasst, majd utna folytatdik a megszaktott program. A processzor oldalrl a megszaktsi lehetsg kialaktsa azt kivnja meg, hogy legyen olyan bemenete, ami llapota megvltozsakor kpes a processzor mkdst felfggeszteni, a megszaktott program programszmlljnak az rtkt elmenteni, s helybe a megszaktsi alprogram kezdcmt betlteni, majd az alprogramot elindtani. A vgrehajts befejeztvel (amit ltalban az utolsnak elhelyezett, specilis utasts jelez) a program szmllba a megszaktott program program szmlljnak elmentett rtke tltdik vissza, s a megszaktott program folytatdik. Az a hely, ahov a programszmll rtkt elmentjk, az a verem. Ha a processzor tbb megszaktsi vonallal rendelkezik, ezek mindegyikhez egy-egy esemnyt rendelhetnk hozz. Ilyen felfogsban a processzort alaphelyzetbe llt RESET jel is egy megszakts: megszaktja a fut programot, a programszmllba egy kezdeti rtket (ltalban nullt) tlt, s elindtja a program futst. A megszaktsok prioritsai Olyan rendszerekben, ahol tbb esemny okozhat megszaktst, megtrtnhet, hogy egyszerre egy idben kt megszakts is fellp. Ilyen esetben a megszaktsok kiszolglsnak fontossgi sorrendje - a prioritsa - dnti el a kiszolglsi sorrendet. A program futsa nem minden esetben szakthat meg kros kvetkezmnyek nlkl. Ezrt a legtbb rendszer biztostja, hogy a megszaktsok programbl tilthatk, illetve engedlyezhetk legyenek. Ha egy rendszerben csak egy megszakts van, akkor a tilts s engedlyezs egy-egy utastssal lehetsges. Tbb megszakts esetn n. megszakts maszkot hasznlnak. Ez nyolc megszakts esetn azt jelenti, hogy egy bjt nyolc bitjhez az egyes megszaktsokat rendeljk hozz, s ha a bit rtke nulla, akkor a hozztartoz megszakts tiltott, klnben engedlyezett. Igy a bjttal "maszkoljuk" a megszaktsokat.

    Megjegyzs: a tokok programozsa sorn egy norml mdon el nem elrhet memriarekeszbe rjuk be nhny bellthat hardver tulajdonsgot definil biteket. Ezek: !" az oszcilltor tpusa, !" WDT engedlyezse, !" Power-up timer engedlyezse, !" kiolvashatsg tiltsa.

    "A csaldi fot"

    Azt hiszem az eddigiek alapjn vgl bemutathatjuk a PIC csaldot: a kvetkez tblzat ezt foglalja ssze, s remnyeink szerint a tblzat dnt rsze mr rthet. Jl lthat, hogy egy adott feladathoz mindig kivlaszthat a megfelel tpus. A kvetkez, 9. brn a csald nhny elemnek tokbektst mutatjuk be. A lbak hrom csoportra oszthatk: Tpfeszltsg: VSS, VDD, Mkdtets: OSC1,OSC2, MCLR, - I/O kivezetsek: RA, RB, RC portok. 16C5X csald: az elsnek forgalomba hozott legkisebb teljestmny modell. Csak I/O vonalakat s szmll/idzt ramkrt tartalmaz perifriaknt, megszaktsi lehetsge nincs. A programutastssz 12 bit hosszsg. Az utastsszmll 9 bites, amivel 512 szavas memria cmezhet, de tovbbi klnll kt cmbit felhasznlval maximum 2K-s memria hasznlhat. 16CXX csald: fejlettebb tpus. A perifrivlasztka b, megszaktsi lehetsgei vannak. A programutastssz 14 bit hosszsg. Az utastsszmll 12 bites, amivel 4k-s memria cmezhet. 17CXX csald: a legnagyobb teljestmny modell. A programutastssz 16 bit hosszsg. Az utastsszmllja is 16 bites, amivel 64k szavas memria cmezhet. Nhny megjegyzs: A CMOS gyrtstechnolgia s a

    gondos tervezs kvetkeztben kimagaslan jk az eszkzcsaldok fogyasztsi adatai.

  • Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja 7

    Az eszkzket a felhasznlk programozzk, az olcs, egyszer programozhat tipusok kis s kzepes szrik esetben is gazdasgos megoldst jelentenek.

    Sokfle tipus kzl a felhasznlk ki tudjk kivlasztani a feladatuk megoldsra legelnysebb, leggazdasgosabb megoldst.

    2. A PIC mikrovezrlk

    utastskszlete A csald jellemzit sszefoglal tblzatbl is lthat a RISC felpts fontos jellemzje, a viszonylag kevs utasts (33, 35, illetve 55). A kvetkez tblzat a 16C5X, 16CXX tpusok utastskszlett foglalja ssze, csoportostva. Az utastsoknl meghagytuk az eredeti angol szveget,

    mivel az utastsok rvid neve (ms nven: mnemonikja) ezekbl szrmazik. Az utastsok rszletes ismertetse a [1,2,3] irodalmakban megtallhat. sszefoglalsul hrom megjegyzs: 1. Lthat hogy az alapvet logikai s

    aritmetikai utastsokat a kszlet tartalmazza.

    2. Kt operandust ignyl mveleteknl az egyik a W regiszter, a msik a RAM egy tetszleges regisztere, s az eredmny helye is meghatrozhat az utasts kdjban szerepl "d" bittel.

    3. A bitmveletek vezrlsi feladatok knny elvgzsre teszik a vezrlket alkalmass.

    Aki ismeri ms mikrovezrl tpusok

    programozst, megrti, hogy ez a szokatlan, az Intel tpusoktl eltr mnemonikj s felpts utastskszlet nem tallt lelkes fogadtatsra a felhasznlk krben. Ez a kezdetekben a PIC mikrovezrlk elterjedsnek komoly gtja is volt. Ezt felismerve, egy msik amerikai cg a Parallax egy j, megszokott mnemonikj s mkds utastsokat tartalmaz kszletet definilt. Ez az utastskszlet a npszer MCS-51 utastskszlethez hasonlt. Ezt a jellsmdot hasznl program menemonikjai elszr lefordtdnak az utastst megvalst egy vagy tbb PIC utastsra, amelybl a futtathat kd mr elllthat. lyen mdon programjainkat kt - az eredeti Microsim s az MCS51-szer Parallax - jellsmddal is megrhatjuk, de a Parallax megoldsa

    17C4216C7116C8416C55/5716C54/56VDD 1RC0 2RC1 3RC2 4RC3 5RC4 6RC5 7RC6 8RC7 9VSS 10RB0/CAP1 11RB1/CAP2 12RB2/PWM1 13RB3/PWM2 14RB4/TCLK12 15RB5/TCLK3 16RB6 17RB7 18OSC1 19OSC2/CLKOUT 20 RA5/TX/CK 21

    RA4/RX/DT 22RA3 23RA2 24

    RA1/RT 25RA0/INT 26TEST 27

    RE2/WR 28RE1/OE 29

    RE0/ALE 30VSS 31

    MCLR/VPP 32RD7 33RD6 34RD5 35RD4 36RD3 37RD2 38RD1 39RD0 40

    U3

    MCLR 4

    OSC1 16

    OSC2 15

    RA0RA1RA2RA3

    RB0RB1RB2RB3RB4RB5RB6RB7

    RA4

    U1

    MCLR 4

    OSC1 16

    OSC2 15

    RA0RA1RA2RA3

    RB0RB1RB2RB3RB4RB5RB6RB7

    RA4

    7

    171812

    6

    8910111213

    3

    U2RTCC 1

    VDD 2

    NC 3

    VSS 4

    NC 5

    RA0 6

    RA1 7

    RA2 8

    RA3 9

    RB0 10

    RB1 11

    RB2 12

    RB3 13

    RB4 14 RB5 15RB6 16RB7 17

    C0 18C1 19C2 20C3 21C4 22C5 23C6 24C7 25

    OSC 2 26OSC 1 27

    MCLR 28U5

    RA2 1

    RA3 2

    RTCC 3

    MCLR 4

    VSS (GND) 5

    RBO 6

    RB1 7

    RB2 8

    RB3 9 1011121314151617

    RB4RB5RB6RB7VDD

    OSC2/CLKOUTOSC1

    RA0RA1 18

    U4

    PIC 16/17CXX CSALD

    7

    171812

    6

    8910111213

    3

    VSS - 5. LB, VSS - 14 LB

    9. bra

    TIPUSOK PIC16C5X PIC16CXX PIC17CXXUtasts-

    hossz (bit): 12 14 16Jellemzk 54 54A R54 55 56 57 57A 58A 61 64 71 74 84 42SEBESSG 20 20 20 20 20 20 20 20 20 20 20 20 10 20

    EPROM 512 512 512 1K 2K 2K 1K 2K 1K 4K 2KROM 512 2K

    EEPROM 1KRAM 25 25 25 25 25 72 72 72 36 128 36 192 36 232

    EEPROM 64IDZTK 1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 1+WDT 3+WDT 1+WDT 3+WDT 1+WDT 4+WDT

    CAPTURE/COM-PARE/PWM 1 2 2

    SOROS PORT SPI/I2C SCIPRHUZAMOS SLAVE PORT IGEN IGEN

    8 bites A/D 4 8MEGSZAKT-

    SOK 3 8 4 12 4 11I/O vonalak 12 12 12 20 12 20 20 12 13 33 13 33 13 33Tpfesz (V) 2.5-6.2 2.5-6.2 2.0-6.2 2.5-6.2 2.5-6.2 2.5-6.2 2.5-6.2 2.5-6.2 3.0-6.0 2.5-6.0 3.0-6.0 3.0-6.0 2.0-6.0 4.5-5.5

    Utastsszm 33 33 33 33 33 33 33 33 35 35 35 35 35 55

  • Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja 8

    akr "kevert" mdon megrt programot is megenged. A pldk ismertetse sorn mindkt jellsmdot hasznlni fogjuk.

    Parallax-fle utastskszlet

    ADD fr,#lit ADD fr1,fr2 ADD fr,W ADD W,fr ADDB* fr,bit AND fr,#lit AND fr1,fr2 AND fr,W AND W,#lit AND W,fr CALL addr8 CJA fr,#lit,addr9 CJA fr1,fr2,addr9 CJAE fr,#lit,addr9 CJAE fr1,fr2,addr9 CJB fr,#lit,addr9 CJB fr1,fr2,addr9 CJBE fr,#lit,addr9 CJBE fr1,fr2,addr9 \CJE fr,#lit,addr9 CJE fr1,fr2,addr9 CJNE fr,#lit,addr9 CJNE fr1,fr2,addr9 CLC CLR fr CLR W CLR WDT CLRB bit CLZ CSA fr,#lit CSA fr1,fr2 CSAE fr,#lit CSAE fr1,fr2 CSB fr,#lit CSB fr1,fr2 CSBE fr,#lit CSBE fr1,fr2 CSE fr,#lit CSE fr1,fr2 CSNE fr,#lit CSNE fr1,fr2 DEC fr DECSZ fr DJNZ fr,addr9 IJNZ fr,addr9 INC fr INCSZ fr JB bit,addr9 JC addr9 JMP addr9 JMP PC+W JMP W JNB bit,addr9 JNC addr9 JNZ addr9 JZ addr9 LCALL* addrll LJMP* addrll LSET* addrll MOV fr,#lit MOV fr1,fr2 MOV fr,W MOV OPTION,#lit MOV OPTION,fr MOV OPTION,W MOV !port fr,#lit MOV !port fr,fr MOV !port fr,W MOV W,#lit MOV W,fr MOV W,/fr MOV W,fr-W MOV W,++fr MOV W,--fr MOV W,fr MOV W,fr MOVB bit1,bit2 MOVB bitl,/bit2 MOVSZ W,++fr MOVSZ W,--fr NEG* fr NOP NOT fr NOT W OR fr,#lit OR fr1,fr2 OR fr,W OR W,#lit OR W,fr RET RETW lit,1it,... RL fr RR fr SB bit SC SETB bit SKIP SLEEP SNB bit SNC SNZ STC STZ SUB fr,#lit SUB fr1,fr2 SUB fr,W SUBB* fr,bit SWAP fr SZ TEST fr XOR fr,#lit XOR fr1,fr2 XOR fr,W XOR W,#lit XOR W,fr Jellsek: fr - file regiszter, #lit - konstans, W - w regiszter, addr8 - 8 bites cm, (Aki ismeri a 51-es utastskszletet, annak nagyon szembetn a hasonlsg.)

    PIC16CXX Utastskszlet - sszefoglalByte-Oriented Operation - bjtos utastsok

    No Operation NOP -Move W to f MOVWF fClear W CLRW -Clear f CLRF fSubtract W from f SUBWF f,dDecrement f DECF f,dInclusive OR W and f IORWF f,dAND W and f ANDWF f,dExclusive OR W and f XORWF f,dAdd W and f ADDWF f,dMove f MOVF f,dComplement f COMF f,dIncrement f INCF f,dDecrement f, skip if zero DECFSZ f,dRotate right f RRF f,dRotate left f RLF f,dSwap halves f SWAPF f,dIncrement f, skip if zero INCFSZ f,d

    Bit-Oriented Operations - bit utastsok

    Bit clear f BCF f,bBit set f BSF f,bBit test f, skip if clear BTFSC f,bBit test f, skip if set BTFSS f,b

    Literal and Control Operations

    Go into standby mode SLEEP -Clear Watchdog Timer CLRWDT -Return, place Literal in W RETLW kReturn from interrupt RETFIE -Return RETURN -Call Subroutine CALL kGo to address (k is 9 bit) GOTO kMove Literal to W MOVLW kInclusive OR Literal and W IORLW kAdd Literal to W ADDLW kSubtract Literal from W SUBLW kAND Literal W ANDLW kExclusive OR Literal W XORLW k

    Jellsek:: f = a RAM (file) regiszter cmed = a mvelet eredmnye hova kerl; 0 = W regiszter, 1 = RAM (file) regiszter

    Megjegyzs: A szrkvel jellt utastsok a 16CXX tpusok "j" utastsai a PIC16C5X tpushoz kpes

    Konstanskezel s vezrl utastsok

    k = egy 8 bites fix rtk (konstans) vagy egy utastsra mutat cm (ez hoszabb mint 8 bit!)

  • Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja 9

    3. Alkalmazsok fejlesztsnek lpsei

    A cikksorozat eddigi rszeiben sszefoglaltuk azokat az alapvet hardver ismereteket, amelyekre alapozva hozzfoghatunk kisebb, PIC mikrokontrolleres rendszerek fejlesztshez. A mikrokontrolleres rendszerek fejlesztsvel kapcsolatos alapvet nehzsg abban van, hogy egy ilyen feladat megoldsa ketts tevkenysget ignyel: egyrszt meg kell tervezni s

    megvalstani a mkd ramkrt--a hardvert,

    msrszt meg kell rni a mkdtet s az adott feladatot akialaktott hardverrel megvalst programot--a szoftvert.

    Mivel ez a kt tevkenysg szorosan kapcsoldik egymshoz, ezrt a fejlesztnek mindkt tmakrben alapvet ismeretekkel kell rendelkeznie. A mikrokontrollert tartalmaz rendszerek ltrehozsakor a kvetkez lpseket kell elvgeznnk: A feladat megfogalmazsa. ramkri tervezs. A mkdtet program meg-

    tervezse. Kdols. Programvizsglat (tesztels),

    hibakeress Dokumentls.

    Egy mkd berendezs megvals-tsnl mindegyik lpsnek nagy jelentsge van. A kdols--ami a program megrst jelenti--csupn egy, s nem is mindig a legfontosabb lps. A feladat megfogalmazsa A mikrokrontrollerrel megoldand feladatok szmos tny s krlmny pontos rgztst ignylik. Fontos annak az alapvet krdsnek a tisztzsa, hogy valban szksges-e mikroprocesszoros rendszer alkalmazsa. BEMENETEK DEFINILSA Elszr a rendszer bemeneteit kell

    definilni: fel kell sorolni s jellemezni, hogy a feladat megoldshoz milyen bemenetek kellenek: Milyen a bemen jelek formja,

    idbeli viselkedse? Mi jelzi a bemen jel aktv

    llapott? Milyen hossz ideig aktv a

    bemen jel? Milyen gyakran (gyorsan) vltozik

    a bemen jel, kpes-e a program a bemen jel vltozst kvetni?

    A bemenjel kapcsolatban van-e ms bemen vagy kimen jelekkel?

    KIMENETEK DEFINILSA Ehhez hasonl krdseket kell megvlaszolni a rendszer kimeneteinek definilsakor is. A kvetkez lps a FELDOLGOZ RSZ DEFINILSA. Ez az a programrsz, ami a bemen jelekbl s adatokbl ellltja a kimen jeleket s adatokat: Mi az alapvet algoritmus, ami a

    bemenetek alapjn megadja a kimeneti jeleket,

    Milyen idkorltok vannak? Milyen gyorsan kell a feldolgozst vgrehajtani?

    Milyen memriaterlet korl-tozsok vannak? Van-e valami korlt a programot tartalmaz memriarsz, vagy az adatokat tartalmaz memria-rszre vonatkozlag?

    Milyen szabvnyos (esetleg mr meglv) programrszleteket, szubrutinokat hasznlhatunk fel?

    Milyen specilis esetek vannak, a program hogyan kezeli ezeket?

    Az eredmnyeknek milyen pontosnak kell lennik?

    Hogyan tudja a feldolgozs sorn fellp hibkat a program kezelni?

    HIBAKEZELS Nagyon fontos a program mkdse sorn fellp hibk feldertse s megfelel mdon trtn kezelse.A hibakezelssel kapcsolatban a kvetkez szempontokat kell figyelembe venni: Milyen hibk lehetsgesek?

    Melyik hibk a legvalszinbbek? (Ha emberi beavatkozs is van, az emberi hibk a leggyakoribbak.)

    Milyen hibk maradhatnak rejtve egy ideig a rendszerben?

    A rendszer hogyan tudja a hibt a legkevesebb kvetkezmnnyel elhrtani?

    AZ EMBERI TNYEZ Sok mikroprocesszor alap rendszer emberi kzremkdssel dolgozik. Az ilyen rendszerek tervezsekor ezt a

    tnyt fokozottan figyelembe kell venni, mivel alapvet minsgi jellemz az ember-gp kapcsolat, az n. "humn interfsz" megfelel kialaktsa. A legfontosabb szempontok: Milyen beviteli mdszer,

    beavatkozs a legtermszetesebb a kezel szmra?

    Milyen megjelentsi, visszajelzsi mdszert a legclszerbb alkalmazni (vizulis, akusztikus, mechanikus jezsek)?

    A kezel hogyan kap jelzst a rendszer hibs mkdsrl?

    Melyek a kezel ltal elkvetett

    A RENDSZERTERV ELKSZTSE

    RENDSZERFEJLESZTS

    A KVETELMNYEK ALAPJN

    A HARDVER KIALAKITSA

    . .

    PROGRAMTERVEZSKDOLS

    A PROGRAM MEGIRSA(EDITOR)

    A PROGRAM FORDITSA(ASSEMBLER)

    RSZEK KIPROBLSA

    (SZIMULTOR)

    A GPI KD PROGRAM TVITELE A FEJLESZTEND RENDSZERBE

    KIPRBLS, TESZTELSHIBAKERESS

    VGE

    A RENDSZERFEJLESZTS BLOKKVZLATA

  • Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja 10

    legvalsznbb hibk? A kezel beavatkozsra adott

    rendszervlaszok egyrtelmek? A kijelzsi kp a kezel szmra

    knnyen olvashat s rthet? A fentiekben lert krdsek tisztzsa utn ltrejn a konkrt tervezs alapjul szolgl rendszerterv, ami alapjn elkezdhet a rendszer hardverjnek a megtervezse. ramkri tervezs Mivel a legtbb alkalmazsban a PIC mikrokontrollernl csupn az rajel ellltshoz kell kls alkatrsz, ezrt az ramkri tervezs a klvilghoz kapcsold perifriaramkrkre korltozdik. A megvlaszoland krdsek: Mennyi adat/program memria

    szksges (tpusvlaszts!), hny be/kimeneti ramkrt kell

    hasznlni (tpusvlaszts!), milyen egyb kiegszt ramkrk

    szksgesek az adott feladat megoldshoz. Lpsei:

    A hardver megtervezse, a

    kapcsolsi rajz elksztse, a rajz alapjn a nyomtatott

    ramkri lemez elksztse, az alkatrszek beltetse a lemezre, a ksz hardver bemrse, az

    egyes funkcik helyessgnek ellenrzse.

    Nagyon sok alkalmazsnl elegend "csupalyuk" krtyn kzzel sszehuzalozni az ramkrket. A mkdtet program megtervezse. Soroljuk fel a programtervezsnl hasznlt legfontosabb alapelveket: Kis lpsekben trtn halads, s

    fejleszts. A nagyobb rszfeladatokat, kis,

    egymstl logikailag elklnl modulokbl kell felpteni, mivel ezek nllan tesztelhetk s esetleges megvltoztatsuk nem ignyli a teljes rendszer jratervezst.

    A feladatnak megfelel

    programvezrls lehetleg egyms

    utni, egyenknt vgrehajthat rszekbl lljon, s ne ide-oda ugrsokbl, ttekinthetetlen program hurkokbl, ciklusokbl. Ez a hibakeresst is segti.

    Minl tbb grafikus, vizulis leirs alkalmazsa (a folyamatbra mdszernek ez az elnye).

    Egyszer s vilgos megfogalma-zsok, fogalmak hasznlata.

    Olyan algoritmusok felhasz-nlsa, amelyek ismertek s tbbszrsen kiprbltak.

    A programtervezskor figyelembe kell venni azt, hogy melyek azok a tnyezk, paramterek, amelyek megvltozhatnak.

    Programtervezs teljes befejezse utn szabad csak a kdolst elkezdeni.

    Kdols. A kdols sorn a feladat s a ksztett programterv alapjn megrjuk programot. AZ ASSEMBLY PROGRAMOZS ALAPJAI Minden szmtgp, brmilyen bonyolult programot is hajtson vgre, vgs soron a binris szmokat utasitsknt rtelmezve vgzi el a mveleteket a szintn binris formj adatokon. Ez teljesen nyilvnval, mivel a gpben csak binris 1 s 0 alak informci feldolgozsa lehetsges. Az ilyen 0, 1 szmok formjban elll programot neveznk gpi kd programnak. A gpi kdon trtn programozs azonban az ember szmra rendkvl nehzkes, mivel meg kell tanulni a klnbz utastsoknak megfelel binris, oktlis vagy hexadecimlis szmrendszerbeli szmokat (utastskdok), s ki kell szmtani a programban szerepl cmek abszolt, vagy relatv rtkeit. A gpi kdu programozs ezen nehzsgei az assembly (esszembli) szinten trtn programozssal kszblhetk ki. Az assembly nyelv tulajdonkppen a legegyszerbb programozsi nyelv. Ez a nyelv lehetv teszi, hogy azokat az utastskdokat, amelyeket a gpi

    kdban szmmal adtunk meg, knnyen megjegyezhet nevekkel rjuk le. Ezeket a kdneveket - melyek az utasts ltal vgrehajtott funkci megnevezsnek rvidtsei - mnemonikoknak nevezzk (mnemo-nik=emlkeztet). Az assembly nyelv lehetv teszi azt is, hogy a program egyes belpsi pontjaira, trol rekeszeire, bjtokra, szavakra (1 sz=2 egymst kvet bjt), valamint a regiszterekre ugyancsak nevekkel hivatkozzunk. Ezen neveket szimblumoknak hvjuk. A szimblumokat kt csoportba osztjuk. Az egyik csoportba tartoznak az utasts s direktva mnemonikok (ld. ksbb!), valamint a regiszterek nevei. Ezek az un. lland szimblumok, vagyis ezeket tnevezni, vagy j neveket adni nem lehet. A msik csoportba tartoznak a belpsi pontok nevei (cimkk), s az egyes trolrekeszek nevei. Ezek az un. felhasznli szimblumok. Ezek nem rgztettek, a felhasznl maga dnti el, hogy az ltala hasznlt szimblumokat hogyan nevezi el. Azzal, hogy a klnbz belpsi pontok s rekeszek nevekkel lthatk el, lehetsg nylik arra, hogy a felhasznl (programoz) a program ksztsekor megszabaduljon a gpi kdu programozsnl szksges cmszmtstl. Ezzel a gpi kd programozs fent emltett kt htrnyt kikszbltk. Nem kell az utastsokhoz tartaz szmrtkeket memorizlni, s nem kell a programban cmeket szmolni. Ezeket a teendket a programoz vllrl egy specilis program, egy un. "fordt program" veszi t. Ennek a programnak a feladata, hogy "megrtse", s gpi kdu programra lefordtsa az ltalunk megrt szimblikus programot. Az assembly nyelv esetben ezt a fordt programot assemblernek (esszemblernek) hvjuk. Az eredeti angol sz sszelltt (assembly=sszelltani) jelent, ami jl tkrzi az assembler feladatt: a gpi kdu program sszeszerkesztst, ssszelltst a forrsprogram alapjn. Forrsprogramnak nevezzk az ltalunk szveges formban megrt, szimblumokat tartalmaz programot. Az assembler teht megrti s gpi kdok sorozatv -- un. trgy

  • Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja 11

    programm -- alaktja t a forrsprogramot. Az assembler az alapvet feladatainak elltsn tl, klnbz knyelmi szolgltatsokat is nyjthat. Ezen szolgltatsok vezrlst vgz utastsokat nevezzk direktvknak. A direktva teht nem fordthat le, nincs gpi kdja, a direktva csak a fordts idejre aktv, csak a fordtprogramnak "szl". Ilyen szolgltats pldul: a fordts sorn keletkez lista formtumnak meghatrozsa, elre elksztett programrszek automatikus beszerkesztse a forrsprogramba, trolhely foglalsa, PIC tipusnak, konfigurcijnak megadsa stb.

    Az assembly nyelv szintaktikja Mint minden nyelvnek, gy az assembly nyelvnek is van egy nyelvtani formai szablyrendszere, un. szintaktikja. Ezen szintaktika elemei rviden sszefoglalva a kvetkezk: A forrsprogram utastssorok vges sorozata. Az utasts sor ltalban maximum 64 vagy 80 karaktert tartalmaz, CR (carriage-return) karakterrel befejezett sor (a PC-nl ilyenkor tnk ENTER-t). Az utastssor ngy mezbl llhat, melyben az utasts egyes rszei kapnak helyet. A mezk az albbi sorrendben kvethetik egymst: CM UM OM ;MM (CM = CMKEMEZ UM = UTASTSMEZ OM = OPERANDUSMEZ MM = MEGJEGYZSMEZ) Egy utastssorban nem ktelez mindegyik mezt kitlteni, de egyes kombincik (pl. operandusmez utastsmez nlkl) tiltottak. Az egyes mezk rtelmezse a kvetkez: CIMKEMEZ: be rjuk azokat a neveket (cmeket), melyekkel a program vezrlesi struktrjban lnyeges pontokat (pl. szubrutin belpsi pont, ciklusmag kezdpont, stb.) meg akarjuk jellni. Az assembler a fordts (assemblls) sorn a cimkhez a mgtte ll utasts kezdcmnek rtkt rendeli. Minden egyes, ezen cimkre val hivatkozs, az utasts cmmezejbe a cimkhez

    rendelt rtket tlti be. Az UTASTSMEZ -ben nemcsak az utastsok nevei (mnemonikok) szerepelhetnek, hanem itt tallhatk a direktvk nevei is. A leggyakrabban hasznlt direktvk: ORG fordtsi cm megadsa (a

    memriba hova kerljn a program)

    DEFB 1 bjt definilsa DEFS trterlet definilsa DEFW 2 bjtos sz definilsa DEFM szveg definilsa EQU szimblumnak rtkads END program vge Az OPERANDUSMEZ-ben kell megadni az utastsmezben szerepl utasts vagy direktva operandusait. Az operandusmezben 0, 1 vagy 2 operandus llhat. Kt operandus esetn, azok egymstl val elvlasztsra vesszt kell hasznlni. Az operandusmezben a kvetkez elemek (melyek kifejezseket is alkothatnak) szerepelhetnek: konstans (rtke lehet decimlis,

    hexadecimlis, oktlis vagy binris, melyet a szmot kvet H,O, vagy B- betk jellnek. Ha a hexadecimlis szm A-F karakterrel kezddik, akkor a bevezet nulla hasznlata ktelez pl. 0DH).

    szvegkonstans (ltalban idzjelek, vagy aposztrofok kz rt karaktersorozat).

    szimblum (ktelezen betvel kezdd, max. 6 vagy 8 alfanumerikus karakterbl ll nv (lsd cimke)).

    regiszternv (A kontroller bels regisztereinek szimblikus elnevezsei.

    felttelkdnv (A processzor bitek szimblikus elnevezsei.

    mveleti jelek: +, -, *, /, logikai S, logikai VAGY

    specilis jelek: $ a helyszmlal aktulis rtknek jellse, () az rtk indirekt rtelmezsnek jellse

    MEGJEGYZS MEZ-be sajt megjegyzsnket, magyarz szvegnket helyezhetjk el. A

    megjegyzs mez kezdett a pontosvessz ";" karakter jelzi s a sorvge "CR" karakterig tart. Az utastssorokban a mezk kttt vagy szabad formban kvethetik egymst. Kttt mezformtum esetn az egyes mezknek elrt pozcikon (tabultor pozcik) kell kezddnik, mg szabad mezformtumnl a mezk vgt specilis elvlaszt karakter (kettspont, szkz, pontosvessz) jelzi. A PIC assemblerben hasznlt utastsok mnemonikjt, s magukat az utastsok mkdst majd a pldknl ismertetjk.

    Feltteles assemblls, makrk Fejlettebb assemblerek tovbbi kt olyan tulajdonsggal rendelkeznek, amelyek az assemblerben programozk munkjt segtik s teszik egyszerbb. A feltteles assemblls azt jelenti, hogy a forrsprogram bizonyos rszei egy, az assemblls sorn fennll feltteltl fggen a trgyprogramban benne lesznek, vagy nem. Ez a lehetsg pldul akkor lehet hasznos, ha ugyanazt az assembler programot ms hardver krnyezetben akarunk futtatni. A feltteles assemblls szoksos formja: IF FELTTEL (A FELTTEL IGAZ VOLTA ESETN BEFORDTAND PROGRAMRSZ) ENDIF Az assembler programozs sorn igen gyakran elfordul, hogy ugyanazt az utastssorozatot tbbszr hasznljuk a programunkban. Az un. makrk alkalmazsval elkerlhet ilyen utastssorozatok ismtelt leirsa, mivel a makrk lehetv teszik azt, hogy egy utasitssorozathoz egy nevet rendeljnk, s a tovbbiakban erre a sorozatra a hozzrendelt nvvel hivatkozzunk. A programunk elejn definiljuk a makrt, ltalban a kvetkez mdon: MAC1: MACRO ; MAC1 A MAKR NEVE .....

  • Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja 12

    IDE JN AZ UTASITS SOROZAT ..... ENDM ; EZ A MAC1 MAKRDEFINICI LEZR UTASTSA Ezek utn a programban mindazokon a helyeken ahol a fenti utasitssorozatot akarjuk hasznlni, csupn azt kell lerni, hogy: MAC1 . A makrk a szubrutinoktl alapveten klnbznek, mert minden rjuk trtn hivatkozs alkalmval a definilt utasitssorozat tnylegesen bepl a gpi kdu trgyprogramba. Ezt a lehetsget biztost assemblereket makr-assemblereknek nevezzk. PIC-ekhez a Parallax cg (PASM) s a Microchip (MPASM) is ad assemblereket, szabad szoftverknt!

    A programfejlesztst tmogat eszkzk

    Kt nagyon fontos krdsrl az eddigiekben nem beszltnk. Nevezetesen arrl, hogy egyrszt milyen mdon hozzuk ltre a forrsnyelvi programot, msrszt milyen lehetsgeink vannak a megrt program helyes mkdsnek ellenrzsre. A forrsnyelvi program megirst egy specilis programmal, az un. szvegszerkeszt (text editor) programmal vgezzk el, mg a program helyes mkdst a PIC-eknl szimultorral ellenrizhetjk. A szvegszerkeszt program feladata, hogy segtsgvel a felhasznl szvegfjlokat hozhasson ltre, illetve a mr meglv szvegfjlokat mdosthassa. Szvegfjloknak nevezzk azokat az adathalmazokat, amelyek karaktereket tartalmaznak, ezek pldul megjelenthetk a szmtgp kpernyjn, vagy nyomtatn kinomtathatk. Az editoroknak igen nagy jelentsge van a szmtstechnikban: brmely programnyelven megrt programot (pl. BASIC, PASCAL, FORTH, stb.) "szveg"-knt, karakteres formban visszk be a szmtgpbe, (ez a forrsnyelvi program) azaz az ember-gp kapcsolat megvalstsnak a legfontosabb eszkze.

    Programvizsglat (tesztels), hibakeress

    A programokban val hibk feldertse s kikszblse a programozknak egyik leggyakrabban vgzett tevkenysge, mert a programokban hibk vannak (az igen rvid programoktl eltekintve). Mivel a program a valsgban nagy sebessggel fut, ezrt meg kell tallni azokat a lehetsgeket hogy a futst ellenrizni tudjuk. Ennek a kvetkez kt gyakran hasznlt megoldsa a kvetkez: Lpsenknti programvgrehajts (single-step) Ilyenkor a mikropro-cesszor az utastsokat egyenknt, egyms utn hajtja vgre, egy jelre mindig csak egyet. Ilyenkor minden lps utn ellenrizni tudjuk a programunk mkdst. Trspont A trspont, vagyis a programfuts adott pontban trtn felfggesztse, igen sok feltteltl fgghet. Milyen felttelek adhatk meg? adott cm (a cmvonalak adott

    llapota), bizonyos adat (az adatvonalak

    adott llapota), adott vezrlvonalkombincik, az elzek kombincii. Ezeket a megoldsokat ltalban a program mkdst utnz szoftver szimultorban valstjk meg. A szoftver szimultor egy szmtgpen fut, ltalban valamilyen magas szint nyelven megrt program, ami az eredeti mikrokontroller minden utastst szimullja, figyeli a regiszterek, jelzbitek, memriahelyek tartalmt, azok vltozst. Ez termszetesen paprral s ceruzval is megtehet, de nagyon fradtsgosan. Egy ilyen szimultor legfontosabb tulaj-donsgai: Trspont elhelyezse a

    legklnflbb felttelek teljesl-stl fggen.

    Regiszterek s memria listzsa. Nyomkvet kpessg, ami egy

    regiszter vagy memriahely tartalmt rja ki, ha azt a program hasznlja.

    A regiszterekbe tetszleges rtk tlthet s onnan folytathat a program futsa.

    Pldaknt a 11. brn a PIC-ekhez a Parallax cg ltal kifejlesztett PSIM szimultor kpernykpt mutatjuk be: A Microchip hasonl termknek neve: MPSIM.

    Dokumentls A programozk tbbsge igazn nem tekinti fontosnak sajt munkjnak dokumentlst. Az igaz hogy ez vdelmet s nyjthat az illetktelen kivncsiskodk ellen, de sajnos munkastluss is vlhat, s idvel ez a programoz sajt s kollginak a munkjt is megnehezti. A programfejleszts egyik legfontosabb rsze a pontos, a programot jl ler dokumentci. A dokumentcinak a programfejleszts egsz folyamatt vgig kell kisrnie, a programhasznlatot s a program tovbbfejlesztst is tmogatnia kell. Egy rosszul dokumentlt programot nagyon nehz karbantartani, hasznlni, vagy tovbbfejleszteni. Azrt, hogy egy program jl dokumentlt legyen, a kvetkez tancsokat clszer megfogadni: A program vilgos, egyszer

    felpts legyen, minl kevesebb vezrlstadst (ugrst) tartalmazzon.

    Olyan azonostkat, cimkket s neveket hasznljunk, ami jl tkrzi funkcijukat.

    Kerljk a betszavakat, mert nem mindenki szmra nyilvnval a rvidts (pl. SBR=soros bemeneti rutin).

    Az elbbiekben rviden sszefoglal-tuk azokat a legfontosabb ismereteket ami alapjn az alkalmazsok mindenki szmra rthetv vllnak. Az alkalmazsokat bemutatsa eltt sszefoglaljuk, hogy milyen eszkzkre van szksg a PIC eszkzkkel trtn fejlesztshez: A legfontosabb, s elengedhetetlen: a

  • Dr. Knya Lszl: PIC mikrokontrollerek alkalmazstechnikja 13

    programoz eszkz, amely egy IBM PC kompatibilis gpre kapcsoldik (286-os is j!). A fejlesztst csak jra programozhat (EPROM-os, vagy EEPROM-os) PIC tokkal rdemes vgezni. Kisebb tokoknl a legelnysebb a PIC16C84 tpus hasznlata: ez mintegy ezerszer jraprogramozhat, s a trlse igen gyorsan elektromosan, kls eszkz nlkl (pl. kvarclmpa) lehetsges. Termszetesen a fejleszts vgeredmnyt olcsbb tokokba lehet rni. Pldul, ha nem hasznljuk a tok bels EEPROM adatregisztereit, akkor kitn vlaszts az egyszer programozhat 16C61-es tpus. A programfejlesztshez szksg van egy PC-n fut szvegszerkesztre, assemblerrre (Parallax: PASM, Microchip: MPASM, s egy szimultor programra Parallax: PSIM, Microchip: MPLAB). Ezen szoftverek mindegyike kln trts nlkl megszerezhet s hasznlhat!

    PIC 16C84 Simulator v2.09 HEX BINARY 0 1 2 3 4 5 6 7 8 9 A B C D E F STACK 1 0000 0000000000000 0 00 00 00 18 00 1F FF 00 00 00 00 00 00 00 00 00 STACK 2 0000 0000000000000 1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 OPTION FF 11111111 2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 W 00 00000000 8 00 FF 00 18 00 1F FF 00 00 00 00 00 00 00 00 00 RTCC 00 00000000 9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 PC 0000 0000000000000 LATCH PIN TRI-STATE STATUS 18 00011000 PORT A 1F 00011111 00 00000000 1F 00011111 FSR 00 00000000 PORT B FF 11111111 00 00000000 FF 11111111 INTCON 00 00000000 MCLR RTCC IRP RP1 PR0 TO PD Z DC C WD CYCLES TIME XTAL 1 0 0 0 0 1 1 0 0 0 0.0180 00000000 0.0000000 4mhz

    000 mov !ra, #00000000b ;inicializalas 001 002 mov !rb, #0 ;kimenet 003 004 inc rb 005 mov szaml,#0ffh F1-HELP F2-BRKPT F3-CLEAR F4-HERE F5-TIME F6-GO F7-STEP F8-NEXT F9-RUN F10-RST

    Trspont Lpsenknt

    bellts programvgrehajts

    10. bra

    Szvegszerkesztvelforrskd megrsa

    PARALLAX

    A fordts eredmnye

    Assemblls

    *.SRC

    MICROCHIP

    *.ASM *.ASM PASM MPASM

    *.OBJ - programoznakPIC16Cxx Programmer

    TrueFlight

    *.LST - szimultornakPSIM programClearview ICE

    *.OBJ - szimultornakMPSIM programPICMASTER ICE

    *.HEX - programoznak

    PRO MATE Programmer

    INHX8M formban INHX16 formban

    BELS RAM (FILE REGISTERS)

    FONTOS REGISZTEREK

    KLN IS STTUSZBITEK

    Forrsprogram

    IO portok llapota