<html><body>Stačí mít volatile jen ampcorr, adc_chvals a pwmAmplitude. (předpokládám pwmAmplitude a adc_chvals jsou zpracovány v ISR)<br><br><p>---------- Původní zpráva ----------<br>Od: Jaroslav Buchta <jaroslav.buchta@hascomp.cz><br>Komu: HW-news <hw-list@list.hw.cz><br>Datum: 24. 2. 2014 13:14:21<br>Předmět: Jak vynutit sekvencni provadeni prikazu u GCC ?</p><br><blockquote>Pro avr jsem napsal tuto fci:<br><br>void UpdateAmp()<br>{<br><br>     cli();<br>     uint32_t amp = adc_chvals[3];<br>     sei();<br><br><br>     amp *= 20000;<br>     amp /= 1023;<br>     uint32_t ampcorrr = 45000UL + amp;<br><br>     cli();<br>     pwmAmplitude = (uint16_t)ampcorrr;<br>     sei();<br><br><br>}<br><br>A problem je, ze deleni 1023 se zaradi pri zapnute optimalizaci az za <br>cli() coz je samozrejme velmi spatne protoze trva dost dlouho.<br>Pomuze vypnout optimalizaci pro tuto funkci <br>(__attribute__((optimize("-O0"))); ) a pomuze i pokud obe lokalni <br>promenne definuju jako volatile - to ale nevim, jestli je spolehlive.<br>Existuje nejaka elegantnejsi metoda?<br><br><br>---<br>Tato zpráva neobsahuje viry ani jiný škodlivý kód - avast! Antivirus je aktivní.<br>http://www.avast.com<br><br>_______________________________________________<br>HW-list mailing list  -  sponsored by www.HW.cz<br>Hw-list@list.hw.cz<br>http://list.hw.cz/mailman/listinfo/hw-list</blockquote></body></html>