Common.h File Reference

#include <avr/io.h>
#include <stdio.h>
#include <avr/version.h>
#include "FunctionAttributes.h"
#include <alloca.h>

Defines

#define MACROS   do
#define MACROE   while (0)
#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 SERIAL_STREAM_ASSERT(x)

Functions

static void SetSystemClockPrescaler (uint8_t PrescalerMask)

Detailed Description

This file contains macros which are common to all library elements, and which may be useful in user code. It also includes other common headees, such as Atomic.h, FunctionAttributes.h and BoardTypes.h.

Define Documentation

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

Macro for testing condition "x" and breaking via JTAG_DEBUG_BREAK() if the condition is false.

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

Defines an explicit JTAG break point in the resulting binary via the ASM BREAK statment. 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 statment 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 optimizer removes/reorders code to the point where break points cannot reliably be set.

#define MACROE   while (0)

Macro for encasing other multi-statment macros. This should be used along with a preceeding closing brace at the end of any multi-statement macro, so that the macros contents as a whole are treated as a discreete block and not as a list of seperate statements which may cause problems when used as a block (such as inline IF statments).

#define MACROS   do

Macro for encasing other multi-statment macros. This should be used along with an opening brace before the start of any multi-statement macro, so that the macros contents as a whole are treated as a discreete block and not as a list of seperate statements which may cause problems when used as a block (such as inline IF statments).

#define SERIAL_STREAM_ASSERT (  ) 

Value:

MACROS{ if (!(x)) { printf_P(PSTR("%s: Function \"%s\", Line %d: "   \
                                                                "Assertion \"%s\" failed.\r\n"),   \
                                                                __FILE__, __func__, __LINE__, #x); \
                                            } }MACROE
Macro for testing condition "x" and writing debug data to the serial stream if false. As a prerequisite for this macro, the serial stream should be configured via the Serial_Stream driver.

The serial output takes the form "{FILENAME}: Function {FUNCTION NAME}, Line {LINE NUMBER}: Assertion {x} failed."


Function Documentation

static void SetSystemClockPrescaler ( uint8_t  PrescalerMask  )  [inline, static]

Function for reliably setting the AVR's system clock prescaler, using inline assembly. This function is guaranteed to operate reliably regardless of optimization setting or other compile time options.

Parameters:
PrescalerMask The mask of the new prescaler setting for CLKPR


Generated on Tue Jun 10 19:58:54 2008 for MyUSB Library by  doxygen 1.5.5