Наконец-то добил я аппаратный I2C на STM8: мало того, что из ERRATA несколько "патчей" внести пришлось, так еще и кое-какие косяки свои исправить. Еще я долго бился, пытаясь понять, почему у меня ожидание кое-каких флагов отваливается. Оказывается, sdcc до gcc еще расти и расти: если аргумент макроса не окружить скобками, то он превращается в пустоту...
Вот код на гитхабе, на сосфорже, соответственно, тоже зеркало лежит.
Т.к. поверенных барометров и термометров у меня при себе нет, протестировать качество показаний этого датчика не по чем.
Вот код на гитхабе, на сосфорже, соответственно, тоже зеркало лежит.
Т.к. поверенных барометров и термометров у меня при себе нет, протестировать качество показаний этого датчика не по чем.
no subject
Date: 2015-06-01 11:08 am (UTC)На практике иногда это приводит к полному подвису и захвату линии слейвом.
Много ссылок, хороших и разных по software i2c reset. Например
http://www.analog.com/media/en/technical-documentation/application-notes/54305147357414AN686_0.pdf
Программную проще и универсальнее делать ногодрыгом, этож полностью синхронный интерфейс, в отличие от 1ware. Почему это через задницу совершенно непонятно. Да и 1wire неплохо реализуется на задержках с разрешением прерываний между битами. Всего 3 калиброванные задержки и в одном месте. Но это на сях уже не особо красиво, конечно, зависит от компилятора( хотя задержки можно и опросом таймера сделать) и требует 60мкс запрета прерываний.Зато легко позволяет много линий датчиков обслуживать.
>Потом еще надо будет все это на STM32 перенести: все-таки, STM8 — это игрушка
на stm8, да с 8к памяти можно многое сделать. Если не секрет, что у вас за задачи?