Библиотека LUFA (раннее название MyUSB) версия 101122
Debugging Macros

Defines

#define JTAG_DEBUG_POINT()   __asm__ volatile ("NOP" ::)
#define JTAG_DEBUG_BREAK()   __asm__ volatile ("BREAK" ::)
#define JTAG_DEBUG_ASSERT(x)   MACROS{ if (!(x)) { JTAG_DEBUG_BREAK(); } }MACROE
#define STDOUT_ASSERT(x)

Detailed Description

Макросы для использования при отладке.


Define Documentation

#define JTAG_DEBUG_ASSERT (   x)    MACROS{ if (!(x)) { JTAG_DEBUG_BREAK(); } }MACROE

Макрос для тестирования условия "x" и останова через JTAG_DEBUG_BREAK(), если условие будет false.

#define JTAG_DEBUG_BREAK ( )    __asm__ volatile ("BREAK" ::)

Задает прямую точку останова JTAG в результирующем двоичном коде через оператор ASM BREAK. Когда используется JTAG, это приводит к остановке выполнения программы, пока она не будет продолжена вручную.

#define JTAG_DEBUG_POINT ( )    __asm__ volatile ("NOP" ::)

Задает volatile оператор NOP, который не может быть оптимизирован компилятором, и поэтому всегда может быть установлен как точка останова в результирующем коде. Очень удобно для целей отладки, где оптимизатор удаляет/переорганизовывает код так, что точка останова не может быть корректно установлена в нужное место.

#define STDOUT_ASSERT (   x)
Value:
MACROS{ if (!(x)) { printf_P(PSTR("%s: Function \"%s\", Line %d: "   \
                                                         "Assertion \"%s\" failed.\r\n"),     \
                                                         __FILE__, __func__, __LINE__, #x); } }MACROE

Макрос для тестирования условия "x" и записи данных отладки в поток stdout, если условие будет false. Поток stdout должен быть предварительно инициалирован перед запуском этого макроса и прилинкован к выходному устройству, как периферия AVR USART.

Вывод происходит в форме "{FILENAME}: Function {FUNCTION NAME}, Line {LINE NUMBER}: Assertion {x} failed."

 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines