Защелка — это выходная защелка, в которую записываются значения. Порт — это напряжение на фактическом выводе.
Есть несколько ситуаций, когда они могут быть разными. Тот, с которым я сталкивался чаще всего, - это если у вас есть штырь (случайно) замкнутый на землю. Если вы установите защелку на высокий уровень, защелка будет считываться как высокая, но порт будет считываться как низкий, потому что напряжение на контакте все еще приблизительно равно земле.
Другая ситуация, приводящая к тому, что вы описали, — это неправильная настройка пин-кода порта. Я (и все, с кем я работаю) потратили много часов, пытаясь понять, почему наш PIC не работает так, как ожидалось, чтобы в конце концов выяснить, что мы, например, умалчивали об отключении аналоговых модулей. Обязательно просмотрите раздел Порты ввода-вывода -> ПОРТ?, ТРИС? и LAT? регистрируется в техпаспорте. Дополнительную информацию можно получить на вики-странице Microchip, где объясняется, как читать неправильное значение сразу после записи вывода на контакт, подключенный к емкостной нагрузке.
Эта вики-страница также объясняет:
Чтение регистра-защелки порта возвращает настройки выходных драйверов, в то время как чтение регистра порта возвращает логические уровни, видимые на выводах.
Кроме того, вот фрагмент из раздела портов ввода-вывода на 18F14K50 (который должен быть таким же, как и у остальных моделей серии 18F):
Каждый порт имеет три регистра для своей работы. Эти регистры:
- Регистр TRIS (регистр направления данных)
- Регистр PORT (считывает уровни на выводах устройства)
- Регистр LAT (выходная защелка)
Таким образом, в большинстве ситуаций вы будете писать в защелку и читать из порта.
person
Mark Rushakoff
schedule
12.04.2010