[an error occurred while processing this directive]
Не надо "гы-гы"
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
миниатюрный аудио-видеорекордер mAVR

Отправлено DP 05 июля 2002 г. 09:39
В ответ на: Гы-гы отправлено асматик 05 июля 2002 г. 09:06

Действительно, в PIC16 это было несколько кривовато. Кстати, не кривее, чем у многих других фирм.
Дело в том, что выполняя, например, переключение одно ноги порта (типа bsf PORTB,3) считывается порт целиком, модифицируется этот бит, затем весь порт выпихивается обратно. Причём чтение идёт прямо с ног порта, а запись - в регитр-защёлку.
Если другая нога порта сконфигурирована на выход, выставлен единица, но, вдруг там, при считывании оказался ноль (например - большая ёмкость нагрузки и единица просто не усрела дорасти до нужного уровня), то этот ноль считается и запишется обратно, но уже в защёлку.
В итоге получаем полный бардак в порту.
Встречалось крайне редко. Решалось просто - создавалось "зеркало" порта. Накладные расходы, опять-же.
В PIC18 сделан доступ к регистру-защёлке. Теперь, если хочешь получить информацию - читаешь порт, хочешь изменить состояние выходов - манипулируешь с защёлкой.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru