Choď na obsah Choď na menu
 

Viac o PIC

http://forum.mcontrollers.com/viewtopic.php?t=1997

 

Kapitola 1: Strucny prehlad PIC 

Microchip vyraba niekolko stoviek roznych typov mikrokontrolerov (MCU) a pre cloveka, ktory sa na toto mnozstvo typov pozera prvy krat, nemusi byt jednoduche zorientovat sa v tom. 
Vsetko sa da zacat rozdelovat od internej sirky datoveho slova na MCU 8-bitove (A), 16-bitove(B) a 32-bitove(C). 

(A)Mnozina 8-bitovych PIC sa da rozdelit do troch zakladnych skupin - Baseline (A1), Midrange (A2), rozsirene Midrange (A3) a Enhanced (A4). Vsetky tieto MCU su Harvardskeho typu [1], teda bitova sirka datovej zbernice je ina ako sirka jedneho slova programovej pamati. 
(A1) Baseline 8-bitove PIC su priamym pozostatkom originalneho PIC1650 z konca sedemdesiatych rokov [2], koncipovaneho ako programovatelna periferia pre vykonnejsie CPU. Architekturou je velmi jednoduchy, nema prerusovaci system, ma hardwarovy stack obmedzeny na dve urovne vnorenia a instrukcny subor obsahujuci 33 istrukcii. Pamat progamu mava typicky stovky az niekolko tisic slov, datova pamat (RAM) ma typicky desiatky bajtov, z periferii to byva zvycajne jeden citac/casovac pripadne AD prevodnik, vypocetny vykon je obmedzeny na 5 MIPS, ale vzhladom k obmedzenu instrkucnemu suboru, malemu hardwarovemu stack-u a chybajucemu systemu preruseni bude pouzitie tejto podskupiny 8-bitovych MCU pomerne obmedzene na jednoduche riadiace ucely. Su programovatelne v aplikacii (ICSP - In Circuit Serial Programming). Typickym predstavitelom tejto rodiny je PIC16F5x (F54, F57, F59), co je FLASH verzia starych OTP PIC16C5x, dalej PIC10Fxxx, PIC12F5xx, PIC16F5xx. Cena tychto MCU zacina na hodnote cca 0,3USD v produkcnych mnozstvach. 
(A2) Midrange 8-bitove PIC vznikli ako vylepsenie (A1). Boli pridane dve instrukcie, ale predovsetkym pridany system prerusenia a hardwarovy stack bol zvacseny na osem urovni. Ine zasadne zmeny v architekture nenastali, co implikuje napriklad obmedzenie pristupu do RAM na sedembitovu adresu, co by znamenalo, ze sa priamo nemoze oslovit viac ako 128 bajtov RAM. Toto sa riesi tzv. bankovanim (strankovanim), kedy je RAM rozdelena na dve alebo styri banky, ktorych selekcia sa vykonava prislusnymi bitmi (RP0 a RP1 v registri STATUS). Tymto sa da rozsirit mnozstvo oslovitelnej RAM, ale jej mnozstvo sa zas zmensuje tym, ze niektore registre musia byt vo vsetkych bankach. Okrem toho to prinasa spomalenie pri vykonavani programu, pretoze prepinanie bank trva strojovy cas, ktory je pomerne vzacny, nakolko tieto MCU bezia do 20MHz, co implikuje vykon 5MIPS. Bankovanie, resp. strankovanie postihlo aj programovu pamat. Instrukcia goto, resp. call dokaze adresovat maximalne 12 bitov, co znamena ze skoky cez hranicu 2048 slov sa nemozu uskutocnovat priamo, ale pomocou nastavenia bitov v adresari PCLATH, ktory v tomto pripade sluzi ako zdroj vyssich adresovych bitov pre adresu skoku/volania. Maximalna velkost FLASH byva 8k slov, maximalna velkost RAM stovky bajtov, obsahuju aj EEPROM, desiatky az stovky bajtov. Midrange PIC su inak standardne vybavene periferiami, podla typu obsahuju UART, MSSP rozhranie (prepinatelne na SPI/ IIC master alebo slave), paralelny slave port, AD prevodnik, komparatory, LCD budic, interny oscilator (z vyroby presnost do 2%), dva az tri citace/casovace, PWM moduly, ICSP a mnohe typy podporuju aj ICD (In Circuit Debug - ladenie v aplikacii). Tieto MCU maju pri svojej pouzitelnosti pomerne maly prikon a hodia sa na low-power aplikacie, napriklad som urobil digitalny teplomer zobrazujuci udaj o teplote na LCD s odberom cca 2-3uA pri napajani z 3V zdroja. To znamena, ze teoreticky by ten teplomer napajany z dvoch AA clankov mal fungovat cca 100 rokov... 
Do tejto rodiny PIC patria vsetky typy PIC16, okrem tych ktore som spomenul v (A1). Cena tychto MCU zacina niekde pri hranici 0,55USD pre produkcne mnozstva. 
(A3) vznili ako vylepsenie (A2) so skusenostami z (A4) a zaplnaju priestor medzi (A2) a (A4). Vylepsenia sa tykaju predovsetkym "vyrovnania" RAM pamatoveho priestoru a taktovania do 32MHz. Su to vsetky typy PIC16F1xxx a PIC12F1xxx. Cena zacina pri cca 0,7USD. 
(A4) vznikli ako podstatne vylepsenie (A2), ale stale zachovavaju spatnu kompatibilitu s PIC16 na znacnej urovni. Sirka programoveho slova sa zvacsila na 16 bitov, aby mohli byt obsiahnute nove instrukcie, ktorych pocet sa zvacsil na 83. Bol pridany Extended instruction set, ktory pridaval nove instrukcie a adresovacie mody pre potreby lahsej integracie s C kompilatormi. Dalej, okrem instrukcie movff vsetky instrukcie adresuju 8-bitovy priestor, teda pamat je rozdelena do bank po 256 bajtov, prepinaju sa registrom BSR (a instrukciou movlb) plus jedna banka je tzv access bank, do ktorej sa da pristupovat bez ohladu na stav BSR. Velkost bank a ich umiestnenie prakticky znamenaju, ze sa da programovanie obist uplne bez bankovania (ja sam som ho pouzil iba jeden jediny raz aj to vo velmi specifickom pripade). Jadro je vybavene trojicou pointerov, ktore obsiahnu cely pamatovy priestor s moznostou inkrementacie a dekrementacie. Instrukcie, ktore pribudli oproti (A2) prinasaju moznost lahsieho pristupu do programovej pamate, lahsiu manipulaciu so 16-bitovymi cislami a viac moznosti podmienenych skokov. Vykon sa zvysil az na 16 MIPS (takt 64MHz), oscilator dostal PLL na nasobenie frekvencie oscilatora. Rozsirene boli aj moznosti periferii, resp. pribudli tie, ktore by v nizsich rodinach boli tazko aplikovatelne, napriklad USB rozhranie (moznost iba device modu), Ethernet (kompletny, s MAC a PHY) a CAN zbernica. Vsetky (A4) maju ICSP a prakticky vsetky aj ICD. Pamatova dotacia momentalne konci pri 128kB FLASH a 4kB RAM. Niektore typy maju moznost pripojenia externej programovej pamate s velkostou az do 2MB, pricom tato pamat moze byt FLASH alebo RAM, takze sa daju vytvarat aj samomodifikovatelne programy, resp. jednoduche operacne systemy. Do rodiny (A4) patria vsetky typy PIC18. Cena tychto obvodov zacina pri cca 1,2USD. 

(B) 16-bitove PIC su rozdelene do dvoch hlavnych skupin - MCU na vseobecne pouzitie (B1) a DSP (B2). 16-bitove PIC nemaju s 8-bitovymi prakticky nic spolocne, nie su kompatibilne na urovni zdrojovych kodov ani na binarnej urovni. Vsetky 16-bitove MCU podporuju ICSP a ICD. Vacsina z nich ma viacero ICSP/ICD parov (max. 3), co znamena, ze sa vyvojar moze rozhodnut pri navrhu dosky, ktory z nich pouzije. 
(B1) 16-bitove MCU na vseobecne pouzitie - su to dve rodiny, PIC24F a PIC24H. Lisia sa od seba tym, ze PIC24H umoznuje prevadzku s vykonom 40MIPS a PIC24F len 16MIPS, ale zas PIC24F ma podstatne nizsi prikon. V ostatnych vlastnostiach a vybaveni periferiami su prakticky identicke. Najdeme u nich vsetky bezne periferie, ako IIC, SPI, USART, CAN, PWM moduly, rychle 500ksps (500 tisic vzoriek za sekundu) AD prevodniky, LCD modul, USB OTG (moznost spravat sa ako device aj ako host). Velmi vyhodnym doplnkom periferii je aj PPS (Peripheral Pin Select), ktory umoznuje pripojit si mnohe periferie lubovolny PPS pin (byva ich cca polovica az dve tretiny zo vsetkych IO pinov), co velmi zjednodusuje routovanie plosnych spojov. Vykon 16, resp. 40 MIPS, spolu s vykonnym instrukcnym suborom a 16-bitovou sirkou datoveho slova prinasa oproti 8-bitovym MCU podstatne zvysenie vypocetneho vykonu. Napriklad assembler pre 8-bitove MCU bezi na 16MIPS PIC24 cca 10x rychlejsie ako na 10MIPS PIC18. Spolu s pamatovou dotaciou, ktora konci na 96kB RAM a 256kB FLASH z nich toto robi pomerne vykonneho kandidata na vseobecne aplikacie. V rodine PIC24 najdeme aj male obvody, s 14 alebo 20 pinmi a 4-16kB FLASH, 0,5-1,5kB RAM a skromnejsim vybavenim periferiami, ale cenou zacinajucou od 1,15USD. Ceny vacsich typov, s vacsou pamatovou dotaciou zacinaju na cca 2USD, napriklad typ PIC24FJ32GA002 - 32kB FLASH, 8kB RAM, 500ksps 10-bit ADC, 2xUART, 2xSPI, 2xIIC, 5xPWM, PPS. Zaujimavostou je napriklad typ PIC24FJxxGA104, ktory ponuka interny oscilator s typickou presnostou typicky +-0,25% v celom rozsahu teploty a napajacich napati. Tieto obvody su dostupne aj v puzdrach DIP. 
(B2) V kategorii DSP najdeme dve rodiny - dsPIC30 (B21) a dsPIC33 (B22). (B21)dsPIC30 je vyvojovo starsia vetva, nastartovana okolo roku 2001, preto sa o nej zmienim iba povrchne, pretoze dsPIC33F tuto rodinu nahradza prakticky bezo zvysku. dsPIC30 su male DSP, schopne pracovat s vykonom do 30MIPS a urcene su na jednoduchsie DSP aplikacie, ako riadenie spinanych zdrojov, rozoznavanie reci alebo real-time spracovanie zvuku. Ich pamatova dotacia konci pri 144kB FLASH a 8kB RAM. Su vyrabane starsim vyrobnym procesom, co realne prinasa vacsiu spotrebu (az 10x viac) a vyssiu cenu v porovnani s (B22). Ich cena zacina na urovni zhruba 2,3USD 
(B22) dsPIC33F ponukaju to iste ako (B21), ale s nizsou cenou (od 1,9USD), s nizsim prikonom a vyssim vykonom - do 40 MIPS. Najdeme tu typy s 256kB FLASH a 32kB RAM, vybavenie periferiami je podobne ako u (B1), ale pribudli periferie ako DAC, rychlejsie ADC - az do 4Msps (4 miliony vzoriek za sekundu). 

(C) 32-bitove PIC32 od Microchipu su zalozene na jadre MIPS4K a su relativne novym produktom Microchipu (rok 2007). 
Su dizajnovane vzhladom na lahky prechod z PIC24 a dsPIC33 (takmer identicke rozlozenie pinov, velmi podobne periferie), ale ponukaju vacsie moznosti - predovsetkym vyssi vykon. Vykon PIC32 je porovnatelny alebo vyssi nez u konkurencnych ARM Cortex M3, napriklad STM32 alebo LPC2xxx (o Cortex M0 ani nehovoriac - tam je konkurentom skor PIC24 rodina) [3], okrem toho maju aj vacsiu pamatovu dotaciu ako podstatna vacsina ARM Cortex M3 MCU momentalne (december 2010) dostupnych na trhu - az 128kB RAM a 512kB FLASH. Okrem toho sa da predpokladat, ze vyvojari v Microchipe posledne tri roky nespali a pripravuju nove MCU. 
NA PIC32 dalej najdeme vela periferii, napriklad 6xUSART, 4xIIC, 3xSPI, USB OTG, CAN, Ethernet (MAC; PHY sa musi doplnit externe), AD prevodnik, PWM moduly. Zo stranky [3] je napriklad aj viditelne, ze PIC32 dokazu v zlozitejsich ulohach poskytovat cca 100-150x vacsi vykon ako PIC18. Porovnanie s PIC16 a podobnymi neexistuje, resp. neviem o nom, ale je mozne, ze by sa blizil k cislu, ktore ma este o jednu cifru viac. Takyto vykon predurcuje PIC32 do aplikacii ako su mensie multimedialne zariadenia, alebo sa v nich da pokojne emulovat cely 8-bitovy pocitac s Z80 CPU v realnom case, ako dokazuje moja konstrukcia [4], pripadne softwarovy MP3 dekoder. Cena PIC32 zacina pri 3USD. 

[1] http://en.wikipedia.org/wiki/Harvard_architecture 
[2] http://www.mikrozone.sk/pluginy/forum/forum_viewtopic.php?681 
[3] http://www.coremark.org/benchmark/index.php 
[4] http://www.flickr.com/photos/stryco_jarin/sets/ 

------------------------------------------------------------------------ 

Kapitola 2: Vyvojove nastroje 

Vyvojove nastroje si mozeme rozdelit do dvoch skupin: softwarove nastroje (A) a hardwarove nastroje (B). 
(A) tu sa vsetko toci okolo MPLAB-u. Je to IDE (Integrated development Environment), ktore obsahuje spravcu projektov, editor, assembler (pre vsetky PIC), simulator, a podporu HW nastrojov od Microchipu. Cize pre pracu v assembleri je MPLAB kompletne riesenie a nic viac mu netreba. 
K tomuto Microchip ponuka aj sortiment kompilatorov, zvlast kompilatory MCC18 (pre PIC18), MCC30 (pre vsetky 16-bitove MCU) a MCC32 (pre PIC32). Umoznuju trivialnu integraciu do MPLAB-u, maju aj free verzie, ktore vsak na rozdiel od roznych inych nemaju obmedzenie na velkost generovaneho kodu, ale obmedzenie pouzitia vyssich stupnov optimalizacii. Aj tak ale poskytuju asi najlepsi kompromis medzi jednoduchostou pouzitia a vykonom pri zachovani nulovej ceny. Microchip takisto odkupil Hi-tech kompilatory, ale zda sa, ze hlavny doraz vo svojich knizniciach dava na svoje kompilatory, takisto aj vyvoj je smerovany predovsetkym na ne. Pozornemu citatelovi iste neuniklo, ze Microchip neponuka kompilator pre PIC16 MCU. Dovod je zrejme ten, ze v Microchipe dobre vedia, ze tato architektura nie je vobec vhodna na kompilatory. Dovodom je predovsetkym to, ze pamatovy priestor PIC16 je rozbity bankovanim na viacero usekov nerovnakej velkosti, co komplikuje vytvorenie SW zasobnika, ktory je nevyhnutny, pretoze HW zasobnik ma hlbku len 8 vstupov. Na druhu stranu, pouzitie SW zasobnika odobera RAM, ktorej je aj tak malo a toto, v kombinacii s menovanym rozbitym RAM datovym priestorom komplikuje vytvaranie vacsich premennych (poli, datovych struktur), ktore su pre jazyk C prirodzene. Akceptovanie a maskovanie tychto problemov zas vyzaduje strojovy cas beztak pomaleho MCU ako aj znacne usilie pri pisani kompilatora - situacia je navyse komplikovana mnozstvom typov, ktore maju z dovodu co najnizsej ceny castokrat rozdielne usporiadanu RAM. Vysledkom by bol znacne neohrabany kompilator, ktory generuje pomaly kod pre MCU, ktore sa daju lahko nahradit vykonnejsimi typmi. To je zrejme dovod, preco neexistuje kompilator pre PIC16 od Microchipu. Existuju vyvojove prostredia, alebo kompilatory od roznych firiem, ako napriklad MikroElektronika, Hi-Tech, CCS, SourceBoost, ktore maju medzi cielovymi MCU aj PIC16, ale vsetky tieto kompilatory viac alebo menej potvrdzuju to, co som pisal vyssie. Okrem toho, niektore maju vo free verziach velmi zartovne a prakticky nepouzitelne obmedzenia, napriklad generovanie maximalne 2k slov programu. 
Z toho vyplyva, ze najnizsim pouzitelnym MCU pre pracu s C kompilatormi je PIC18, lepsim su 16-bity a najlepsim 32-bity. 
Samozrejme, vyvoj je mozny nielen v C, ale aj v assembleri. Pre mna sa najjednoduchsim zda byt programovanie 16-bitovych PIC, pretoze maju najortogonalnejsiu instrukcnu sadu, jednotny pamatovy priestor, ziadne bankovanie atd... Zaciatocnici mozno budu radsej robit s PIC18, ale presedlanie na 16-bity bude nie velmi zlozite. 
(B) HW vyvojove nastroje - sem patria zariadenia, ktore svoje na ceste medzi PC a cielovym MCU pocas ladenia a programovania. Microchip ponuka viacero typov, no z nich by som vybral tri, ktore maju momentalne najvacsiu moznost pouzitia - PicKit3 (dalej len PK3), ICD3 a RealICE (dalej len RI). 
PK3 je koncipovany ako zaciatocnicky nastroj, comu zodpoveda aj jeho cena - cca 40EUR. Je to plnohodnotny programator a debugger, co znamena, ze okrem naprogramovania cieloveho MCU dokaze robit aj ladenie v aplikacii. Program sa napali do FLASH a moze sa krokovat alebo spustat a zastavovat, daju sa prezerat obsahy pamati (RAM, FLASH, EEPROM) a menit ich hodnoty. To je skvelym pomocnikom pri ladeni programu. Dalej ma funkciu Programmer-to-go, co znamena, ze sa do jeho vnutornej pamate da nahrat obraz programu, ktory sa da potom programovat do cielovych MCU aj bez pritomnosti pocitaca. 
ICD3 je uz plnohodnotnym produkcnym nastrojom. Jeho cena je vyssia ako u PK3, cca 170EUR, ale aj jeho moznosti. V zasade ponuka to iste, co PK3, ale s podstatne vyssim komfortom a hlavne vyssou rychlostou, co clovek oceni pri vacsich MCU. 
RI je bohatsi brat ICD3, poskytuje napriklad trace funkciu a triggerovanie od roznych udalosti, co su veci, ktore sa vyuziju hlavne pri praci s vyssimi PIC, 16- a 32-bitmi. Jeho cena je este vyssia, cca 400EUR. 
Na zaciatok s PIC je asi najlepsia kupa PK3, na serioznejsiu pracu potom ICD3, resp. RI. Pri tom cloveku zostane PK3, ktory sa da pekne vyuzit ako zalozny nastroj, pripadne pri ladeni programov dvoch vzajomne komunikujucich MCU. 

Medzi amatermi su pomerne rozsirene "vyvojove nastroje" ktore suhrnne oznacujem ako "hrdzavy kliniec". Su to jednoduche programatory, vacsinou pripajane na seriovy alebo paralelny port pocitaca a ovladane nejakym specialnym, na to urcenym SW. Tieto SW byvaju typicky vyvijane nejakym jednotlivcom, ktory to robi v ramci svojho volneho casu. Tieto nastroje maju tri vazne problemy: 
1, Design: Byvaju navrhovane velmi jednoducho, bez akychkolvek ochrannych prvkov, takze zle pripojenie k cielovemu MCU (co sa pri vyvoji moze stat velmi lahko) moze mat fatalne nasledky pre pouzity PC alebo cielovy MCU. Castokrat nemaju podporu pre ine ako 5V cielove MCU, co v sucasnosti znamena krok asi 5-10 rokov dozadu a castokrat nemaju korektne navrhnute budice, co moze prinasat presluchy a odrazy na programovacich linkach, to sa riesi spomalenim komunikacie, co v suhre s pomalym pristupom na porty z ne-RTOS operacneho systemu, akym Windows typicky je znamena velmi pomale programovanie. Bezne je to povedzme 1-2kB naprogramovanej FLASH za sekundu, zatialco pri serioznych programatoroch to je cca o jednu az dve nuly rychlejsie. Tento nedostatok sa prejavuje hlavne pri vacsich MCU. Dalsia vec, ze rozhrania, ktore sa na toto casto zneuzivali (LPT, COM), uz z notebookov prakticky vymizli a desktopov miznu pomaly ale isto (hoci sa daju kupit LPT a COM rozhrania do PCI slotu). 
2, Podpora: Kedze je to navrhovane a udrziavane jednotlivcom v ramci volneho casu, tak cela podpora je pomerne pomala - vychytavanie bugov, alebo pridavnie novych MCU. A prave podopora novych MCU je velmi lakava, pretoze vyrobcovia nespia a prinasaju nove modely, ktore su lacnejsie alebo vykonnejsie a vedia lepsia plnit svoju ulohu. Takisto sa moze stat (a aj sa to stalo), ze autor si jednoducho povie, ze na software kasle, pretoze ma povedzme malo volneho casu, lebo ma novu pracu, nasiel si zensku alebo zacal chodit na ryby. Vtedy projekt zakape a podpora novych MCU, pripadne vychytavanie starych chyb je v nedohladne. 
3, Funkcnost: vsetky tieto programatory ponukaju iba jedno: nekomfortne naprogramovanie cieloveho MCU. Pisem, ze nekomfortne, pretoze sa vacsinou musia ovladat zo separatneho SW a programovanie prebieha pomaly. Vyvojove nastroje od Microchipu su integrovane do MPLAB-u, co znamena jednoduchsie programovanie (typicky na jedno kliknutie). Okrem toho, hrdzave klince neponukaju jednu funkcionalitu a tou je ladenie v aplikacii (ICD). Toto samotne je hodne ceny PK3 alebo ICD3. Na odbornych forach okolo MCU sa pohybujem uz zopar rokov a dovolujem si tvrdit, ze 90% vsetkych problemov, ktore sa tam riesia by nemuslo byt, ak by ludia vedeli pouzivat ladenie v aplikacii, usetrilo by sa velmi vela casu a usilia. U ludi, ktorych som ucil programovat (zaciatocnici) to vacinou bolo tak, ze ICD odmietali, ale ako si s nim raz navykli pracovat, tak uz bez neho programovat nechceli. Jednoducho je to nastroj, ktory nielen ze nesmierne ulahcuje a zrychluje pracu, ale aj umoznuje riesit problemy, ktore by sa bez ICD riesili tak tazko, ze by sa clovek do nich radsej ani nepustal. 
Toto su argumenty, preco pouzivat poriadne vyvojove nastroje. Jedinym argumentom preco ich nepouzivat je ich cena. Samozrejme, argument je to viac ako pochybny. Uvaziac priemernu mesacnu mzdu obyvatela SR na urovni cca 700-750EUR, je cena 40EURoveho PK3 cca 1/20 mesacnej mzdy. Priemerny stredoskolak si na PK3 dokaze zarobit na brigade povedzme za dva az tri dni. Samozrejme, tym, ze si ho kupi a nauci sa ho pouzivat, si usetri omnoho viac casu a penazi na lepsich a lacnejsich MCU, pripadne na vyssej produktivite prace, cize pociatocna (mimochodom velmi mala) investicia sa pomerne rychlo vrati. 
Na webe je vela konstrukcii roznych viac ci menej nedovarenych "klonov" ICD2. Od tych radsej ruky prec. Pred 5-timi rokmi mozno ano, ale v sucasnosti nema zmysel stavat tento nastroj, pretoze aj obycajny PK3 je rychlejsi a podporuje viac obvodov. Cenove a casove porovnanie je uplne zrejme v prospech PK3. 

Co sa tyka ostatnej podpory Microchipu, napriklad appnotes a SW kniznic, o tych niekedy v inej kapitole. 

----------------------------------------------------------------- 

Kapitola 3: Podciarknute, zhrnute 

Pre zaciatok je asi najjednoduschie zacat v kombinacii MPLAB + akykolvek PIC18 na bastldoske + MCC18 kompilator + PK3. Toto vyvojove prostredie, ktore sa da zohnat za cenu pod 50EUR, dovoluje velmi jednoduche prve kroky bez zbytocneho sa zdrziavania s nectnostami PIC16 a nizsich MCU, ale velmi jendoducho sa to programuje aj v assembleri. Takisto je mozne ist do kombinacie MPLAB + nejake PIC24 v DIP puzdre + MCC30 + PK3, co prinasa este vacsi vykon a moznosti prace za podobnu cenu. 
Neodporucam zacinat s PIC16, pretoze tieto MCU su davno za zenitom, PIC18 alebo PIC24 su len o chlp drahsie, ale usetria mnoho casu alebo externych suciastok, ktore by potrebovali PIC16. Pouzitie PIC16 dokazem pochopit len pri seriach povedzme nad 1000 alebo 10000 kusov, kde ich pouzitie usetri peniaze, ale to asi nebude zalezitost navstevnikov tohto fora. 
Pouzitie PIC32 je mozne, ale MCU nizsej triedy su jednoduchsie pre zaciatocnika. 

----------------------------------------------------------------- 

pokracovanie: 
System oznacovania PIC MCU http://forum.mcontrollers.com/viewtopic.php?p=14976#14976 

-----------------------------------------------------------------