Исправление проблемы с I2C-адресом в библиотеке TinyWireS

Эй, я недавно опубликовал проблему, которую я имел с библиотекой I2C (ведомого) TinyWireS. Я не мог использовать подчиненные адреса выше 63 по любой причине.

Теперь я хочу начать новую тему, чтобы исправить эту проблему:

Вы можете найти больше информации о моем проекте в моем последнем посте Вот Код для главного и подчиненного и схемы остается прежним.

Что я узнал:

Когда мастер пытается связаться с подчиненным по определенному адресу, он вызывает функцию ISR (file: usiTwiSlave.c строка: 569). Эта функция даже вызывается, если мастер отправляет другому ведомому, потому что он проверяет, является ли адрес правильным или нет.

НО:

Когда я говорю мастеру подключиться к ведомому> 63, ISR никогда не выполняется. К сожалению, я не выяснил, где вызывается функция ISR. Я искал все файлы, но не смог найти ни одной «родительской» функции.

Я почти уверен, что близок к тому, чтобы найти ошибку, но у меня мало опыта работы с C / C ++.

Я надеюсь, что вы можете помочь мне!

1

Решение

Я не знаю, исправили ли вы эту проблему, но из моего анализа я подозреваю, что проблема немного сложнее, чем вы предлагаете. Я не верю, что наверняка проблема в TinyWireS (хотя, возможно, она и есть), и моя причина сказать, что мой подчиненный код работает нормально с большинством мастеров, и это только когда я запускаю ESP8266 как мастер, который я вижу ту же проблему, как вы описываете. ESP8266 отлично работает как ведущий с не-ATTiny85 ведомыми на любом адресе. Без осциллографа я не могу быть уверен, но я думаю, что, вероятно, будет проблема синхронизации с запуском i2c и первым битом адреса, когда это 1, что означает, что условия для генерирования прерывания из USI не являются встретились. Учитывая, как мало людей сообщают о проблеме на ATTiny85 8 МГц, я не исключаю, что проблема с синхронизацией связана со стороной Master, но я почти уверен, что это тонкая проблема с синхронизацией. Я также должен упомянуть, что очень редко я могу распознать запрос на ATTIny85, когда он имеет высокий адрес, но это редко и снова указывает на проблему синхронизации.
Я надеюсь, что это поможет создать картину этой проблемы, и если у вас есть возможность использовать шину i2c, я подозреваю, что проблема станет очевидной.

0

Другие решения


По вопросам рекламы [email protected]