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