blew_zc 0 25 апреля, 2011 Опубликовано 25 апреля, 2011 · Жалоба Возникла трабла с реализацией софтового I2C на чипе LPC2919 старой ревизии, что не поддерживает аппаратный I2C. Девайс - магнитный компас HMC5843. Кое-что получилось - точнее получить ID устройства, и оно корректное. А вот чтение регистров осей выдает 255. При этом аппаратный TWI, заюзанный в Атмеле, выдает корректные значения. Может я что проглядел при чтении спецификации? Кому не влом, посмотрите код... http://www.everfall.com/paste/id.php?xpg3ml1jrw2h Или киньте в меня уже готовым, 100% рабочим. Потому как то что я видел в сети что-то мне не внушает доверия... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 25 апреля, 2011 Опубликовано 25 апреля, 2011 · Жалоба По-моему у вас типичная ошибка софтовой реализации I2C. Управляющие выходы МК должны реализовывать два состояния: лог 0 и Z-состояние. Выдавать лог.1 на шину нельзя! Вместо выдачи лог.1 вы должны менять функцию пина, вместо выхода делать его входом GPIO. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ukpyr 0 25 апреля, 2011 Опубликовано 25 апреля, 2011 · Жалоба попробуйте это: i2c.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Энтомолог 0 25 апреля, 2011 Опубликовано 25 апреля, 2011 · Жалоба Насколько я помню, нужен подтягивающий резистор на плюс, килоом 20. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blew_zc 0 25 апреля, 2011 Опубликовано 25 апреля, 2011 · Жалоба rezident, да, действительно. Все заработало =) ukpyr, не пробовал, но спасибо за сотрудничество! =) Энтомолог, естественно, я их внутренней подтяжкой подключаю. Вот что вышло: http://www.everfall.com/paste/id.php?r69suvrui9mr Я там код немного прокомментил - если кому надо будет - пожалуйста. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться