Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
   advertising or publicity pertaining to distribution of the
   software without specific, written prior permission.
 
   advertising or publicity pertaining to distribution of the
   software without specific, written prior permission.
 
   software, including all implied warranties of merchantability
   and fitness.  In no event shall the author be liable for any
   special, indirect or consequential damages or any damages
   software, including all implied warranties of merchantability
   and fitness.  In no event shall the author be liable for any
   special, indirect or consequential damages or any damages
                                                                                     printf_P(PSTR("%s: Function \"%s\", Line %d: "     \
                                                                                                   "Assertion \"%s\" failed.\r\n"),     \
                                                                                                   __FILE__, __func__, __LINE__, #Condition); } }MACROE
 
                                #if !defined(pgm_read_ptr) || defined(__DOXYGEN__)
                                        /** Reads a pointer out of PROGMEM space on the AVR8 architecture. This is currently a wrapper for the
                                                                                     printf_P(PSTR("%s: Function \"%s\", Line %d: "     \
                                                                                                   "Assertion \"%s\" failed.\r\n"),     \
                                                                                                   __FILE__, __func__, __LINE__, #Condition); } }MACROE
 
                                #if !defined(pgm_read_ptr) || defined(__DOXYGEN__)
                                        /** Reads a pointer out of PROGMEM space on the AVR8 architecture. This is currently a wrapper for the
                                         *  to a pointer variable or used in pointer arithmetic without further casting in C. In a future
                                         *  avr-libc distribution this will be part of the standard API and will be implemented in a more formal
                                         *  manner.
                                         *  to a pointer variable or used in pointer arithmetic without further casting in C. In a future
                                         *  avr-libc distribution this will be part of the standard API and will be implemented in a more formal
                                         *  manner.
                                #define JTAG_DEBUG_POINT()              __asm__ __volatile__ ("nop" ::)
                                #define JTAG_DEBUG_BREAK()              __asm__ __volatile__ ("breakpoint" ::)
                                #define JTAG_ASSERT(Condition)          MACROS{ if (!(Condition)) { JTAG_DEBUG_BREAK(); } }MACROE
                                #define JTAG_DEBUG_POINT()              __asm__ __volatile__ ("nop" ::)
                                #define JTAG_DEBUG_BREAK()              __asm__ __volatile__ ("breakpoint" ::)
                                #define JTAG_ASSERT(Condition)          MACROS{ if (!(Condition)) { JTAG_DEBUG_BREAK(); } }MACROE
                                                                                     printf("%s: Function \"%s\", Line %d: "     \
                                                                                            "Assertion \"%s\" failed.\r\n"),     \
                                                                                            __FILE__, __func__, __LINE__, #Condition); } }MACROE
                                                                                     printf("%s: Function \"%s\", Line %d: "     \
                                                                                            "Assertion \"%s\" failed.\r\n"),     \
                                                                                            __FILE__, __func__, __LINE__, #Condition); } }MACROE