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