O voľbe mcu - klady a zápory
Voľba mikrokontroléra (mcu) je zväčša daná osobnými príp. firemnými preferenciami, skúsenosťami, možno aj predsudkami.
Pochopiteľne, ak sa zhromaždia skúsenosti, údaje, fragmenty programov a najmä vývojové prostriedky k nejakej rodine mcu, ku zmene používanej rodiny prichádza len na základe závažných argumentov.
Rodiny mcu majú viac-menej podobné vlastnosti, preto ich porovnávanie často končí skôr hádkou než diskusiou s racionálnymi argumentami.
Pokúsili sme sa preto urobiť prehľad, v ktorom sa namiesto porovnania uvádzajú plusy a mínusy jednotlivých rodín, bez nároku na úplnosť či presnosť.
Prehľad je súhrnom subjektívnych názorov účastníkov internetovej konferencie hw-list.
Od vytvorenia pôvodného prehľadu (niekedy uprostred roku 2004) uplynul nejaký ten piatok, a tak boli pripojené niektoré ďalšie názory (október 2006).
V júni 2008 padlo zopár ďalších pripomienok (znova sú farebne odlíšené). Zaujímavosťou je, že "32-bitová revolúcia" sa podľa všetkého nekoná - namiesto nej pomaly pokračuje "rozumná evolúcia" ;-)
Radi privítame aj Vaše názory a pripomienky na adrese efton na efton bodka sk, relevantné názory do tohoto prehľadu zapracujeme. Zaujímavé by bolo vypracovať - na základe Vašich príspevkov - podobný prehľad aj pre rôzne vývojové prostriedky - prekladače, integrované vývojové prostredia, simulátory, emulátory, programátory, vývojové kity. Preto neváhajte, a napíšte! :-)
Potešilo by nás tiež, ak by sa ozvali distribútori s orientačnými cenami vybraných typov vo vzorkovom a výrobnom množstve, dodacími lehotami či politikou podpory. Tieto informácie vo vhodnej forme radi zverejníme.
Začneme "silnou trojkou", ktorá tvorí v našich krajinách prevládajúcu väčsinu: '51, PIC a AVR.
'51
+ mnozstvo klonov (second sourcing) + mnozstvi vyrobcu se vzajemne kompatibilnim jadrem + notoricka znamost + podpora vyvojovych prostredku + prace s externi pameti + velmi jednoduche dobre se to pise i v ASM + nasobeni a deleni - lacnejsie typy su relativne pomale (12-taktove) - ne vse je bezne dostupne - cena C51 - zastarale jadro, ruzna vylepseni ho sice obchazeji, ale za cenu nekompatibility - nemam je rad a jsem rad ze je musim pouzivat cim dal meneKonkretnejsie o niektorych klonoch:
Atmel 89LPxxxx
++ jednocyklove jadro ++ ISP programovani, 4 draty s naprosto nekritickym casovanim ++ cena + instrukcne kompatabilni s x51 + 4 rezimy IO portu (Bi-dir, open-drain, input-only, push-pull)- připadne mi, že oproti C mají horší EMC - režimy I/O portů mají i nevýhodu, po resetu jsou input, což je nekompatibilní s C- velmi omezeny vyber typu, chybi hlavne neco s AD prevodnikem
Maxim/Dallas DS89C420-450:
+ od 16 do 64 kB FLASH ROM + instrukcia sa vykona za 1 takt => 12*rychlejsi ako obycajna 8051 + oproti obycajnej 8051 ma dva DP s automatickym INC alebo DEC + 1 kB RAM, ktora sa da pouzit aj ako programova pamat + obsahuje BOOTLOADER, takze sa da naprogramovat cez seriovy port + MAXIM posiela vzorky, takze zohnat jeden kus nieje problem + externa pamat sa da pripojit v PAGE MODE, potom trva pristup do externej pamate 1 takt (PAGE HIT) alebo 2 takty (PAGE MISS) + z datasheetu se da vykoukat spousta detailu + v porovnani s 8051 vysoka rychlost + u nekterych typu TCP/IP stack + (male bezvyznamne) integrovany 1-Wire a/nebo CAN radic+ in application programming horní banky flash.- vse se zdalo na pomerne rozumnou volbu, ale co me totalne odradilo byla dodaci lhuta min 25 tydnu:-(- dodací lhůta se průběžně mění, připadne mi to, že dvakrát ročně vyrobí sérii a mezi tím nic. Žít se tím dá.- pri page mode a 33 MHz treba rychly latch (F) a rychlu pamat. - cena (asi 10 $) - problematicka dostupnost v CR
Silabs (exCygnal):
+ rychle + integrovany debugger cez JTAG + analogove periferie, v niektorych modeloch silne zastupene+ možnost přemapovat některé signály na různé piny + někdy možnost interního oscilátoru
RD2:
+ mnozstvo klonov tohoto klonu :-) + viac vyrobcov (Philips (vratane radu 66x), Atmel(+exTemic), SST, Winbond) + velka FLASH + programovanie cez seriovy port + 2x rychlejsie nez standard+ XRAM 1792B, když už ji zmiňujete u konkurence :-)
ADuC:
+ analogove periferie + rychlost
PIC
+ Slusne mnozstvi typu s ruznymi periferiemi - ruzne vybavene + Mnoho ruznych HW periferii primo na chipu + V ramci 8bitu rozumny vykon. + U vyssich typu moznost zapnout PLL a taktovat krystalem do 10MHz 4xrychleji. + Moznost volby zdroje taktovani (X, interny, RC) + Plne staticka architektura, tedy moznost taktovani od 0Hz. + Spolehlivost a dobre reseni resetu a BOD, predevsim u novejsich typu. + Na zbytku HW chipu nezavisly WDT na chipu s moznosti nastavenim casu (ma sve interni taktovani). + Snadne programovani v desce spoju. + U nekterych typu samoprogramovani FLASH + Pamet EEPROM pro data u mnoha typu na chipu. + U mnoha typu FLASH provedeni pameti programu s velkym mnozstvim moznych prepisu. + Podle typu snadna az mene problematicka dostupnost. + Jak SMD tak klasicke provedeni v sirokem rozsahu poctu pinu pouzdra. + V ramci 8bit MCU siroky rozsah velkosti pamati programu i dat + Moznost pracovat s celou pameti dat jako s registry (jednoduche) + Mnoho aplikaci (at uz ruzne kvality) k nalezeni volne na webu i u vyrobce. + V dokumentacich se nic zbytecne netaji, napr. programovaci predpisy. + Dobre se pisi aplikace pocitane na cas trvani instrukci psane v ASM + Plnokrevne brany, prepinane vstup/vystup + Rozumna cena i pro lacine aplikace. + Nizka spotreba a rezim spanku s moznosti buzeni prerusenim i od internich periferii. + extremne mala spotreba pri nizkych hodinovych frekvenciach (10ky az 100ky uA) + Jak pro napajeni z 5V, tak i z nizsich (niekde siroky rozsah napajacich napati) + Moznost zamknout program a u vyssich typu s moznosti zamykat jen neco + U vyssich typu pohodlna prace s 16bit timery + U vyssich typu instrukcni soubor snazici se odstranit vsechno, co by mohlo na architekture PIC cinit programatorovi ci kompilatoru nejake nesnaze. + U nizsich typu dobre zvoleny instrukcni soubor s minimem instrukci, ktere jeste dobre staci k praci. + Typy s moznosti externi pameti programu az 2MB + Málo instrukcí, přehledný ASM kód + Distributor 100 metrů od domu + Snadná přetaktovatelnost díky statické architektuře (mě se podařilo jet na 35MHz s PIC16F628-20P, ale hodně žere) + PIC18, PIC24 nema strankovani pameti programu + spousta nozicek (zjednoduseni DPS) + PIC18, PIC24 spousta datove pameti vyhoda pro C nebo komunikacni moduly - bufry + vetsina modelu uz ma FLASH + rizeni spotreby procesoru - prepinani rychlosti jadra za provozu + mala spotreba + zpetna kompatibilita pouzder - jediny vyrobce (nie celkom - vid nizsie) - chaoticka architektura - nove typy vznikaji "lepenim" - slabsi podpora vyvoje - Dost časté chyby na čipu - nutnost číst errata - Nekdy trochu nevyhodne rozlozeni vyvodu, hlavne pro jednostranne desky spoju. - Nektere periferie jsou nelogicky umisteny (s vylucujucimi sa funkciami) - Bankovani pameti dat predevsim u nizsich typu, vynucene zvolenou architekturou. - Nekdy chyby v dokumentaci, predevsim u ridceji pouzivanych typu. - U nejmensich typu absence HW serioveho kanalu - jednoucelovy (uzivatelovi nepristupny) stack - casti uzivatelov vadi jednoducha architektura, ktora pri vacsich typoch prinasa komplikacie (napr. bankovanie). - vyvolava najemocionalnejsie zamietanie :-) - nemam je rad :-))) -- vyvoj nabral expresni rychlost -- je jich strašně moc, takže výběr vhodného typu je nutno započítat do nákladů na vývoj -- pomaly ICD2 (pro ladeni rosahlych aplikaci je to mizerie) - lidi je nemaji radi * Microchip rozsiruje sortiment tak rychle, ze nove typy nestacim absorbovat :-( * Stare typy se stale dodavaji. Neoznacuji se jako obsolete, ale 'mature'.
Klon:
SX20AC od Ubicomu (ex-Scenix) (takovej vylepsenej PIC16C54) + vysoka rychlost
AVR
+ kvalitni architektura orientovana na Ccko +++ AVRGCC (zadarmo) + Levná součástková základna (ATmega8 za78Kč30Kč, PIC16F628 - nesrovnatelně horší procesor co do periferií za 68 Kč) + rychlost + Jednocyklové instrukce + cena/vykon +++ CodeVision - sice není zadarmo, ale umožňuje v EEPROM a flash vytvářet proměnné a pracovat s nimi "normálně", tedy bez volání spec. funkcí. + Mnoho různých HW periferii současně na čipu a to i u levnějších typů + Většina typů má volitelný zdroj hodin - krystal / "hodinkový" krystal / ker. rez./ RC / interní RC + Mnoho typů má druhý oscilátor pro "hodinkový" krystal se separátním časovačem umožňujícím probouzení (snadná a levná realizace RTC) + Interní RC je laditelný programem ++ Stabilita interního RC dostačuje pro časování seriového portu + K naprogramování v nouzi postačí i 3 rezistory zapojené do RS232 - nepřehledný ASM kód (eliminuje GCC) - jediny vyrobce
Dalej uvedieme niektore alternativne, aj keď minoritné rodiny:
Rabbit
+ cena/vykon + podpora knihoven od vyrobce + rychlost vyvoje - je to procesor a nie mcu - jediny vyrobce - Ccko od ZWordu ma k K&R stejne daleko jako CR k EU
ZiLOG Z8 Encore
+ rychle jadro, vylepsena Z8 (jista podoba s Z80 tu je ale jedna se o "nizsi" radu) + aritmeticke instrukce neni treba provadet pouze pres akumulator (eZ8 ho ani nema) ale lze pracovat primo s pameti RAM + az 64kB Flash, "samoprogramovatelna" tedy moznost BootLoaderu, zapisu konfigurace jako do EEPROM + vetsina typu ma 10bit ADC + az 4 16bit AutoReload citace s CCP, PWM + nektere typy maji 2UARTy, ostatni 1, moznost zapnout IrDA modulaci + OnChip WDT (nechapu to ale je to 24bit citac takze rozsah je xxus az snad nekolik hodin) + POR a BOD (pevny na 2.7V) + OnChip Debuger po jednom vodici (+ GND samozrejme) + DMA pro UART + vyvojove prostredi obsahujici ASM, C, SW i HW Debuger primo od vyrobce. Je v cene vyvojoveho kitu za 39$ (v CR Ecom 1.100kc) + nejdulezitejsi dokumenty Ecom kvalitne prelozil do cestiny. * jadro navrzeno (upraveno z puvodni Z8) pro psani v C * az 4kB RAM * nektere typy maji OnChip Oscilator 32kHz a 4MHz * vyrabeji se 3 rady (642x, 08xx a 04Ax), pouzdra DIL, PLCC, SOIC, SSOP,LQFP * typy jsou navrzeny tak, ze lze menit pri zachovani pouzdra nekolik typu podle pozdavku na RAM, FLASH nebo ADC. * dostupnost v CR (Ecom) i v kusovem mnozstvi ale ceny na 10ks jsou vyrazne nizsi, ceny zhruba od 40 - 400kc * jediny vyrobce, jediny dodavatel v CR (i kdyz to uplne neplati) - nema tak sirokou paletu periferii jako treba PIC, je tedy pouzitim spise jako x51 - napajeni pouze 2.7 - 3.6V ale I/O lze provozovat az na 5.5V - neuveritelne prohazene vyvody - nema externu zbernicu
Motorola-Freescale rada HC(S)12:
+ sto let podporuje CAN, milion aplikaci, zabehnute ++ podpora gcc, gdb a binutils ++ ladici HW (background debug mode) + hodne adresovacich rezimu (aby ne, kdyz to ma 3 registry ;) + 16bit + podpora nekterych zajimavych OS, napr. OSEK/VDX + dobry asm + vela periferii + byva dost pameti + hodne aplikaci + dobra cena pri velkych mnozstvach * znacna nostalgicka hodnota -- architektura navrzena po vzoru 6800 (a jejiho vylepseneho plagiatu 6502) * prima binarni kompatibilita s 8bitovou HC11 * minimum registru (datovej a 2 indexy) = * Von Neumannova architektura - nepripada mi to jako moc dobrej napad, mit 3 registry - 8bit/16bit bastl - zla kusova cena
Motorola-Freescale 68HCS12DP256
+ Ladeni IN-CIRCUIT - Neprívetivé prostredí CodeWarrioru - Zmatkovitá dokumentace, informace útržkovité a nekolikrát na více místech - Drahé vývojové prostredí - Potrhlí profesori, kterí jej vyučují - nechová se jak má - nemám ji rád
TI MSP430:
+++ podpora gcc + pomerne dobry vyber periferii + 16bit architektura + velice dobra dostupnost jak velych mnozstvi, tak i samples + velice dobry pomer cena/vykon u nekterych MSP - obcas horsi dokumentace - 3.3V verze neni pro pinouts 5V tolerant - nema externu zbernicu
Renesas R8C
+ instrukcia RMPA +- na zmenu hodnot niektorych specialnych registrov, napr PD0 (port direction), treba najprv povolit pristup (vypnut protect), co pri zaciatkoch moze viest k nepochopitelnym chybam, preco to nefunguje. + lahky prechod na vykonnejsie procesory, M16C a M32C + LED driver port - pre zaciatocnika je spociatku trochu problem zorientovat sa vo vektoroch preruseni a ich inicializacia v C
ARM:
+ 32 bit RISC + GCC + rozsireny standard, mnozstvo klonov (aj ked navzajom nie uplne kompatibilnych) + JTAG debug+ veľa nadšených +ov od Jirku Bezstarosti (nemám silu to prepisovať do bodov)
Poznámka na záver:
Očividne sa v česko-slovenskej konštruktérskej a "bastličskej" praxi málo využívajú mcu japonských výrobcov (napr. Renesas (=Mitsubishi+Hitachi), Sharp, NEC, Toshiba, Fujitsu...), ďalej rady mcu od NationalSemiconductor(COP), STM, Infineonu, viacero výkonných rodín Motoroly (dnes Freescale) atď.