Jak vynutit sekvencni provadeni prikazu u GCC ?

František Burian BuFran na seznam.cz
Pondělí Únor 24 13:16:59 CET 2014


Stačí mít volatile jen ampcorr, adc_chvals a pwmAmplitude. (předpokládám 
pwmAmplitude a adc_chvals jsou zpracovány v ISR)


---------- Původní zpráva ----------
Od: Jaroslav Buchta <jaroslav.buchta na hascomp.cz>
Komu: HW-news <hw-list na list.hw.cz>
Datum: 24. 2. 2014 13:14:21
Předmět: Jak vynutit sekvencni provadeni prikazu u GCC ?

"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?


---
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ší část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20140224/d6f7975f/attachment.html>


Další informace o konferenci Hw-list