Микроконтроллеры - логическая "1" от подтягивающего резистора

Добрый день, по закону i2c мастер не имет право установить порту логическую единицу. Если ведомый немного тормоз, он имет право придавить порт к земле. Мастер должен в этот момент следить, когда логическая единица появится от подтягивающего резистора на порту.

Вопрос: На момент написание кода (программы) - Какое значение присвоить переменной (двунаправленный порт "inout")

i2c_scl = 1'bz;
i2c_scl = 1'bx;
5 года назад от andilevko

2 Ответы



0 голосов
Вопрос вобще не ясен.

Как именно у тебя в схеме происходит активация линии - записью лог 0 или 1 в порт - никому, кроме тебя не известно. Даже неизвестно, что у тебя за контроллер и как ты в своей схеме реализуешь I2C.

В реализации I2C нет портов. Отличие от стандартных двухтактынх транзисторных логических выходов (push-pull) выходных каскажов состоит в том, что каждая линия может в один и тот же момент времени стать как входами для всех устройств (с технической точки зрения это не старшно) , так и выходами (а это чравато там, что если одно устройство с push-pull выдаёт "0", а второе "1", то источник питания будет замкнут через сотвтетствующие транзисторы выходного каскада и сгорят) . Поэтому там применяются выходы с открытым коллетором, который может только притянуть линию к земле (установить "0") , а в пассивном состоянии на линии атвоматически устанавливается "1" подтягивающим резистором. Даже если обы выхода будут нулями, то ток через эти транзисторы понятно не потечёт.

Что за программу ты пишешь, на каком языке, на какой момент времени ты спрашиваешь, для кого - мастери или слейва - не ясно. Любая линия в любой момент может быть либо активна, когда она активно притягивается к земле (всегда будет 0, смысла её считывать в этот момент нет) , либо когда её не трогают (тогда её и считывают, т. к. если другое устройство не притягивает, то будет уровень лог. "1", либо же "0", если другое устройство притягивает) .

Советую не колхозить самому I2C библиотеки, а взять готовую и проверенную ДЛЯ КАЖДОГО КОНТКРЕТНОГО КОНТРОЛЛЕРА (желательно от производителя) либо переписать логику работы на нужный язык, т. к. тут может быть много подводных камней, которые не очевидны, и ты потом потратишь много часов выясня, почему первое чило считывается правильно, а второе - нет, или почему оно время от времени ни с того ни с сего начинает глючить.
5 года назад от Иван Сивопляс
0 голосов
Да кто ж его знает, что ты там колхозишь, и чего там надо присваивать.

Вобще то в случае тугодумности слэйв притягивает линию сцл к земле, а не какой то там "порт"
5 года назад от The Student

Связанные вопросы