tgoop.com/psauxww/1343
Last Update:
Как разработчик софта для ембеда, периодически дорываюсь до железа.
На этой неделе моей жертвой стал PWM-контроллер PCA9685, который должен был крутить несколько моторов SG90 и один SG5010.
Шаг первый. Настройка. PCA9685 имеет 4 адреса, на которых может слушать на I2C-шине. Как правило, производитель раздает адреса 40-43h или 70-73h. За то, какой адрес будет активен, отвечают первые 4 бита регистра MODE.
Подумав, что это будет интересно - записать в MODE 0, я так и сделал. В результате чип пропал с шины со всех адресов и даже не помахал на прощание.
Приуныв, но изучив мануал, я нашел решение - специально для таких дебилов производитель разрешает подать на питающую ногу 0.2V, после чего чип делает factory reset.
Чип на свою голову вернулся и даже один раз крутнул мотор. Но потом потащил плату, она ударилась задницей об ethernet-шилд малины, к которой всё это было подключено и весело задымилась.
После осмотра выяснилось, что к счастью сгорел только CJ2305 - МОП, отвечающий за защиту от переплюсовки. Дальше было некоторое время чудес - контроллер прекрасно крутил 2 мотора SG-90, но напрочь отказывался работать с SG5010.
Причина выяснилась только на следующий день - труп транзистора пропускал достаточно ампер, чтобы питать два SG90, но на один большой SG5010 его не хватало. После повторого осмотра платы, выяснилось что её производитель тоже предусмотрел средство для дебилов - специально возле дохлого МОП-а с платы выведено два контакта, которые ни с чем не контачат, зато на них удобно напаять жучок.
После чего всё наконец заработало. Пойду-ка я лучше код писать...
BY Segment@tion fault
Share with your friend now:
tgoop.com/psauxww/1343