• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Модуль времени DS3231 на нестандартных пинах

LocalBrownie

New member
Доброго времени суток!
Может у кого есть опыт подключения девайсов по I2C на нестандартные пины?
Третий день вожусь, пытаюсь сдружить вместе ESP8266 (ESP-12E), экранчик на 2.2" на ILI9341 (SPI) и RTC DS3231 (I2C).
Проблема в том что и в экране и в RTC используются 4-й и 5-й пины. "Подвинуть" экранчик у меня не получилось. Попытался подвинуть DS3231 (благо в библиотеке предусматривается возможность) - тоже неудача.
Пробовал скетч отсюда и примеры из Library for RTC, Ds1307 & Ds3231 makuna - на стандартных пинах работает на ура. Что с явным указанием SDA SCL, что просто Wire.begin(). При попытке перебросить и инициализировать I2C с другими SDA и SCL (Wire.begin(0, 2)) вместо времени получаю какой-то числовой мусор (правда всегда одинаковый :) и температуру "-3.31".
Перепробовал кучу комбинаций - с тремя оставшимися пинами 0, 2, 16 - всё без толку. Остался еще один GPIO12, но он мне нужен для регулировки яркости экрана (единственный из оставшихся с PWM).
Переставлял с нуля Arduino IDE (1.6.9), в общем повеселился от души :) но "воз и нынче там".
Ткните носом, плиз, куда копать?
 

nikolz

Well-known member
Доброго времени суток!
Может у кого есть опыт подключения девайсов по I2C на нестандартные пины?
Третий день вожусь, пытаюсь сдружить вместе ESP8266 (ESP-12E), экранчик на 2.2" на ILI9341 (SPI) и RTC DS3231 (I2C).
Проблема в том что и в экране и в RTC используются 4-й и 5-й пины. "Подвинуть" экранчик у меня не получилось. Попытался подвинуть DS3231 (благо в библиотеке предусматривается возможность) - тоже неудача.
Пробовал скетч отсюда и примеры из Library for RTC, Ds1307 & Ds3231 makuna - на стандартных пинах работает на ура. Что с явным указанием SDA SCL, что просто Wire.begin(). При попытке перебросить и инициализировать I2C с другими SDA и SCL (Wire.begin(0, 2)) вместо времени получаю какой-то числовой мусор (правда всегда одинаковый :) и температуру "-3.31".
Перепробовал кучу комбинаций - с тремя оставшимися пинами 0, 2, 16 - всё без толку. Остался еще один GPIO12, но он мне нужен для регулировки яркости экрана (единственный из оставшихся с PWM).
Переставлял с нуля Arduino IDE (1.6.9), в общем повеселился от души :) но "воз и нынче там".
Ткните носом, плиз, куда копать?
---------------------------
проблема в том, что другие пины надо включить на режим вывода так как они имеют много функций.
Например чтобы включить GPIO12 на вывод надо исполнить такую команду на СИ:
PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);
 

LocalBrownie

New member
@nikolz
Хм... Спасибо, буду попробовать....
Надеюсь под "другие" имеется в виду те что остались без дела?
Да, и я под Arduino IDE могу наверное воспользоваться "pinMode(12, OUTPUT)" вместо PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12);?
...
Хорошо, а если мне потом понадобится "кнопку считать"?
После инициализации Wire можно будет нужный пин на INPUT переключить?
 

LocalBrownie

New member
@nikolz
Не, не помогает к сожалению....
С "PIN_FUNC_SELECT" не компилится, а с pinMode всё как и прежде.
Но за одно всеми пинами помигал, проверил. Все работают.
 

tretyakov_sa

Moderator
Команда форума
Доброго времени суток!
Может у кого есть опыт подключения девайсов по I2C на нестандартные пины?
Третий день вожусь, пытаюсь сдружить вместе ESP8266 (ESP-12E), экранчик на 2.2" на ILI9341 (SPI) и RTC DS3231 (I2C).
Проблема в том что и в экране и в RTC используются 4-й и 5-й пины. "Подвинуть" экранчик у меня не получилось. Попытался подвинуть DS3231 (благо в библиотеке предусматривается возможность) - тоже неудача.
Почему не получается подключить SPI на 14,12,13,15, а I2C на 4,5?
 

LocalBrownie

New member
и в подтверждение этого, фото работающего макета:
nrf24l01(SPI) на 12-16 пинах, bmp180(I2C) на 4-5 пинах, dht22 - 0 пин.
Просто мой экранчик подключается по умолчанию к GPIO 13, 14, 15, 4, 5. MISO не используется, потому и 12-й свободен. Не знаю, кому пришла идея занять еще и пины I2C, но факт есть факт. :(
 

LocalBrownie

New member
а что мешает в строке инициализации дисплея
Код:
UTFT myGLCD ( ILI9341_S5P, 13, 14, 15, 5, 4 );
поменять номера пинов ?
Пробовал.
"Подвинуть" экранчик у меня не получилось.
Правда у меня рабочий вариант "звучит" так:
Код:
UTFT myGLCD ( ILI9341_S5P, 15, 5, 4 );
Ставим вместо "5,4" - "16,0" - получаем белый экран.

Попробую еще с полной строкой инициализации, авось прокатит....
 

LocalBrownie

New member
Оп-с!
Сам не верю!
Запустилось! Чувствую себя идиотом, но тем не менее!
CS -> 15
Reset -> 2 (а не на 16, как в прошлый раз!)
DС -> 0

Работает экранчик что с полной строкой инициализации, что с урезанной!
Код:
UTFT myGLCD ( ILI9341_S5P, 15, 2, 0 );
Это надо было взяться за паяльник после бутылки 47-ми градусной?! %)
Или это 16-й GPIO мог подвести в прошлый раз?
Ну в общем завтра еще проверю всё вместе, но думаю что всё будет работать....

Вопрос переходит в разряд "академических"... От чего же не запускалась I2C на других пинах....
Код:
(Wire.begin(0, 2))
Может пригодится еще?
 

LocalBrownie

New member
возможно, что в момент включения на выводах Ds1307 присутствует логический 0 и ESP переходит в режим загрузчика ..
Не, в режим загрузчика оно не входило, т.к. прошивка работала, DS3231 опрашивался, но вместо результатов шёл мусор. Такое впечатление что именно RTC не хочет работать с пинами GPIO 0,2. Находил инфу что датчик давления bmp180 на них работает. Причём то-ли на SDA-0, SCL-2 - работает, а на 2,0 нет, то ли наоборот. Не помню где было.
 
Сверху Снизу