Здравствуйте!
Правильно ли я понимаю методику работы с PCF8575?
Обмен идет парой байт: PA и PB.
Каждый раз надо либо передавать на плату два байта, либо читать оттуда два байта.
Каждый бит байтов PA7-PA0 и PB7-PB0 - это порт платы.
Сначала надо настроить порты на вход.
Для этого надо нужные биты в нужных байтах установить в единицы и передать эти два байта на плату.
Например: 11110000 00000000 PA7-PA4 - входные порты.
Если читаем, то анализируем только биты PA7-PA4.
Перед записью устанавливаем PA7-PA4 в единицу,
а остальные биты для выходных портов так как надо.
Похоже на правду. Только PCF умеет тянуть исключительно на землю, если правильно помню.
Посмотрите в кодах библиотек:
Ну, если для кнопок, то подтяжка нужна. Без подтяжки умеет, например MCP23017
Озадачили, однако. Я надеялся, что в PCF8575 есть внутренняя подтяжка. Выходит, что, если подключать кнопку между входом и землей, то вход надо подтягивать к плюсу?
Ну, они (выходы) “квазидвусторонние”. Почитайте раздел 8.1 даташита. И там же на стр. 18 есть схема на которой нарисовано подключение кнопки к выходу P5 - там аж два резистора задействовано – одни с пина напитание 100к, а другой с другого конца кнопки тоже на питание.
если с буквой С на конце, без буквы умеет и туда и сюда.
Порты работают по схеме, аналогичной открытому коллектору и оснащены внутренними подтягивающими резисторами. Если в выход записан логический ноль, то открывается выходной транзистор, который принудительно тянет вывод «на землю». Чтение из такого порта всегда будет возвращать ноль.
Чтобы использовать порт как вход, запишите в него единицу. В этом случае внутренний транзистор будет закрыт, а результат чтения будет определяться внешним логическим уровнем, приложенным к выводу. Свободный вывод подтянут к питанию встроенным резистором.
Внутренний резистор, который подтягивает выход к 1 высокоомный, так что единица с этого выхода довольно дохлая, ей толком ничего не поуправляешь, так что ее можно считать , и только.
И про то, что надо парой входов управлять одновременно, я что то сомневаюсь. Я пользовался этой микросхемой, все работает по каждому выходу отдельно. У меня пять трехцветных светодиодов этой микросхемой управляются по одному.
ну это вы зря, я управляю CD4051
С миру по нитке…
ДА! Но релейная линейка с опторазвязкой, которая работает от низкого уровня, работать будет.
А в даташите (#5) какие - то заморочки:
- Резисторы, которые там показаны - внешние или внутренние?
- Там же. Кнопка подключена к P05. Она замыкает выход на землю через резистор. А без резистора нельзя?
Если я правильно понимаю инструкцию.
Там надо в двух байтах выставить нужные биты, и эти байты передать для установки портов по очереди: младший байт, старший.
И в таком же порядке получить эти байты.
В даташите написано, как байты соотносятся с выводами - первый управляет 0..7, второй..
С работой этой платы разобрался. Работаю с ней по методике, описанной в #1. Достаточно библиотеки Wire.h
. Спасибо всем ответившим!