Как переиницилизировать шину i2c (SDA) в 1-Wire?
- Войдите на сайт для отправки комментариев
Вс, 26/11/2017 - 13:20
Собственно проблема такая, работаю с MEGA 2560 хочу что бы на 20 пине (SDA для i2c) так же можно было использовать 1-wire устройство.
Если сразу же после загрузки Меги использовать 1-wire устройство , а затем i2c то все отлично работает, но если наоборот: сначало I2C затем 1-Wire, то 1-Wire уже не работает. Пробовал даже перед каждым использованием 1-wire по новой его иницилизировать OneWire ds(20);//для 1-wire чипов 20 пин данных (он же SDA для I2C), но ничего не выходит. Хотя в моей схеме есть еще немного др. аппаратное решение, думаю сработает, но все же, может кто знает, как сделать по нормальному?
Скетч у Вас, как всегда секртеный, но мой хрустальный шар подсказывает, что когда Вы используете I2C, Вы забываете его потом выключить. В этом случае он подминает свои пины под себя и не даёт их использовать обычным образом.
Чтобы выключить I2C и получить пины в своё пользование, нужно записать 0 в бит TWEN регистра TWCR.
Делается ли это в библиотеке (и как) ищите сами, я библиотекой почти не пользуюсь и не знаю.
Думаю что, как раз в этом и проблемма, библиатека не имеет такой функции как отключить (остановить) i2c.
Думаю что, как раз в этом и проблемма, библиатека не имеет такой функции как отключить (остановить) i2c.
Цитирую Евгения: "нужно записать 0 в бит TWEN регистра TWCR". Что из этого непонятно? Написать одну строчку разве так сложно?
И выключится I2C. Включить - вместо 0 написать единичку.
Все, всем спасибо, все работает теперь как задумано.