![]() |
LUFA Library 110528
|
Convenience macros to aid in debugging applications. More...
Defines | |
#define | JTAG_DEBUG_POINT() __asm__ __volatile__ ("NOP" ::) |
#define | JTAG_DEBUG_BREAK() __asm__ __volatile__ ("BREAK" ::) |
#define | JTAG_DEBUG_ASSERT(Condition) MACROS{ if (!(Condition)) { JTAG_DEBUG_BREAK(); } }MACROE |
#define | STDOUT_ASSERT(Condition) |
Macros to aid debugging of a user application.
#define JTAG_DEBUG_ASSERT | ( | Condition | ) | MACROS{ if (!(Condition)) { JTAG_DEBUG_BREAK(); } }MACROE |
Macro for testing condition "x" and breaking via JTAG_DEBUG_BREAK() if the condition is false.
[in] | Condition | Condition that will be evaluated. |
#define JTAG_DEBUG_BREAK | ( | ) | __asm__ __volatile__ ("BREAK" ::) |
Defines an explicit JTAG break point in the resulting binary via the assembly BREAK
statement. When a JTAG is used, this causes the program execution to halt when reached until manually resumed.
#define JTAG_DEBUG_POINT | ( | ) | __asm__ __volatile__ ("NOP" ::) |
Defines a volatile NOP
statement which cannot be optimized out by the compiler, and thus can always be set as a breakpoint in the resulting code. Useful for debugging purposes, where the optimiser removes/reorders code to the point where break points cannot reliably be set.
#define STDOUT_ASSERT | ( | Condition | ) |
MACROS{ if (!(x)) { printf_P(PSTR("%s: Function \"%s\", Line %d: " \ "Assertion \"%s\" failed.\r\n"), \ __FILE__, __func__, __LINE__, #Condition); } }MACROE
Macro for testing condition "x" and writing debug data to the stdout stream if false
. The stdout stream must be pre-initialized before this macro is run and linked to an output device, such as the microcontroller's USART peripheral.
The output takes the form "{FILENAME}: Function {FUNCTION NAME}, Line {LINE NUMBER}: Assertion {Condition} failed."
[in] | Condition | Condition that will be evaluated, |