Chce to nejaky poriadny flame... Co tak o jednocipoch? ;-)

Jiri Bezstarosti jiri@bezstarosti.cz
Úterý Červen 10 02:31:00 CEST 2008


Beznejsi 32bity se daji koupit i v kusovce. Napriklad rada AT91SAM7Sxxx 
neni problem a neni to ani drahe. Mam je v par vecech s jsem spokojen.
Ale ze mohou jit uvedene osmibity nekam, nelze souhlasit. Zkusim popsat 
situaci 8bit a 32bit sveta se zamerenim se spise na nevyhody 32bitu.

Je spousta aplikaci, kde bohate staci a prece jen ty 32bity nebyvaji v 
SO8 nebo DIP8 a malokdy se pro 32bit vytocite na jednostranne desce. Kdo 
pracuje jen s klasikou, s 32bity si moc neskrtne.

Nektere 32bity maji interne stabilizator napeti pro jadro, jine ne a 
musite jej dat externe - stabilizator navic.

V kazdem pripade jsou to low-drop stabilizatory a potrebuji na tom 
napeti jadra jeste kapacitu, ne-li dve paralelne. Bum prask a mate kolem 
32bit MCU 7 kapacit a to jste ani nezacal. No abych nebyl skarohlid, u 
nekterych malych, treba LM3S101 (CORTEX-M3) se da vystacit i se 4mi 
kapacitami.

Ted chcete vyssi taktovaci frekvenci a ta se vetsinou dela pomoci PLL - 
bum, prask a mame dalsi 2 kodany a kus odporu okolo.

Pak chcete jako u stare aplikace s PIC, budit vysocesvitivou LED 
nejakymi 20mA. Ale ouha, ona to u 32bitu vetsinou zadna brana neumi. 
Takze jdeme pripojit budic externe. Brany u 32bitu vubec mohou davat 
mnohem nizsi proudy, nez na co jsou 8bitaci zvykli.

Napajeni IO byva typicky 3.3V a vstupy jsou casto 5V tolerant. Jenze ony 
ty vstupy byvaji po resetu opatreny pull-upy a dokud je zapnuty pull-up, 
nesmite tam tech 5V privest. Takze pokud to chcete vyuzit u neceho, co 
Vam muze dat 5V na vstup driv, nez se MCU vzpamatuje, musite pouzit 
oddelovac a zapnout mu vystupy az v okamziku, kdy uz jsou pull-up 
shozeny v programu. Najednou mate dalsiho brouka na desce.

U novejsich typu najednou zjistite, ze se trochu neco nepovedlo. To se 
stava i u osmibitu. Jenze treba Luminary utekla dost podstatna vec. 
Jadro totiz dostane napeti az po IO, takze IO uz bezi a jadro ne a muze 
vzniknout klikanec na IO, proste to vyhodi ven uroven. Takze Vam 
doporuci, aby se snizila kapacita na napeti jadra na minimum, kam az to 
jde (tady myslim 1M), aby ty klikance byly alespon co nejkratsi. Hezke, ze ?

Nekterym 32bitum se muze o presnosti ADC, jake maji treba PIC, nechat 
jen zdat. Je ale pravda, ze zase byvaji rychlejsi.

Obcas narazite na to, ze existuje nejaka periferie s necim navic, oproti 
8bitum, jako napriklad HW handshaking na seriove lajne. Jenze v errate 
zjistite, ze neni moc k pouziti. Tohle je konkretne pripad AT91SAM7Sxxx.

U mnoha 32bitu najdete uzasnou taktovaci frekvenci a 1 cyklus na 
instrukci. Ale zase prijde jenze ;). Zakopany pes je v tom, ze z FLASH 
vetsina 32bitu umi bezet do nejakych dejme tomu max. 24 az 30MHz, pak uz 
musite zapnout waitstaty, kdyby nekdo netusil, proste se pocet waitstatu 
(cyklu) ceka na pamet. Takze pak uz to tak desne rychle nevypada. No 
ano, muzete program hodit do SRAM a odtamtud pustit bez onech waitstatu 
(cekacich cyklu) a pak opravdu pobezi onen MCU na maximum, ale u 
rozsahlejsiho softu to uz take nemusi jit a nebo to chce vyssi typ s 
vice SRAM. Pochopitelne mohou ze SRAM bezet i jen kriticke casti kodu a 
waitstaty se prepnou vzdycky behem behu v te SRAM.

Mektere MCU maji jednotku (typicky LPC od NXP), ktera vlastne dela CACHE 
pamet mezi FLASH a jadrem. Nebavime se ted o typech s pameti SDRAM, kde 
je CACHE jasna (i kdyz existuji i typy s SDRAM a bez CACHE pameti, jako 
napr. AT91SAM7SE512). Ale ani takove jednotky pochopitelne vec plne 
neresi (i kdyz jiste je to fajn), FLASH je proste omezena pristupovymi 
casy a tak at vypada 72MHz jak chce dobre, vysledek az tak skvely neni.

Neprijemne muze byt u 32bitu i to, jaka je rezie s obsluhou preruseni. 
Smerem k novejsim typum je to lepsi.

Reklo by se, ze muze byt parada, ze mame 32bit najednou a ze si 
nastavime treba 20 dratu zaroven. Ale ouha, pokud jde o nejaky mensi 
typ, muzete se vsadit, ze periferie kterou k tomu jeste potrebujete, 
bude sedet tak blbe, ze mate branu hloupe rozpulenou a tak se prace s 
vystupem trochu protahne, protoze musite bity rozstrkat podle potreby. 
Problem v tom jiste neni a ani nic neznameho z osmibitu, jen chci 
napsat, ze je blahove si predstavovat, ze vezmu maly 32bit a budu si 
nastavovat zaroven spodnich 20bitu brany primo necim, jak to je ve 32bit 
cisle bez prehazovani bitu. O tom, ze by byly IO serazeny nejak rozumne 
a neprolinaly se ruzne brany vedle sebe na pouzdre, o tom si radeji 
nechte zdat, jednostranky desky tady nestaci. Navic aby se obsahly ruzne 
periferie a sedely na stejnych IO, budete mit u nekterych MCU misto 32 
IO na jedne brane, 32 IO, ale klidne na 2 nebo 3 ruznych branach - 
jednou ranou je vsechny zaroven nenastavite.

Co je u 32bitu vetsinou velke plus, je DMA prenos. Pustite ADC prevod na 
500kSps a nechate to sypat primo do pameti bez ucasti jadra, s vyjimkou 
stavu, ze uz je pamet k DMA plna a treba prerusenim se chce dalsi.

Dalsi vyhodou 32bit je mnozstvi pameti, byva ji oproti 8bitum opravdu 
vyrazne vice i na "malych" typech.

Samozrejme je vyhoda take onech 32bit, pri slozitejsich matematickych 
ulohach je to slusne znat.

Pro 32 bity se da casto kompilovat v GCC, takze mate kompilator C 
zdarma, coz u 8bitu az tak obvykle neni. Navic 32bity casto obsahuji 
JTAG, kterym muzete programovat a debugovat, pricemz to neni az tak 
slozity HW a neni to pro kazdeho vyrobce, nekdy i jen typ, jiny 
programator, jak jsme zvykli u 8bitu.

Ono neni zdaleka vsechno zlato co se trpyti a tak v nekterych aplikacich 
si reknete, zaplat panbuh za 8 vyvodovy 8bit s jednim kodanem na 
napajeni ;). Sice do nej tak pohodlne nenabusite superalgoritmus v C, 
ale na druhou stranu, malokdy od nej vubec budete potrebovat i jen float 
cisla.

Je pozde v noci, takze pokud zde najdete nejake nesrovnalosti ci 
blaboly, prosim, opravte mne a nebo doplnte, taky mi neprijde na mysl 
vsechno hned ;).

--
Jiri Bezstarosti

Miroslav Sinko napsal(a):

>Noooo.. na uvedenom zozname vidim Freescale typy tak poskromne. Ako som uz inde pisal, bol som na ich seminari a tam robili prezentacie rodin MCU od vymyslu sveta. od 8-bit az po 32-bit (snad ich neurazam, ze na viac si nepamatam) a pozor! od 1-jadrovych po predpokladane 64-jadrove!! s tym, ze v sucasnosti maju na trhu myslim 4-jadrove. Padla tam otazka, ze naco sa tak daju vyuzit tie 64-jadrove... odpoved bola "to sa mna nepytajte".
>
>Realne dnes vramci periferii na MCU ponukaju klasicke RS232, SPI, I2C, apod... USB slave, ale aj host, radice DRAM a co ja viem co este.. no s PIC-mi a AVR-kami mozme ist kamsi. Ma to vsak aj druhu stranu.. ponukaju nejake vzorky a aj okliestene vyvojove prostredie zdarma. Ale skuste si kupit napr. par 10-tok, 100-viek kusov na maloseriovu vyrobu...
>
>miro
>
>PS: to pisem len tak vramci flame, ziadne skusenosti ani hlbsie vedomosti o zmienovanych MCU nemam, ale ked uz som bol na tom seminari...
>  
>



Další informace o konferenci Hw-list