Jak vynutit sekvencni provadeni prikazu u GCC ?

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Pondělí Únor 24 17:07:52 CET 2014


To je mozne, ale neni duvod snizovat prehlednost vypoctu - casu je na to 
dost, da se rici o 2 rady vic nez je potreba a pameti programu zbylo 
taky 40% ;-) Jen se nesmi zakazat preruseni na vic jak cca 15us protoze 
se periodicky aktualizuje PWM pro timer (je to jednoduchy menic na 120V 
sinus jak jsem tu uz neco resil) Funguje docela dobre, vydrzi i zkrat 
diky mekkemu trafu (ale proud merim kvuli kompenzaci poklesu napeti, tak 
jeste pridam do SW vypnuti pri nadproudu)
Zatim jsem pouzil tu konstrukci s volatile, zkontroloval v asm a dal 
poznamku bacha na to do zdrojaku kdybych se k tomu za par let vratil ;-)

Dne 24.2.2014 15:19, Miroslav Mraz napsal(a):
> Nebylo by lépe počítat
>
> amp *= 20019;
> amp >>= 10;
>
> protože ten shift bude rychlejší než dělení ?
>
> Mrazík
>
>
> On 02/24/2014 01:14 PM, Jaroslav Buchta wrote:
>> Pro avr jsem napsal tuto fci:
>>
>> void UpdateAmp()
>> {
>>
>>     cli();
>>     uint32_t amp = adc_chvals[3];
>>     sei();
>>
>>
>>     amp *= 20000;
>>     amp /= 1023;
>>     uint32_t ampcorrr = 45000UL + amp;
>>
>>     cli();
>>     pwmAmplitude = (uint16_t)ampcorrr;
>>     sei();
>>
>>
>> }
>>
>> A problem je, ze deleni 1023 se zaradi pri zapnute optimalizaci az za 
>> cli() coz je samozrejme velmi spatne protoze trva dost dlouho.
>> Pomuze vypnout optimalizaci pro tuto funkci 
>> (__attribute__((optimize("-O0"))); ) a pomuze i pokud obe lokalni 
>> promenne definuju jako volatile - to ale nevim, jestli je spolehlive.
>> Existuje nejaka elegantnejsi metoda?
>>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list


---
Tato zpráva neobsahuje viry ani jiný škodlivý kód - avast! Antivirus je aktivní.
http://www.avast.com



Další informace o konferenci Hw-list