Ako zacat s PIC, nastroje, oznacovanie atd...

Všetko čo sa týka mikropočítačov + Sekcia Arduino

Moderátori: psichac, Moderátori

Používateľov profilový obrázok
jaromir
Power user
Power user
Príspevky: 4538
Dátum registrácie: 08 Júl 2011, 00:00
Vek: 40

Ako zacat s PIC, nastroje, oznacovanie atd...

Príspevok od používateľa jaromir » 14 Júl 2011, 12:13

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 LPC1xxx (o Cortex M0 ani nehovoriac - tam je konkurentom skor PIC24 rodina) [3], okrem toho maju aj vacsiu pamatovu dotaciu ako podstatna vacsina malych ARM Cortex M0/M3 MCU momentalne (januar 2014) dostupnych na trhu - az 128kB RAM a 512kB FLASH. Momentalne su dostupne vzorky PIC32MZ MCU s 512kB SRAM a 2MB FLASH, vylepsenym jadrom na 200MHz a inymi chutovkami, ako napriklad 28Msps ADC, co zas prevysuje ponuku aj tych vacsich ARM mikrokontrolerov.
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 2USD za kus.

[1] http://en.wikipedia.org/wiki/Harvard_architecture
[2] http://www.mikrozone.sk/pluginy/forum/f ... ic.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, resp. MPLABX (v dalsom texte budem pouzivat MPLAB ako genricke pomenovanie MPLAB alebo MPLABX, kde bude treba poukazat na odlisnosti, pouzijem explicitne MPLABX). 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 XC8 (pre PIC16, PIC18), XC16 (pre vsetky 16-bitove MCU) a XC32 (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.
Rozdiel medzi MPLAB a MPLABX je dost zasadny. MPLABX je zalozeny na NetBeans IDE, takze je multiplatformny, vratane XC kompilatorov. To znamena, ze to iste vyvojove prostredie funguje vo Windows, Linuxe aj MacOS. MPLAB je kompilovany ako Windows binarka, takze je neprenosny na ine OS, ale na rozdiel od MPLABX - napisaneho v Jave - je sviznejsi aj na pomalsich pocitacoch.
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 140EUR, 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 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.
Kto chce, moze si PK3 aj zostrojit. Ja som tak urobil a tento kusok pouzivam doteraz - ale je treba uvedomit si, ze sa v nom nachadzaju obvody, ktore su len v SMD prevedeni a pre zaciatocnika to nemusi byt trivialne riesitelny problem.

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

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

Kapitola 3: Oznacovanie PIC MCU

Oznacenie jednocipov od Microchipu me mierne systematicku formu, zavislu od konkretnej rodiny. Podotykam, ze nasledujuce zhrnutie je iba mojim vlastnym pozorovanim skutocnosti a este som nevidel oficialny dokument od Microchipu, ktory by moje pozorovania potvrdzoval.

Pre PIC18 je to zhruba takto:
PIC18Fabcd, kde:
a oznacuje pocet pinov puzdra.
- 1 - 18 alebo 20 pinov
- 2 - 28 pinov
- 4 - 40 alebo 44 pinov
- 6 - 64 pinov
- 8 - 80 pinov
- 9 - 100 pinov
b oznacuje zhruba velkost programovej FLASH pamate lavne rysy
- 2 - 4kB
- 3 - 8kB
- 4 - 16kB
- 5 - 32kB
- 6 - 64kB
- 7 - 128kB
c oznacuje hlavne rysy daneho MCU
- 0 - MCU na vseobecne pouzitie
- 1 - dtto
- 2 - dtto
- 5 - USB MCU
- 6 - Ethernet
- 8 - CAN MCU
- 9 - budic LCD
d moze oznacovat dalsie odlisnosti
- 1, 2 - MCU ma nejake vylepsenia oproti MCU ktory ma na tomto mieste 0
- 3 - 12 bitovy ADC namiesto 10 bitoveho
- 5 - o 50% viac FLASH ako oznacuje b

Cize napriklad 18F2620 bude nejaky 28 pinovy kusok, ma 64kB FLASH, je na vseobecne pouzitie (nema ETH, USB ani CAN), zatialco 18F4580 bude v 40 alebo 44 pinovom puzdre, s 32kB FLASH a bude mat CAN rozhranie.
Medzi cislami, ktore som oznacil b a c moze byt dalsi znak, ktory urcuje niektore dalsie vlastnosti, ktore vyplyvaju z ineho vyrobneho procesu. Byvaju tam dva znaky: J, K alebo nic
nic - plati vsetko to, co som pisal hore s tym, ze napajacie napatie je 2-5,5V. Pre napatia 4,2 - 5,5V plati pracovna frekvencia do 40MHz (10MIPS), pre nizsie napatia sa pracovna frekvencia pomaly znizuje.
J (teda PIC18FabJcd) oznacuje lacnejsi vyrobny proces, napajacie napatie je vacsinou 2,7 - 3,6V s tym, ze vnutri MCU je napatovy regulator, ktory vytvara napatie 2,5V pre jadro. EEPROM nebyva pritomna a pre starsie modely (18FabJc0) je dokonca endurance FLASH obmedzena na 1000 cyklov (ale cena je velmi priazniva). Novsie modely (18FabJc1) uz maju endurance typicku pre moderne FLASH, 10000 cyklov. Pracovna frekvencia je vacsinou do 64MHz pre plny rozsah napajacich napati. Ceny su lepsie ako pre ne-J verzie porovnatelnych vlastnosti.
K (teda PIC18FabKcd) oznacuje novsiu, 3,3V technologiu. Na rozdiel od J, byva EEPROM pritomna. Napajacie napatie byva do 3,6V, ale nove modely (18FabKc2) mavaju hornu medzu napajacieho napatia do 5,5V. Pracovna frekvencia je do 64MHz pre napajanie 2,7-5,5V alebo do 20MHz pre napajanie 1,8-2,7V. Ceny su lepsie ako pre ne-K verzie porovnatelnych vlastnosti.


Pre PIC24F je to takto:
PIC24FJxxxyyqzz, kde
xxx oznacuje pribliznu velkost programovej FLASH v kB
yy oznacuje zhruba pouzitie daneho MCU
- GA - MCU na vseobecne pouzitie
- GB - MCU s USB OTG periferiou
- DA - MCU s periferiou na budenie displejov
- KA - male lacne MCU
q je jednoducho poradove cislo
zz je velkost puzdra
- 02 - 28 pinov
- 04 - 44 pinov
- 06 - 64 pinov
- 08 - 80 pinov
- 10 - 100 pinov
Teda napriklad PIC24FJ32GA002 je typ s 32kB FLASH, na vseobecne pouzitie a 28 pinmi, PIC24FJ32GA102 je nieco podobne, ale zrejme novsie. PIC24FJ128GB106 je typ s 256kB FLASH, USB OTG periferiou a 64 pinmi.
Pre dsPIC33 a PIC24H je to podobne ako pre PIC24F, ale
yy byva ine:
- GP - na vseobecne pouzitie
- MC - a riadenie motorov
- GS - na riadenie spinanych zdrojov

Pre PIC32 je oznacovanie taketo:
PIC32MXabbFcccd
kde a oznacuje rodinu PIC32
- 3 MCU na vseobecne pouzitie
- 4 USB periferia
- 5 USB, ale lepsie nez 4
- 6 USB a Ethernet
- 7 USB, Ethernet a CAN
bb je poradove cislo (zda sa, ze aj tam je nejaky system, ale neviem ho jasne vyjadrit)
ccc je velkost FLASH v kB
d je puzdro
- H - 64 pinov
- L - 100 pinov

Pre PIC10, PIC12, PIC16 a dsPIC30 je znacenie dost nesystematicke. Da sa tam najst nejaka stopa po istych pravidlach, ale tieto su natolko etericke, ze ich neviem zapisat do rozumnej podoby.

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

Kapitola 4: Podciarknute, zhrnute

Pre zaciatok je asi najjednoduschie zacat v kombinacii MPLAB + akykolvek PIC18 na bastldoske + XC18 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 + XC16 + 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.


------------------------
UPDATE: 23.01.2014 - uprava niektorych odsekov textu, aby lepsie reflektovali sucasnost
0
Naposledy upravil/-a jaromir v 22 Jan 2014, 11:54, upravené celkom 2 krát.

Používateľov profilový obrázok
Peťus
Ultimate člen
Ultimate člen
Príspevky: 3940
Dátum registrácie: 07 Mar 2009, 00:00
Bydlisko: Praha
Vek: 34
Kontaktovať používateľa:

Príspevok od používateľa Peťus » 14 Júl 2011, 12:37

Hezký,ale nebylo by to lepší jako článek? tady to upadne v zapomnění.
A pak doufám že to není jenom ctrl+c ctrl+v.
0
https://chiptron.cz - novinky ze světa elektro (Arduino, Raspberry Pi, STM32, ESP8266, ESP32,...)

Používateľov profilový obrázok
jaromir
Power user
Power user
Príspevky: 4538
Dátum registrácie: 08 Júl 2011, 00:00
Vek: 40

Príspevok od používateľa jaromir » 14 Júl 2011, 12:41

Peťus napísal:Hezký,ale nebylo by to lepší jako článek?
Neviem... a bolo?
Ako clanok to tiez zapadne prachom, takto to mam aspon na fore a mozem na toto odkazovat ked bude treba. Ale rad si necham poradit co s tym.
Peťus napísal: A pak doufám že to není jenom ctrl+c ctrl+v.
Je to Ctrl+c Ctrl+v, ale z mojho vlastneho vytvoru ;-)
Chcel som, aby na tomto fore neboli iba prosby o radu, ale aj konstruktivnejsie zalezitosti, resp. aby forum bolo forom a nie poradnou.
0

Používateľov profilový obrázok
Peťus
Ultimate člen
Ultimate člen
Príspevky: 3940
Dátum registrácie: 07 Mar 2009, 00:00
Bydlisko: Praha
Vek: 34
Kontaktovať používateľa:

Príspevok od používateľa Peťus » 14 Júl 2011, 12:42

tak kompromis. nechal bych to tady a zároveň jako článek.
A ohledně kopírování, ok to se povoluje :lol:
0
https://chiptron.cz - novinky ze světa elektro (Arduino, Raspberry Pi, STM32, ESP8266, ESP32,...)

Používateľov profilový obrázok
zawin
Administrátor
Administrátor
Príspevky: 2644
Dátum registrácie: 17 Júl 2006, 00:00
Vek: 34
Kontaktovať používateľa:

Príspevok od používateľa zawin » 14 Júl 2011, 14:35

Ahoj, ak by si suhlasil bol by som velmi rad keby sa to spracovalo aj ako clanok. Tam by sa to mohlo krajsie rozdelit a pripadne doplnit aj nejake obrazky.
Ak by si mal zaujem kontaktuj ma na mail ktory mam uvedeny dole. Clanok samozrejme mozem uverejnit aj s odkazom na tvoju web stranku.

Dakujem
0
Sú dve veci, ktoré sú nekonečné - vesmír a ľudská hlúposť. Ale s vesmírom som si ešte nie celkom istý. /Einstein/

Používateľov profilový obrázok
eurobastler
Ultimate člen
Ultimate člen
Príspevky: 3903
Dátum registrácie: 19 Apr 2009, 00:00
Bydlisko: BA
Vek: 35

Príspevok od používateľa eurobastler » 16 Júl 2011, 14:16

Jaromir, poprosim Ta o Ctrl+V tvojho druheho clanku, kde si vysvetloval, ako zacat s programovanim. Potom uz dufam navzdy zmiznu prispevky s problematikou home-made programatorov. Dakujem
0
Obrázok

Používateľov profilový obrázok
jaromir
Power user
Power user
Príspevky: 4538
Dátum registrácie: 08 Júl 2011, 00:00
Vek: 40

Príspevok od používateľa jaromir » 16 Júl 2011, 16:09

eurobastler napísal:Jaromir, poprosim Ta o Ctrl+V tvojho druheho clanku, kde si vysvetloval, ako zacat s programovanim. Potom uz dufam navzdy zmiznu prispevky s problematikou home-made programatorov. Dakujem
Eh, ktore? V tom, co je hore, je popisane ake programatory/debuggery su od Microchipu, ake sa daju kupit a preco su podstatne lepsie nez tie bastle typu hrdzavy kliniec (JDM, PonyProg a ine), ktore sa programatormi nazyvaju.
Alebo mas na mysli nieco ine? Ak chces, na tuto temu mozem napisat separatny clanok, ale neviem ci jeden bude stacit :)
0

Používateľov profilový obrázok
eurobastler
Ultimate člen
Ultimate člen
Príspevky: 3903
Dátum registrácie: 19 Apr 2009, 00:00
Bydlisko: BA
Vek: 35

Príspevok od používateľa eurobastler » 16 Júl 2011, 16:19

Teraz uz to vidim, asi som to predtym prehliadol, prepac :oops: Nemohla by byt tato tema stale nad ostatnymi temami?
0
Obrázok

Používateľov profilový obrázok
jaromir
Power user
Power user
Príspevky: 4538
Dátum registrácie: 08 Júl 2011, 00:00
Vek: 40

Príspevok od používateľa jaromir » 16 Júl 2011, 17:12

eurobastler napísal:Nemohla by byt tato tema stale nad ostatnymi temami?
To je skor otazka na moderatorov...
Ale ja by som to riesil inak. Planujem o tomto urobit serioznejsi clanok. Potom by sa mohol urobit jeden topic s nazvom "Zaciatocnici sem!", ktory by bol prispendleny hore a boli by v nom odkazy na taketo a ine edukativne clanky.
0

Používateľov profilový obrázok
eurobastler
Ultimate člen
Ultimate člen
Príspevky: 3903
Dátum registrácie: 19 Apr 2009, 00:00
Bydlisko: BA
Vek: 35

Príspevok od používateľa eurobastler » 16 Júl 2011, 17:33

Ak mas chut, tak som rad, lebo mas dobry styl vykladu. Vidiet, ze sa vyznas a vies to aj vysvetlit.
0
Obrázok

Používateľov profilový obrázok
kukinko
Ultimate člen
Ultimate člen
Príspevky: 1536
Dátum registrácie: 11 Júl 2008, 00:00
Vek: 41
Kontaktovať používateľa:

Príspevok od používateľa kukinko » 21 Júl 2011, 07:02

K+
beries aj sukromne hodiny? :D
0
"programujem = hram sa" s Arduino / ESP, LOGO!, Simatic + TIA
+ nejaka ta elektrobizuteria okolo

:agree:

Používateľov profilový obrázok
jaromir
Power user
Power user
Príspevky: 4538
Dátum registrácie: 08 Júl 2011, 00:00
Vek: 40

Príspevok od používateľa jaromir » 21 Júl 2011, 08:00

kukinko napísal:K+
beries aj sukromne hodiny? :D
Iste ze ano.
0

martind1983
Okoloidúci
Okoloidúci
Príspevky: 17
Dátum registrácie: 30 Jún 2011, 00:00
Kontaktovať používateľa:

Príspevok od používateľa martind1983 » 28 Júl 2011, 15:30

Necital som vsetky prispevky, ale k tym C kompilatorom pre PIC odporucam CCS C compiler ma zrozumitelne navrhnute funkcie. A hlavne oproti predom menovanych kompilatorov ma velku podporu pre zabudovane periferie v MCU. A ako vyborny debbuger odporucam VSM proteus. Nakreslite schemu skompilovany COFF fuknete do virtualneho procesora. A mozete simulovat rozne druhy zbernic a debagovat vas kod ako keby ste mali uz vytvorenu aplikaciu. Dany simulator Proteus ma v sebe zabudovanych kopec features.
0
Pri tych tisickach schopnych a mudrych ludi aj tak clovek zisti, ze na vsetko zostane sam.

Používateľov profilový obrázok
jaromir
Power user
Power user
Príspevky: 4538
Dátum registrácie: 08 Júl 2011, 00:00
Vek: 40

Príspevok od používateľa jaromir » 28 Júl 2011, 16:01

martind1983 napísal:...odporucam CCS C compiler ... debbuger odporucam VSM proteus.
Aj ja by som to odporucal, ak by to bolo zadarmo alebo v nejakej pouzitelnej free verzii. Nemozem zaciatocnikom odporucat nastroje, ktore stoja niekolko stoviek az tisic dolarov.
Tamto o com som pisal je zamerane na vstup do poloprofesionalnej prace za <50EUR.
0

matutoo
Okoloidúci
Okoloidúci
Príspevky: 42
Dátum registrácie: 30 Sep 2010, 00:00
Vek: 31

Príspevok od používateľa matutoo » 28 Júl 2011, 16:32

Čawko jaromir
Práve som sa rozhodol že si budem na nete hladať niejake informacie o mickroprocesoroch a tvoj článok mi úlpne padol ako z neba. Ako si aj ty napisal že su tu len same otazky a ten kto potrebuje vediet dačo musi čakat, ale lepšie je to takto ako si to ty spracoval. Možno som jeden z mala a možno je ich plno ale mne si stýmto článkom moc pomohol a viem zže si stym mal veľa práce. Aj ked ja som si konkretne hladal o ATmega8-32.
Ďakujem a nech sa ti dary :)
S pozdravom Matutoo
K+
0

martind1983
Okoloidúci
Okoloidúci
Príspevky: 17
Dátum registrácie: 30 Jún 2011, 00:00
Kontaktovať používateľa:

Príspevok od používateľa martind1983 » 01 Aug 2011, 08:10

Jaromir to mas pravdu. Ze tieto nastroje su relativne na vysokej cenovej urovni. Ale dnesnej dobe internetu jeden nikdy nevie. A este pre tych co uz presli tymi zakladmi struktury MCU a poznaju to aj z vnutra a vedia preto pouzivat aj assembler. Jedna z velmi dobrych publikacii co odporucam je kniha od <Martina P. Banksa-The PIC programming in C language> "dufam, ze sa nemylim" Kde zasvecuje ludi do tajov jazyka C co je omnoho vykonnejsi nastroj hlavne pre tych co nemaju trpezlivosti pisat v assembleri.
Tento autor sa dokonca snazi knihu pisat stylom, ze zaujemca nema skusenost s architekturou MCU a programovanim v assembleri. " Ja osobne odporucam zacat tym assemblerom" A predom menovane nastroje, o ktorych som hovoril v predoslom prispevku,v knihe vysvetluje ako pouzivat. Zial treba trochu jazyk ovladat. Knihu som nasiel len v anglickom jazyku.
0
Pri tych tisickach schopnych a mudrych ludi aj tak clovek zisti, ze na vsetko zostane sam.

Používateľov profilový obrázok
jaromir
Power user
Power user
Príspevky: 4538
Dátum registrácie: 08 Júl 2011, 00:00
Vek: 40

Príspevok od používateľa jaromir » 01 Aug 2011, 08:23

martind1983 napísal:Jaromir to mas pravdu. Ze tieto nastroje su relativne na vysokej cenovej urovni. Ale dnesnej dobe internetu jeden nikdy nevie.
Dnesna doba internetu nijako nemeni to, ze kradez je kradezou.
martind1983 napísal: Tento autor sa dokonca snazi knihu pisat stylom, ze zaujemca nema skusenost s architekturou MCU a programovanim v assembleri. " Ja osobne odporucam zacat tym assemblerom" A predom menovane nastroje, o ktorych som hovoril v predoslom prispevku,v knihe vysvetluje ako pouzivat. Zial treba trochu jazyk ovladat. Knihu som nasiel len v anglickom jazyku.
To je pravda, assembler na zaciatok nie je zly napad. Cloveka to nuti pochopit, ako MCU skutocne pracuje, ale poriadnu produktivnu pracu je vacscinou lepsie robit v C.
0

wwlado

Re: Ako zacat s PIC, nastroje, oznacovanie atd...

Príspevok od používateľa wwlado » 26 Sep 2013, 22:03

Jaro, je aj ten klon Kit3 mozne pouzit priamo na MPLABX so vsetkymi funkciami? Ladenie,..
Celkom ma oslovili tie 16bitove. Vyrastal som na ASM, takze je rozumne asi zacat tym. Aj ked dnesna doba si vyzaduj vediet Cecko. Na Pascalistov sa v tomto storoci zabudlo. :-)
V 16bitovych existuju aj kusky, ktore sa daju rosirit o RAM ako napr. Mega 128?
Mozem ta poprosit o vysvetlenie jadra v 16 bitakoch?
Konkretne - adresovanie, ake registre sa tam pouzivaju. Zakladne instrukcie. Videl som nejake zdrojaky, ale uprimne - nechapacka. Najme spominany register w a f.

Používateľov profilový obrázok
jaromir
Power user
Power user
Príspevky: 4538
Dátum registrácie: 08 Júl 2011, 00:00
Vek: 40

Re: Ako zacat s PIC, nastroje, oznacovanie atd...

Príspevok od používateľa jaromir » 27 Sep 2013, 08:05

Klon PK3 je mozne normalne pouzit v MPLAB-e, presne tak ako original.
Original ma zverejnenu schemu priamo od Microchipu, takze cinania to kopiruju podla tej schemy :)

Na Pascalistov nikto nezabudol, iba oni sami sa zabudli v minulom tisicroci ;-)

Tie 16-bitove su fajn, aj na programovanie v asm.
Existuju kusky, kde si mozes pripojit externu RAM, bude ciastocne mapovana do pamatoveho priestoru, ale mozes k nej pristupovat aj ako k periferii (to je mierne jednoduchsi sposob) - a trebars vyuzivat DMA, to sa data potom len tak sypu.

Instrukcie su popisane v datasheete, napriklad tu http://ww1.microchip.com/downloads/en/d ... 39881c.pdf na strane 215 alebo v referencnom manuali http://ww1.microchip.com/downloads/en/D ... 70157F.pdf
Je to tam podla mna celkom pekne popisane a ako skuseny programator s tym nebudes mat problem :)
0

wwlado

Re: Ako zacat s PIC, nastroje, oznacovanie atd...

Príspevok od používateľa wwlado » 27 Sep 2013, 08:15

mohol by si mi poslat naprogramovane PICko ku tomu programatoru?

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok