PIC elado
Nagy Endre
gumo at lucifer.kgt.bme.hu
Wed Apr 30 21:28:21 CEST 2003
> > Ha megsem lenne eleg, akkor kipakoljuk a verembe. De 1 kipakolasra juthat
> > tobb millio vegrehajtott ciklus.
>
> A verembe pakolas, es kivetel szintugy mint az osszes memorimuvelet AVR-en
> 2 ciklus, es a sima sts, lds 2 Word hosszuak!
> Mindez a PIC-en egy ciklus egy word (ugras az 2 ciklus ha ugrik), persze
> azt se felejtsuk, hogy a PIC-en lapozas is van, ami ami miatt itt sem
> mindig 1 az 1.
PIC-en miota van rendes memoria es verem?
Meg egyszer: a PIC register file helyett az AVR-en az r0..r32
regisztereket hasznaljuk. Csakhogy ezek mindegyiken kozvetlenul vegezheto
muvelet, nem kell W-be toltogetni. A verem es a memoria ezen felul van,
egy PIC-AVR osszehasonlitasban nincs megfeleloje.
> > mov c,a
> > add c,b
> >
> > Ez 2 utasitas, osszesen 2 orajel.
>
> Es minden input adat, meg output is a regiszterben keletkezik es marad?
Ha PIC-en az input adat b-ben keletkezett, akkor itt is... Igy
osszehasonlithato.
> Akkor minek van az SRAM, nem is kell bele. (meg a port-ok sem ;-)
Valoban nem kell. Foleg azert jo, mert lehet benne allokalni vermet, es
igy kozvetlenul tamogatja a magasszintu nyelveket, meg csomo izgalmas
dolgot lehetove tesz. Assembly-ben is sokkal konnyebb veremmel
programozni.
> > A PIC register file az AVR regisztereivel merheto ossze. Az csak extra,
> > hogy az AVR-en nem eddig tart a vilag.
>
> A file regiszter inkabb atmenet a regiszter es a mem kozott. Nagyon
De nem igazi regiszter, korlatozottak a lehetosegei, sok esetben at kell
tolteni W-be, utana meg vissza. Huncutsag :)
> > Az algoritmus nem azonos, ezert nem osszemerheto. Az AVR eseten ezt
> > valoszinuleg meretre optimalizaltak. De lehetett volna sebessegre is, es
> > akkor a PIC csunyan lemaradna. (Csak a BCD konverzio tipikusan az az eset,
> > ahol nem szamit a sebesseg.)
>
> Lehet, hogy nem az az eset, de lassuk az azonos algoritmust, es a kulonbseget,
> kuld el! Akkor tudunk csak osszehasonlitani, es nem a levegobe beszelni!
En ehhez lusta vagyok... Nem hasonlitgatjuk inkabb az application
notes-ban keszen levo rutinokat? (Az ATMEL-ben van speed optimized es
code optimized is nemelyiknel.)
http://www.atmel.com/dyn/products/app_notes.asp?family_id=607
Pl.
Application Code Size (Words) Execution Time (Cycles)
8 x 8 = 16 bit unsigned (Code Optimized) 9 58
8 x 8 = 16 bit unsigned (Speed Optimized) 34 34
8 x 8 = 16 bit signed (Code Optimized) 10 73
16 x 16 = 32 bit unsigned (Code Optimized) 14 153
16 x 16 = 32 bit unsigned (Speed Optimized) 105 105
16 x 16 = 32 bit signed (Code Optimized) 16 218
8 / 8 = 8 + 8 bit unsigned (Code Optimized) 14 97
8 / 8 = 8 + 8 bit unsigned (Speed Optimized) 66 58
8 / 8 = 8 + 8 bit signed (Code Optimized) 22 103
16 / 16 = 16 + 16 bit unsigned (Code Optimized) 19 243
16 / 16 = 16 + 16 bit unsigned (Speed Optimized) 196 173
16 / 16 = 16 + 16 bit signed (Code Optimized) 39 255
A szorzas nyilvan az ATmega elottiekre vonatkozik (gyakorlatilag elavult).
En megsem a sebessegetol vagyok hasraesve, hanem annak orulok, hogy
rendesen programozhato. Nem kell kerulgetni a hibait, hianyossagait, mert
gondolkodtak, akik terveztek. Van, aki ezert veszi, van, aki a sebessege
miatt, van, aki az ara miatt. Mindegyikben nyero.
Gumo
More information about the Elektro
mailing list