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)
static uint8_t BitReverse (uint8_t Byte)
static uint16_t SwapEndian_16 (uint16_t Word)
static uint16_t SwapEndian_32 (uint16_t DWord)
static void SwapEndian_n (uint8_t *Data, uint8_t Bytes)

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 uint8_t BitReverse ( uint8_t  Byte  )  [inline, static]

Function to reverse the individual bits in a byte - i.e. bit 7 is moved to bit 0, bit 6 to bit 1, etc.

Parameters:
Byte Byte of data whose bits are to be reversed

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

static uint16_t SwapEndian_16 ( uint16_t  Word  )  [inline, static]

Function to reverse the byte ordering of the individual bytes in a 16 bit number.

Parameters:
Word Word of data whose bytes are to be swapped

static uint16_t SwapEndian_32 ( uint16_t  DWord  )  [inline, static]

Function to reverse the byte ordering of the individual bytes in a 32 bit number.

Parameters:
DWord Double word of data whose bytes are to be swapped

static void SwapEndian_n ( uint8_t *  Data,
uint8_t  Bytes 
) [inline, static]

Function to reverse the byte ordering of the individual bytes in a n byte number.

Parameters:
Data Pointer to a number containing an even number of bytes to be reversed


Generated on Mon Jul 7 12:27:42 2008 for MyUSB Library by  doxygen 1.5.5