EFTON

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 mene
Konkretnejsie 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 za 78Kč 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ď.