fk0, легенда (10.11.2017 11:42 - 11:45, просмотров: 304) ответил SciFi на Нафиг общий случай? Пару раз такое нужно было, всё было просто. Чтение переменной, которая меняется достаточно редко:
Во-первых речь про многобайтную переменную на 8-битном МК. Во-вторых "достаточно редко" -- вообще не аргумент, это вероятностное программирование, которое кончается плохо. Обычно логика такая:
int read_var(void)
{
char hi, lo, t;
t = var>>8;
do hi=t, lo=var, t=var>>8;
while (hi != t);
return hi<<8 | lo;
}
Идея в том, что младшая половина если убежит вперед ничего страшного (если таймер, счетчик), а если старшая, то с неправильной младшей половиной у тебя неправильное значение. Поэтому читай с начала.
[ZX]