• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

GPIO debug

702

New member
Здравствуйте.
Собираю во FreeRTOS SDK прошивку ESP8266 для макета , содержащего I2C устройство.
Поскольку сейчас под рукой только ESP-01, временно решил реализовать I2C программно на GPIO_0
и GPIO_2. Драйвер в процессе работы постоянно перепрограммирует GPIO пины на вход и на выход.
Каждое такое перепрограммирование вызывает вывод в консоль длиннющей строки с состоянием
пина, видимо откуда-то из внутренностей библиотеки GPIO .
Как это можно отключить?
 

702

New member
Установите LOG LEVEL в ESP_LOG_NONE
Спасибо, это я находил.
Функции esp_log_level_set(...) в качестве параметра нужно передать тег. Какое значение тега для управления логом на GPIO?
Где можно прочитать или как догадаться?
 

702

New member
У чипа ESP8266 нет аппаратного I2C. Только "ногодрыгом", т.е. программно на GPIOx...
У меня нет описания аппаратных регистров GPIO от ESP8266. Поэтому я не знаю, какой сакральный смысл в рекомендации в даташите использовать
в качестве I2C_SCL ногу GPIO_14. Возможно, он есть.
 

Алексей.

Active member
Где можно прочитать или как догадаться?
В заголовочном файле исчерпывающая информация
* @param tag Tag of the log entries to enable. Must be a non-NULL zero terminated string.
* Value "*" resets log level for all tags to the given value.
Тот уровень логирования, который установили для метки (тега) и будет использоваться когда для данной метки будет вызвана esp_log_write
Если установили
Код:
esp_log_level_set("my-app", ESP_LOG_ERROR);
esp_log_level_set("my-i2c", ESP_LOG_DEBUG);
То выполняя esp_log_write для "my-app" и "my-i2c"
Код:
esp_log_write(ESP_LOG_ERROR, "my-app", "error 1");
esp_log_write(ESP_LOG_WARN, "my-app", "warning 2");
esp_log_write(ESP_LOG_DEBUG, "my-app", "debug 3");
esp_log_write(ESP_LOG_ERROR, "my-i2c", "error 4");
esp_log_write(ESP_LOG_WARN, "my-i2c", "warning 5");
esp_log_write(ESP_LOG_DEBUG, "my-i2c", "debug 6");
Вы получите в логе не 6 сообщений, а 4, в соответствии с установленными уровнями логирования для меток, одно от "my-app" и три от "my-i2c".

Можете установить свой обработчик вывода лога вызвав esp_log_set_putchar, направить вывод не в uart, а куда угодно.
 

702

New member
В заголовочном файле исчерпывающая информация
В заголовочном файле esp_log.h значения тега для управления логом GPIO я не нашел. Если таковое имеется,
прошу ткнуть меня в строчку.

Если установили
Задача у меня не сделать свой лог, а отключить имеющийся: только для GPIO.

Можете установить свой обработчик вывода лога вызвав esp_log_set_putchar, направить вывод не в uart, а куда угодно.
Такой способ "отключения" лога не годится, - функция printf будет молотить впустую, жрать процессорное время и греть небо.
 

Алексей.

Active member
Задача у меня не сделать свой лог, а отключить имеющийся: только для GPIO.
Если вы посмотрите на выводимые сообщения в логе, то там найдете тот самый тег о котором спрашивали
Какое значение тега для управления логом на GPIO?
Первый ответ на ваш вопрос #2 установите для этого тега ESP_LOG_NONE
 

Алексей.

Active member
Драйвер в процессе работы постоянно перепрограммирует GPIO пины на вход и на выход.
Каждое такое перепрограммирование вызывает вывод в консоль длиннющей строки с состоянием
пина, видимо откуда-то из внутренностей библиотеки GPIO .
Как это можно отключить?
В драйвере ESP8266_RTOS_SDK-3.2/components/esp8266/driver/gpio.c
объявлен тег
Код:
static const char *GPIO_TAG = "gpio";
Информационные сообщения от драйвера при вызове gpio_config
Код:
ESP_LOGI(GPIO_TAG, "GPIO[%d]| InputEn: %d| OutputEn: %d| OpenDrain: %d| Pullup: %d| Pulldown: %d| Intr:%d ", ...
 

pvvx

Активный участник сообщества
@Алексей. - концепция ардуино в действии и распространяется на всё. :)
Рожден ещё один участник сообщества ардуино-попрошаек.
Надо было дать полный скетч сразу, а не направление где и как это меняется.
 
Сверху Снизу