Цитата(diper @ Apr 20 2007, 10:29)

Компилер предупреждает что не может обеспечить "атомарность" обращения к _Time
Не совсем так. Он предупреждает, что в выражении кроме volatile _Time есть еще одна volatile - T0TC, и порядок доступа к ним отдан на откуп компилятору и может зависить от чего угодно. Чтобы избежать такого варнинга надо просто завести временную переменную:
Код
{
uint32_t Tmp = T0TC*3.39084e-8;
_Time += Tmp;
}
Теперь компилятор видит, что вы хотите сначала прочитать T0TC а потом _Time и неоднозначности не возникает. А ноги растут из того, что доступ к одной volatile - переменной может изменить значение в другой (скажем чтение старшего байта результата АЦП у AVR помещает новое значение в пару младший-старший). И тогда порядок доступа будет очень важен.