AVR-gcc4.0

Szima Gábor sygma at tesla.hu
Wed Apr 5 11:39:42 CEST 2006


Sziasztok!

Nezegetem, hogy mennyire hatekony kodot tud forditani a gcc-4.0.3 AVR-re.

Eleg meggyozonek tunik, szinte ASM hatekonysagu idok jonnek ki. Legjobban az 
tetszik benne, hogy fogom a "sima" linuxos/vindozos forrast, es befordul...

Par aprosag azonban nem tetszik, pl. O2-nel olyan dolgokat is kidobal a kodbol, 
amit nem kene (pl. megszakitasbol allitok egy flag-et, amit egy vegtelen ciklus 
figyel. Erre "rajon", hogy az felesleges, mert ugysem valtozik (de igen, 
IRQ-bol fog :). Van ennek kikuszobolesere kapcsolo vagy programozastechnikai 
fogas?

A masik, hogy a megszakitas-kezeles kisse lassucska...
Ha "ures" a SIGNAL, akkor 24 clk megy el, ha egy egyszeru globalis uint8 
inkrementalasa van benne, akkor 33 clk. Gondolom stack-re kezdi kitenni a 
regisztereket, neha feleslegesen.B
Pl. ugyanaz a 10 lepeses "for" foprogramban 40, IRQ-ban 50 clk-t (plusz 24) 
visz el...

Ezzel lehet valamit kezdeni?

Ja igen, bonusz kerdes. :)
Hogyan erdemes (TIMER1 segitsegevel) nagy sebessegu (Fosc), de 32 bites 
szamlalot csinalni? Mondjuk ez meg konnyu (tulcsordulaskor leptetek egy 16 
bites szamlalot), csak a kiolvasas a huzos... Ugyanis ha ez akkor tortenik, 
amikor epp csordul, akkor valamelyik fele hibas lesz.
Igazabol INT0-ra adott jelek elvaltasainak idejet szeretnem pontosan merni, us 
felbontassal, max. par ms ideig. Ami e felett van, arrol eleg annyi info, hogy 
tulcsordult. A 16 bites szamlalo is eleg lenne, csak a tulcsordulas detektalasa 
kerdeses. Az egyik megoldas az lehet, hogy torlom a TCNT1-et, es a megszakitas 
csak beallitja a tulcsordulas flag-et, de ez akkor nem jo, amikor masra is 
akarom hasznalni az timer-t (pl. idozitesre).



 								-Sygma




More information about the Elektro mailing list