x51 versus AVR (no flame)
Pavel Hudecek
phudecek@tiscali.cz
Středa Únor 15 16:19:32 CET 2006
Pokud opravdu hodláte programovat jen v asm, pak upozorňuji na naprosto hrozný
assembler pro AVR (každá instrukce má několik různých názvů pro různé kombinace
operandů a pod). AVR také oproti 51 nemají instrukci dělení a menší typy ani násobení.
V takovém případě volte raději 51.
Z čistě technologického hlediska jsou klasické 51 oproti AVR poněkud zastaralé:
51
- nutnost externího resetovacího obvodu
- jednotlivé periferie jsou vzájemně více provázané
- málo periferií
- na 1 strojový cyklus připadá 12 hodinových taktů (rychlost do 0,084 MIPS/MHz)
- mnoho operací vyžaduje registr A
- NMOS
- vysoká spotřeba s vysokou statickou složkou
- výstupy spínají jen dolů
- vstupy mají pullup relativně nízké hodnoty
- paralelní programování, vyšší programovací napětí
AVR
- vnitřní resetovací obvod (na vývod není nutno zapojovat nic, nebo jen Ucc)
- části periferií nejsou vzájemně sdíleny
- 1 strojový cyklus na každý hodinový (rychlost do 1 MIPS/MHz)
- drtivá většina operací se dá provádět se všemi registry
- CMOS
- nízká spotřeba se statickou složkou v řádu mikroampérů
- plnohodnotné výstupy s kvalitní 0 i 1
- vstupy mají pullup vysoké hodnoty, který lze i zcela vypnout
- sériové programování při nízkém napětí
- všechny AVR mají vestavěnou EEPROM
Dále jsou k dispozici novější verze 51, které v levnějším provedení
dosahují přibližně stejných vlastností, jako AVR (ale na mě působí dojmem
asi jako když porovnáte vytuněnou Škodovku s Mercedesem v základní výbavě
- obojí umí totéž, ale rozdíl přesto poznáte na první pohled), dražší verze
mají mnoho zajímavých vlastností (velká paměť, méně taktů na instrukci,
speciální periferie).
Jeden příklad z praxe: V práci jsem dostal desku s 51, RTC, baterkou, budičem sběrnice,
nějakými hradly, hromádkou tranzistorů a spoustou odporů - jednalo se
o elektronický úhloměr s LED displejem, zákazníkovi vadilo, že při větší rychlosti
otáčení ztrácí impulzy a displej poblikává. Po delším bádání jsem zjistil, že program
již dále zrychlit nejde. Desku jsem předělal na AVR, čímž zmizely hradla, budič, RTC
i téměř všechny odpory (zbyl vlastně jen zdroj, MCU, tranzistory a krystal 32 kHz).
Původní přístroj zvládal rychlost asi 200 ot/min a to jen při použití programu v asm
bez přerušení. Nová verze je v C, používá přerušení, vyhodnocuje obě hrany, takže
je přesnější. Nepodařilo se mi ji vyvést z míry ani vrtačkou s 1500 ot/min
(po cca 10 minutách točení nechyběl ani jeden impulz, přestože jich bylo 2000/ot.
PH
From: "Igor Sedlák"
> Casto se tady vedou spory na tema "co je lepsi". Ja jsem se k jednocipum dostal
> na VOS, docela me to bavilo, dokonce jsem si pak koupil jednoduchy programator,
> ale nejak jsem se k tomu par let nedostal. Ted bych chtel oprasit svoje vedomosti
> a obcas si zase neco malo jen tak pro poteseni naprogramovat.
>
> Pro x51 mam v supliku par MCU (i skvelych a jinak nesehnatelnych Dallasu), zanovni
> programator a v hlave zakladni znalosti, psat hodlam v ASM.
>
> O AVR vim jen tolik, ze je asi v necem vecech lepsi a ma free vyvojove prostredi
> (to me zatim nepresvedcuje, v ASM se mi orientuje dobre a slozitejsi projekty
> delat nebudu).
>
> Da se nekde najit pekne povidani (cesky) o vyhodach-nevyhodach obou architektur.
> Kdyz uz znovu "zacinam", jestli to nemam vzit z jineho konce - trochu me odrazuje
> se ucit neco noveho bez spravne davky inspirace..
>
> Prosim at z toho zase neni valka obou taboru ;-)
Další informace o konferenci Hw-list