[an error occurred while processing this directive]
|
Действительно, в PIC16 это было несколько кривовато. Кстати, не кривее, чем у многих других фирм.
Дело в том, что выполняя, например, переключение одно ноги порта (типа bsf PORTB,3) считывается порт целиком, модифицируется этот бит, затем весь порт выпихивается обратно. Причём чтение идёт прямо с ног порта, а запись - в регитр-защёлку.
Если другая нога порта сконфигурирована на выход, выставлен единица, но, вдруг там, при считывании оказался ноль (например - большая ёмкость нагрузки и единица просто не усрела дорасти до нужного уровня), то этот ноль считается и запишется обратно, но уже в защёлку.
В итоге получаем полный бардак в порту.
Встречалось крайне редко. Решалось просто - создавалось "зеркало" порта. Накладные расходы, опять-же.
В PIC18 сделан доступ к регистру-защёлке. Теперь, если хочешь получить информацию - читаешь порт, хочешь изменить состояние выходов - манипулируешь с защёлкой.
E-mail: info@telesys.ru