Как узнать работает ли i2c?
- Войдите на сайт для отправки комментариев
Ср, 20/04/2016 - 04:20
Здравствуйте. Есть плата mega2560. Пытался подключить мелкий oled на i2c (пины 20 и 21, vcc на 23)но безрезультатно.
Подумал может это от того что неправильно задаю адрес устройства, но просканировать доступные адреса програмкой-сканером ( https://github.com/todbot/arduino-i2c-scanner/blob/master/I2CScanner/I2CScanner.ino ) не получается, программа похоже виснет на сканировании первого же адреса, даже если отключить шилд. Что это может быть, аппаратные проблемы? Можно ли попробовать перенести i2c на другие пины и каким образом?
1. как подключаете?
2. sda и scl не перепутали?
http://arduino.ru/Hardware/ArduinoBoardMega2560
3. gnd подключили?
4. что за экран?
5. может ему 3.3 вольта надо?
6. питание на 23 пине? не уверен
предлагаю экран пока оставить в покое, как проверить работоспособность i2c на аппаратных пинах? Вышеприведённая программа сканер зависает на обращении по первому адресу (к плате ничего не подключено), хотя теоретически должна отписать что адрес не занят если я правильно понимаю.
Ну раз вы добрались до utility/twi.h то посмотреть код twi_WrieTo() вам труда не составит. Я это к тому, что сильно не уверен что попытка передать 0 байт выдаст на шину только адрес, а не попыткается передать 65к байт данных. Ну и обработчик прерывания заодно глянуть ..
Если программа зависает намертво, значит twi_WriteTo() скорее всего не выходит из цикла ожидания готовности по завершению передачи.
И ещё, попробуйте эту утилиту от 1.6.4 .. она там позволяет делать не блокирующие операции. Тут её успели "пооптимизировать".
Подтяжка есть?
http://easyelectronics.ru/interface-bus-iic-i2c.html