Глюконат
Есть некая плата на основе AVR. К ней подключено два однотипных устройства, различающихся только адресом. Конкретный адрес того устройства, с которым идёт обмен, хранится в статической переменной, доступ к которой имеют только две функции, назовём их условно GetAddress() и SetAddress() (похоже на приватные данные и два метода доступа к ним в C++). Непосредственно значение переменной больше никто поменять не может (не должен, точнее), равно как и заглянуть в неё, минуя соответствующую функцию.
Для пущего благолепия обе функции в консоль пишут инфу о своём вызове и результате работы.
Так вот, сначала я делаю SetAddress(0), работаю с нулевым устройством (все библиотечные функции обращаются строго к GetAddress() - пусть это создаёт некий оверхед, но зато я могу контролировать процесс), потом делаю SetAddress(1) и всё повторяется.
НО! С некоторых пор какая-то неотождествимая падла меняет значение этой переменной. Причём не абы как, а только на 48 или 61 (десятичные числа). Может, и ещё какие-то характерные значения есть, я не проверял. Вызов SetAddress() только один на весь цикл работы. А GetAddress() сначала сообщает правильное значение переменной, а потом вдруг изменившееся.
Память вроде нигде не перехлёстывается, за массивы не вылезаю, вообще в ОЗУ места ещё дофига.
Что за херотоооааааааАААААААААА?!
Для пущего благолепия обе функции в консоль пишут инфу о своём вызове и результате работы.
Так вот, сначала я делаю SetAddress(0), работаю с нулевым устройством (все библиотечные функции обращаются строго к GetAddress() - пусть это создаёт некий оверхед, но зато я могу контролировать процесс), потом делаю SetAddress(1) и всё повторяется.
НО! С некоторых пор какая-то неотождествимая падла меняет значение этой переменной. Причём не абы как, а только на 48 или 61 (десятичные числа). Может, и ещё какие-то характерные значения есть, я не проверял. Вызов SetAddress() только один на весь цикл работы. А GetAddress() сначала сообщает правильное значение переменной, а потом вдруг изменившееся.
Память вроде нигде не перехлёстывается, за массивы не вылезаю, вообще в ОЗУ места ещё дофига.
Что за херотоооааааааАААААААААА?!