| 
    Библиотека LUFA (раннее название MyUSB) версия 101122 
   | 
 
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) | 
Макросы для использования при отладке.
| #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 | ) | 
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."