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