Архив метки: I2C

Зависание DS2482

Разгадана загадка зависания.

Идея подключить питание датчиков вместо +3.3В на сигнал SCL была на очень хорошей, надо все же внимательно смотреть на ключик на корпусе прибора и проверять пайку, чтобы не было сюрпризов.

Забавно, что устройство некоторое время работало, питая DS18B20 синхроимпульсами 😀

Драйвера для 1-wire устройств под STR750 процессор

Драйвер DS2482 для обращения к 1-wire шине.

STR750_DS2482_i2c_1wire_driver_v1.0

Поиск по 1-wire шине. Используется DS2482 1Wire_Triplet команда, которая при необходимости может быть заменена на две команды чтения и одну команду записи, согласно APPLICATION NOTE 187 1-Wire Search Algorithm

STR750_1wire_search_v0.1

Драйвер термометра DS18B20 подключенного к 1-wire шине через DS2482-100

STR750_DS18B20_driver_w_DS2482_v0.1

Проблемы со связью по I2C шине STR750 <-> DS2482-100

Возникла проблема, в процессе работы с шиной устройство перестает отвечать совсем, после перезапуска дебаггера тоже зависает на проверке last_event.

Надежно помогает только сброс по питанию.

Выяснилось, что самым неприятным в работе I2C протокола на STR750 является то, что если не выдерживается алгоритм работы с ACK non-ACK ответами слейвам по шине — то они отваливаются наглухо и некоторое время перестают реагировать на запросы, завешивая всю шину. Надо проверять правильность передачи non-ACK байт.