Charakteristika pamätí typu DIP s 16 a 18 pinmi
V tomto článku sa zameriame na charakteristiky pamätí typu DIP (Dual In-line Package) s 16 a 18 pinmi, a to najmä v kontexte 8-bitových PIC mikrokontrolérov. Popíšeme rôzne typy týchto mikrokontrolérov a ich vlastnosti.
8-bitové PIC mikrokontroléry
Množinu 8-bitových PIC mikrokontrolérov možno rozdeliť do štyroch základných skupín:
- Baseline
- Midrange
- Rozšírené Midrange
- Enhanced
Baseline (A1)
Baseline 8-bitové PIC sú priamym pozostatkom originálneho PIC1650 z konca sedemdesiatych rokov, koncipovaného ako programovateľná periféria pre výkonnejšie CPU. Architektúra je veľmi jednoduchá, nemá prerušovací systém, má hardwarový stack obmedzený na dve úrovne vnorenia a inštrukčný súbor obsahujúci 33 inštrukcií. Pamäť programu máva typicky stovky až niekoľko tisíc slov, dátová pamäť (RAM) má typicky desiatky bajtov. Z periférií to býva zvyčajne jeden čítač/časovač, prípadne AD prevodník. Výpočtový výkon je obmedzený na 5 MIPS, ale vzhľadom na obmedzený inštrukčný súbor, malý hardwarový stack a chýbajúci systém prerušení bude použitie tejto podskupiny 8-bitových MCU pomerne obmedzené na jednoduché riadiace účely. Sú programovateľné v aplikácii (ICSP - In Circuit Serial Programming). Typickým predstaviteľom tejto rodiny je PIC16F5x (F54, F57, F59), čo je FLASH verzia starých OTP PIC16C5x, ďalej PIC10Fxxx, PIC12F5xx, PIC16F5xx.
Midrange (A2)
Midrange 8-bitové PIC vznikli ako vylepšenie Baseline. Boli pridané dve inštrukcie, ale predovšetkým pridaný systém prerušenia a hardwarový stack bol zväčšený na osem úrovní. Iné zásadné zmeny v architektúre nenastali, čo implikuje napríklad obmedzenie prístupu do RAM na sedembitovú adresu, čo by znamenalo, že sa priamo nemôže osloviť viac ako 128 bajtov RAM. Toto sa rieši tzv. bankovaním (stránkovaním), kedy je RAM rozdelená na dve alebo štyri banky, ktorých selekcia sa vykonáva príslušnými bitmi (RP0 a RP1 v registri STATUS). Týmto sa dá rozšíriť množstvo osloviteľnej RAM, ale jej množstvo sa zas zmenšuje tým, že niektoré registre musia byť vo všetkých bankách. Okrem toho to prináša spomalenie pri vykonávaní programu, pretože prepínanie bánk trvá strojový čas, ktorý je pomerne vzácny, nakoľko tieto MCU bežia do 20MHz, čo implikuje výkon 5MIPS. Bankovanie, resp. stránkovanie postihlo aj programovú pamäť. Instrukcia goto, resp. call dokáže adresovať maximálne 12 bitov, čo znamená že skoky cez hranicu 2048 slov sa nemôžu uskutočňovať priamo, ale pomocou nastavenia bitov v adresári PCLATH, ktorý v tomto prípade slúži ako zdroj vyšších adresových bitov pre adresu skoku/volania. Maximálna veľkosť FLASH býva 8k slov, maximálna veľkosť RAM stovky bajtov, obsahujú aj EEPROM, desiatky až stovky bajtov.
Midrange PIC sú inak štandardne vybavené perifériami, podľa typu obsahujú UART, MSSP rozhranie (prepinateľné na SPI/ IIC master alebo slave), paralelný slave port, AD prevodník, komparátory, LCD budič, interný oscilátor (z výroby presnosť do 2%), dva až tri čítače/časovače, PWM moduly, ICSP a mnohé typy podporujú aj ICD (In Circuit Debug - ladenie v aplikácii). Tieto MCU majú pri svojej použiteľnosti pomerne malý príkon a hodia sa na low-power aplikácie, napríklad som urobil digitálny teplomer zobrazujúci údaj o teplote na LCD s odberom cca 2-3uA pri napájaní z 3V zdroja. Do tejto rodiny PIC patria všetky typy PIC16, okrem tých ktoré som spomenul v (A1).
Rozšírené Midrange (A3)
Vznikli ako vylepšenie Midrange so skúsenosťami z Enhanced a zapĺňajú priestor medzi Midrange a Enhanced. Vylepšenia sa týkajú predovšetkým "vyrovnania" RAM pamäťového priestoru a taktovania do 32MHz. Sú to všetky typy PIC16F1xxx a PIC12F1xxx.
Enhanced (A4)
Vznikli ako podstatné vylepšenie Midrange, ale stále zachovávajú spätnú kompatibilitu s PIC16 na značnej úrovni. Šírka programového slova sa zväčšila na 16 bitov, aby mohli byť obsiahnuté nové inštrukcie, ktorých počet sa zväčšil na 83. Bol pridaný Extended instruction set, ktorý pridával nové inštrukcie a adresovacie módy pre potreby ľahšej integrácie s C kompilátormi. Ďalej, okrem inštrukcie movff všetky inštrukcie adresujú 8-bitový priestor, teda pamäť je rozdelená do bánk po 256 bajtov, prepínajú sa registrom BSR (a inštrukciou movlb) plus jedna banka je tzv access bank, do ktorej sa dá pristupovať bez ohľadu na stav BSR. Velkosť bánk a ich umiestnenie prakticky znamenajú, že sa dá programovanie obísť úplne bez bankovania (ja sám som ho použil iba jeden jediný raz aj to vo veľmi špecifickom prípade). Jadro je vybavené trojicou pointerov, ktoré obsiahnu celý pamäťový priestor s možnosťou inkrementácie a dekrementácie. Instrukcie, ktoré pribudli oproti Midrange prinášajú možnosť ľahšieho prístupu do programovej pamäte, ľahšiu manipuláciu so 16-bitovými číslami a viac možností podmienených skokov.
Výkon sa zvýšil až na 16 MIPS (takt 64MHz), oscilátor dostal PLL na násobenie frekvencie oscilátora. Rozšírené boli aj možnosti periférií, resp. pribudli tie, ktoré by v nižších rodinách boli ťažko aplikovateľné, napríklad USB rozhranie (možnosť iba device módu), Ethernet (kompletný, s MAC a PHY) a CAN zbernica. Všetky Enhanced majú ICSP a prakticky všetky aj ICD. Pamäťová dotácia momentálne končí pri 128kB FLASH a 4kB RAM. Niektoré typy majú možnosť pripojenia externej programovej pamäte s veľkosťou až do 2MB, pričom táto pamäť môže byť FLASH alebo RAM, takže sa dajú vytvárať aj samomodifikovateľné programy, resp. jednoduché operačné systémy. Do rodiny Enhanced patria všetky typy PIC18.
Pre lepšiu prehľadnosť uvádzame porovnávaciu tabuľku vlastností jednotlivých skupín 8-bitových PIC mikrokontrolérov:
| Skupina | Inštrukčný súbor | Hardwarový stack | Max. takt | Max. FLASH | Max. RAM | Periférie |
|---|---|---|---|---|---|---|
| Baseline | 33 inštrukcií | 2 úrovne | 5 MHz | Niekoľko tisíc slov | Desiatky bajtov | Čítač/časovač, AD prevodník |
| Midrange | 35 inštrukcií | 8 úrovní | 20 MHz | 8k slov | Stovky bajtov | UART, MSSP, AD prevodník, komparátory |
| Rozšírené Midrange | 35 inštrukcií | 8 úrovní | 32 MHz | 8k slov | Stovky bajtov | UART, MSSP, AD prevodník, komparátory |
| Enhanced | 83 inštrukcií | 31 úrovní | 64 MHz | 128 kB | 4 kB | USB, Ethernet, CAN, AD prevodník, PWM |
Vývojové prostredie MPLAB
Všetko sa točí okolo MPLAB-u, resp. MPLABX (v ďalšom texte budem používať MPLAB ako generické pomenovanie MPLAB alebo MPLABX, kde bude treba poukázať na odlišnosti, použijem explicitne MPLABX). Je to IDE (Integrated development Environment), ktoré obsahuje správcu projektov, editor, assembler (pre všetky PIC), simulátor, a podporu HW nástrojov od Microchipu. K tomuto Microchip ponúka aj sortiment kompilátorov, zvlášť kompilátory XC8 (pre PIC16, PIC18), XC16 (pre všetky 16-bitové MCU) a XC32 (pre PIC32). Umožňujú triviálnu integráciu do MPLAB-u, majú aj free verzie, ktoré však na rozdiel od rôznych iných nemajú obmedzenie na veľkosť generovaného kódu, ale obmedzenie použitia vyšších stupňov optimalizácií.
Rozdiel medzi MPLAB a MPLABX je dosť zásadný. MPLABX je založený na NetBeans IDE, takže je multiplatformný, vrátane XC kompilátorov. To znamená, že to isté vývojové prostredie funguje vo Windows, Linuxe aj MacOS. Samozrejme, vývoj je možný nielen v C, ale aj v assembleri. Pre mňa sa najjednoduchším zdá byť programovanie 16-bitových PIC, pretože majú najortogonálnejšiu inštrukčnú sadu, jednotný pamäťový priestor, žiadne bankovanie atď...
HW vývojové nástroje
Sem patria zariadenia, ktoré sprostredkúvajú komunikáciu medzi PC a cieľovým MCU počas ladenia a programovania. Microchip ponúka viacero typov, no z nich by som vybral tri, ktoré majú momentálne najväčšiu možnosť použitia - PicKit3 (ďalej len PK3), ICD3 a RealICE (ďalej len RI). PK3 je koncipovaný ako začiatočnícky nástroj, čomu zodpovedá aj jeho cena - cca 40EUR. Je to plnohodnotný programátor a debugger, čo znamená, že okrem naprogramovania cieľového MCU dokáže robiť aj ladenie v aplikácii. Program sa napáli do FLASH a môže sa krokovat alebo spúšťať a zastavovať, dajú sa prezerat obsahy pamätí (RAM, FLASH, EEPROM) a meniť ich hodnoty. To je skvelým pomocníkom pri ladení programu.
ICD3 je už plnohodnotným produkčným nástrojom. Jeho cena je vyššia ako u PK3, cca 140EUR, ale aj jeho možnosti. RI je bohatší brat ICD3, poskytuje napríklad trace funkciu a triggerovanie od rôznych udalostí, čo sú veci, ktoré sa využijú hlavne pri práci s vyššími PIC, 16- a 32-bitmi. Na začiatok s PIC je asi najlepšia kúpa PK3, na serióznejšiu prácu potom ICD3, resp. RI.
Medzi amatérmi sú pomerne rozšírené "vývojové nástroje" ktoré súhrnne označujem ako "hrdzavý klinec". Sú to jednoduché programátory, väčšinou pripájané na sériový alebo paralelný port počítača a ovládané nejakým špeciálnym, na to určeným SW. Tieto SW bývajú typicky vyvíjané nejakým jednotlivcom, ktorý to robí v rámci svojho voľného času.
Nevýhody "hrdzavých klincov"
- Design: Bývajú navrhované veľmi jednoducho, bez akýchkoľvek ochranných prvkov, takže zlé pripojenie k cieľovému MCU (čo sa pri vývoji môže stať veľmi ľahko) môže mať fatálne následky pre použitý PC alebo cieľový MCU.
- Podpora: Keďže je to navrhované a udržiavané jednotlivcom v rámci voľného času, tak celá podpora je pomerne pomalá - vychytávanie bugov, alebo pridávanie nových MCU.
- Funkčnosť: Všetky tieto programátory ponúkajú iba jedno: nekomfortné naprogramovanie cieľového MCU. Píšem, že nekomfortné, pretože sa väčšinou musia ovládať zo separatneho SW a programovanie prebieha pomaly.
Vývojové nástroje od Microchipu sú integrované do MPLAB-u, čo znamená jednoduchšie programovanie (typicky na jedno kliknutie). Okrem toho, hrdzavé klince neponúkajú jednu funkcionalitu a tou je ladenie v aplikácii (ICD). Toto samotné je hodné ceny PK3 alebo ICD3. Na odborných fórach okolo MCU sa pohybujem už zopár rokov a dovolujem si tvrdiť, že 90% všetkých problémov, ktoré sa tam riešia by nemuselo byť, ak by ľudia vedeli používať ladenie v aplikácii, ušetrilo by sa veľmi veľa času a úsilia. U ľudí, ktorých som učil programovať (začiatočníci) to väčšinou bolo tak, že ICD odmietali, ale ako si s ním raz navykli pracovať, tak už bez neho programovať nechceli. Toto sú argumenty, prečo používať poriadne vývojové nástroje. Jediným argumentom prečo ich nepoužívať je ich cena.
Označením jednočipov od Microchipu má mierne systematickú formu, závislú od konkrétnej rodiny. Medzi číslami, ktoré som označil b a c môže byť ďalší znak, ktorý určuje niektoré ďalšie vlastnosti, ktoré vyplyvajú z iného výrobného procesu.
- nic - platí vsetko to, co som pisal hore s tym, ze napajacie napatie je 2-5,5V.
- J (teda PIC18FabJcd) - označuje lacnejší výrobný proces, napájacie napätie je väčšinou 2,7 - 3,6V s tým, že vnútri MCU je napäťový regulátor, ktorý vytvára napätie 2,5V pre jadro. EEPROM nebýva prítomná a pre staršie modely (18FabJc0) je dokonca endurance FLASH obmedzen...
FireBeetle 2 ESP32-E je hlavná riadiaca doska založená na Dual Core Chip ESP-WROOM-32E, navrhnutá špeciálne pre IOT.IT.ITS Komunikácia WiFi a Bluetooth Dual-Mode Communication a má malú veľkosť, ultravú spotrebu energie, spotrebu nabíjacieho obvodu na palube, palubný nabíjací obvod , a ľahko použiteľné rozhranie. Pripojením s platformami IoT, ako je IFTTT, si môžete ľahko vytvoriť svoj vlastný jedinečný inteligentný domáci systém IoT.FireBeetle 2 ESP32-E hlboko podporuje programovanie Arduino IDE a čoskoro podporíte škrabancové grafické programovanie a programovanie mikropytov. Poskytujeme podrobné online návody a prípady aplikácií , ako aj tisíce snímačov a ovládačov Gravitačného rozhrania bez zvárania, ktoré sa dajú ľahko vyrobiť a výrazne skrátiť čas učenia.
How to program the Picaxe 08, 08m, or 08m2
tags: #pamat #typu #dip #s #16 #18


