1 июля 2014 г.

Arduino DUE + 24LC256

В предыдущей статье я упомянул, что настройки будут храниться в EEPROM. Вот, наконец, приехали заказанные мной 24LC256 и выдалась свободная минутка. Откровенно говоря, думал, что все взлетит с полпинка, но...


Как говорится, не для того придуманы сложности, чтобы обходить нас стороной. Как известно, Arduino DUE имеет два TWI (I2C) интерфейса. На первом у меня висит датчик атмосферного давления. Теоретически, может быть подключено 127 устройств. Посему, я был крайне удивлен, когда попытка "поговорить" с памятью полностью провалилась. Подключение микрухи к Arduino MEGA показали, что она рабочая. Исключив все остальные устройства, я оставил только контроллер и eeprom. Результат, как я и предполагал, был нулевым. Интернеты упорно молчали о возможных причинах "несговорчивости" чипов (собственно, это и послужило причиной написания этой заметки). Пришлось делать то, что современные программисты считают самым большим грехом: читать Datasheet! А в нем оказалось много интересного и важного. Например, что неплохо было бы линии SDA и SCL притянуть резисторами 2.2-10 кОм к питанию, что я и сделал. А заодно и перевесил память на второй интерфейс TWI (не пустовать же ему). После этого приведенный на картинке код успешно заработал. Код привожу картинкой, потому как в нем нет #define'ов, и простой копипаст работать не будет. В принципе, примеров работы с eeprom по I2C в интернетах хватает.

Комментариев нет:

Отправить комментарий