Jak vynutit sekvencni provadeni prikazu u GCC ?
milger
milger na pobox.sk
Pondělí Únor 24 18:21:01 CET 2014
Ja mam za to, ze prave to "volatile" donuti kompilator pristupit na HW
(do pamati), neoptimalizovat premenne na registroch a neporusit
sekvencny beh programu.
Hodne to pouzivam aj pri casovani na HW (SW SPI napr.). Akurat ze nie
pre GCC.
Milan
On 24. 2. 2014 17:07, Jaroslav Buchta wrote:
> 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
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list