Na, ezt nem is gondoltam volna, hogy a C fordító léte dönt... Mondjuk én nem értek a C-hez, de bonyolultabb dolgokat nyilván egyszerűbb lenne abban csinálni, mint assembly-ben (pl. robot vezérlése). Viszont idő-kritikus dolgokat meg inkább assembly-ben lehet írni.
Nem csak az dont, az is. En csinaltam kevert dolgokat is, csak assembly-ben, meg csak C-ben is. Igaz semmi igazan komoly dolgot ... Es ugye nekem az is fontos, hogy windows-os baromsagok nem erdekelnek, szoval legyenek linux tool-ok ala. Mivel windows-t nem hasznalok, soha nem is hasznaltam, nem is fogok. A C fordito persze csak egy pelda volt, van sok mas tool is, ahol erezheto, hogy AVR_re van ingyenes, raadasul open source, windows es unix-ok ala ugyanugy letezo stb megoldas, mig PIC-nel sok esetben joval behataroltabbak a lehetosegek.
A WREG ugyanaz, mint a Z80-nál az akkumulátor.
Igen, de ha mar egy tok uj architekturat tanul meg az ember, es valaszthat (PIC/AVR) akkor nyilvan az tetszik, ahol nincs kb egyetlen kituntetett regiszter, hanem 32db szabadon hasznalhato
Nyilvan Z80-nal (vagy pl 6502-nel is) adott a nem RISC CPU-k jellegzetessege, a kintuntetett regiszter, amit szokas akkumlatornak nevezni, valoban.
Viszont ami érdekes a PIC-nél, és nehezen szoktam meg, hogy a memóriacímeken lévő byte-ok egyben a regiszterek is (file-register-nek hívják). Tehát ha pl. van egy 368 byte-os RAM-om, akkor az olyan mintha lenne 368 db általános célú regiszterem is.
AVR-nel is elerheted elvileg a (adat) memoria "reszekent" a regisztereket, ha nagyon akarod. Csak ott nem igazan van erre igeny, mivel van 32db "valod" register, es legtobb opcode tudja hasznalni mindet, ami azert eleg szokott lenni ....
A lapozás tényleg elég bonyolult, de gondolom ez amiatt van, mert 14 bitesek az opcode-ok, és abba nem fér bele az utasítás és a cím is egyszerre, pl. a CALL és GOTO utasítás esetén 11 bit a cím, 3 bit maga az utasítás, de simán lehet 2kB-nál nagyobb is a programmemória.
Hat igen, AVR korszerubb, eleve a program memoria (flash) 16 bites (egy opcode elfoglalhat egyetlen 16 bites word-ot vagy kettot), es 64K cimtartomanyt lenne elerheto a legegyszerubb AVR-n is (ha lenne neki annyi egyaltalan ...).
Órajel: úgy van, ahogy írtad, mert 1 utasítás minden esetben 1 utasításciklus, de az 4 órajelciklussal egyenlő. Viszont a feltételes utasítások kivételével (ami 2 ciklus, ha hamis a feltétel), itt minden utasítás 1 ciklus (4 órajel ciklus) ideig tart. Furcsa is volt az elején, hogy még Z80-os beidegződésekkel kódoltam, hogy gyorsabb legyen a kód, de itt mindegy.
Na igen de AVR_nel, mivel "igazi" RISC, a legtobb utasitas 1 orajelciklus _valojaban_, tehat elvileg itt negyszer gyorsabb mar eleve ... Amelyik utasitas tovabb tart ugymond (pl ugras stb) az is pl csak 2 orajelciklus, tehat meg igy is gyorsabb mint a PIC leggyorsabb utasitasa.
Persze, amugy azert nem teljesen fair a dolog, mert IMHO (bar nem neztem utana) a legtobb kulonbseg abbol fakad, hogy az AVR joval ujabb, igy koreszerubb design. AFAIK PIC-nel is van a 24-es sorozat, ami mar joval tobb hasonlosagot mutat az AVR-rel, es performanciban is kb hasonlo.
Ez az egesz nalam amugy ugy indult el, hogy voltak mindenfele leirasok a neten, ahol irta tobb ember is, hogy PIC-rol AVR-re tert at, mert a PIC tul lassu volt 1-2 feladathoz, mig AVR-rel siman ment. Tipikusan ilyen pl hogy egy atlagos ilyen MCU-val AVR eleg gyors, hogy sw-bol generalj VGA signalt (!), ami egy sima VGA monitorra kotheto. Ennek vannak uber cool valtozatai is, pl egy csavo csinalt egy demot, amiben hang, kep stb van es egy darab AVR (es messze nem is a legnagyobb!) van, imho nagyon cool (ennek van sima PAL tv-s valtozata is asszem)!
http://www.linusakesson.net/scene/craft/