Разбор проблемы чтения input status панелью (решено)
Картинка номер один: "новая" карта памяти, неудачное чтение
Картинка номер два: "старая" карта памяти, удачное чтение
Теперь словами. Панель по какой-то причине не может или не умеет считывать нужное количество переменных. Она пытается прочитать то количество переменных, которое целиком помещается в одно слово. А одно слово - это 16 битовых переменных.
В итоге, вместо запроса на чтение трёх переменных она отправляет запрос на чтение 16 переменных. Т.к. в режиме "новой" карты объём памяти оптимизирован, то оставшиеся 13 переменных взять не от куда и поэтому контроллер отвечает флагом "общая ошибка".
В режиме же "старой" карты, в памяти контроллера безусловно выделяется буфер на 1024 переменные. В результате при запросе 16 переменных контроллер отдаёт требуемое количество вне зависимости, использована ли эта память в программе или нет.
Решение проблемы: нужно объявить в программе 16 переменных, пусть и не все из них будут использоваться. Рисунок три.
__________________
Программа делает то что написал программист, а не то что он хотел.
Добро всегда побеждает зло. Кто победил - тот и добрый.
|