Доброго времени суток!
Появилась надобность управлять несколькими 14-ти сегментными дисплеями.
Для реализации задачи я решил воспользоваться драйвером MAX6955 (
даташит)
Драйвер управляется через I2C. Для установки адреса устройства, используются пины AD0 и AD1, которые можно соединять с питанием, землей или сигнальными линиями. Всего 16 комбинаций, представленных в таблице 5 в даташите. В даташите же сказано, что адрес устройства это 7ми битное число.
Плата разрабатывалась в Proteus'е - там же и успешно просимулировал программу для
ATMEGA328.
И вот тут начинается самое интересное - адрес MAX6955 в Proteus'е выставляется в свойсвах элемента, т.е. ему наплевать на подключение ног AD0 и AD1. Но фишка не в этом, а в том, что в выпадающем списке адреса устройств только 8ми битные, вроде 0xC0 и т.п. При использовании в прошивке ATMEGA328 данного адреса, виртуальный драйвер работал корректно.
На практике, я присоединил обе ноги AD0 и AD1 к питанию, так что адрес девайса получился 0b1100101. Но как я не пытался, MAX6955 не отзывается ни на одну комманду. Проверял схему 100 раз, тыкал осциллографом и на входы и на выходы - на входах виден сигнал I2C, на выходах тишина.
При этом, я нашел несколько примеров и библиотек в сети - люди выкладывали код работающих девайсов, и в части примеров используемые адреса MAX6955 8ми битные, что противоречит даташиту.
Код пишу в CodeVisionAVR. По примеру кода из этого поста
http://www.edaboard.com/thread288875.html.
Кто-то может посоветовать мне, как мне запустить девайс?
Спасибо.