Перейти к содержанию
    

Софтовый I2C. Проблема

Возникла трабла с реализацией софтового I2C на чипе LPC2919 старой ревизии, что не поддерживает аппаратный I2C.

Девайс - магнитный компас HMC5843.

Кое-что получилось - точнее получить ID устройства, и оно корректное.

А вот чтение регистров осей выдает 255. При этом аппаратный TWI, заюзанный в Атмеле, выдает корректные значения.

Может я что проглядел при чтении спецификации? Кому не влом, посмотрите код...

 

http://www.everfall.com/paste/id.php?xpg3ml1jrw2h

 

Или киньте в меня уже готовым, 100% рабочим. Потому как то что я видел в сети что-то мне не внушает доверия...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По-моему у вас типичная ошибка софтовой реализации I2C. Управляющие выходы МК должны реализовывать два состояния: лог 0 и Z-состояние. Выдавать лог.1 на шину нельзя! Вместо выдачи лог.1 вы должны менять функцию пина, вместо выхода делать его входом GPIO.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

rezident, да, действительно. Все заработало =)

 

ukpyr, не пробовал, но спасибо за сотрудничество! =)

 

Энтомолог, естественно, я их внутренней подтяжкой подключаю.

 

Вот что вышло:

http://www.everfall.com/paste/id.php?r69suvrui9mr

Я там код немного прокомментил - если кому надо будет - пожалуйста.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...