ESP8266:Прошивки/Arduino/Отладка
Черновик |
Отладка[1]
Начиная с версии 2.1.0-rc1, аддон ESP8266 для IDE Arduino оснащен функцией отладки, управляемой через новые пункты в меню «Инструменты». Отладочные сообщения выводятся в режиме реального времени.
Требования
Для отладки потребуется последовательное соединение с платой (через Serial или Serial1). Класс Serial нужно инициализировать в блоке setup(). Скорость передачи данных выставьте на максимум, на который способно ваше оборудование.
Код, которого достаточно для отладки:
void setup() {
Serial.begin(115200);
}
void loop() {
}
Использование
1. В пункте «Debug port» выберите интерфейс «Serial»:
2. Выберите тип/уровень, который хотите использовать для отладочных сообщений:
3. Проверьте, инициализировано ли в setup() последовательное соединение. Подробнее читайте выше, в разделе «Требования»
4. Загрузите скетч
5. Начните смотреть сообщения в мониторе порта
Информация
Функция отладки работает с любым скетчем, в котором включено последовательное соединение на выбранном в IDE Arduino отладочном порте. При этом сам скетч может нормально использовать это последовательное соединение для собственных целей. Вывод отладочной информации опционален и не помешает работе (тем более – не отключит) никакой интерфейс, используемый в скетче.
Для разработчиков
Для управления отладкой используйте директивы #define. Они задаются в командной строке.
Отладочный порт
У порта есть define-директива DEBUG_ESP_PORT, которая может принимать следующие значения:
- Disabled – это значит, что #define не существует
- Serial – интерфейс Serial
- Serial1 – интерфейс Serial1
Уровень/тип отладки
Все #define, независимо от уровня/типа, начинаются с DEBUG_ESP_. Полный список можно найти в файле «boards.txt».
Пример
Отладочные сообщения будут выводиться в монитор порта только в том случае, если в пункте «Debug port» задан отладочный порт.
#ifdef DEBUG_ESP_PORT
#define DEBUG_MSG(...) DEBUG_ESP_PORT.printf( __VA_ARGS__ )
#else
#define DEBUG_MSG(...)
#endif
void setup() {
Serial.begin(115200);
delay(3000);
DEBUG_MSG("bootup...\n"); // "загрузка...\n"
}
void loop() {
DEBUG_MSG("loop %d\n", millis()); // "цикл %d\n"
delay(1000);
}