124 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* Name: oddebug.h
 | 
						|
 * Project: AVR library
 | 
						|
 * Author: Christian Starkjohann
 | 
						|
 * Creation Date: 2005-01-16
 | 
						|
 * Tabsize: 4
 | 
						|
 * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH
 | 
						|
 * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)
 | 
						|
 * This Revision: $Id: oddebug.h 692 2008-11-07 15:07:40Z cs $
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef __oddebug_h_included__
 | 
						|
#define __oddebug_h_included__
 | 
						|
 | 
						|
/*
 | 
						|
General Description:
 | 
						|
This module implements a function for debug logs on the serial line of the
 | 
						|
AVR microcontroller. Debugging can be configured with the define
 | 
						|
'DEBUG_LEVEL'. If this macro is not defined or defined to 0, all debugging
 | 
						|
calls are no-ops. If it is 1, DBG1 logs will appear, but not DBG2. If it is
 | 
						|
2, DBG1 and DBG2 logs will be printed.
 | 
						|
 | 
						|
A debug log consists of a label ('prefix') to indicate which debug log created
 | 
						|
the output and a memory block to dump in hex ('data' and 'len').
 | 
						|
*/
 | 
						|
 | 
						|
 | 
						|
#ifndef F_CPU
 | 
						|
#   define  F_CPU   12000000    /* 12 MHz */
 | 
						|
#endif
 | 
						|
 | 
						|
/* make sure we have the UART defines: */
 | 
						|
#include "usbportability.h"
 | 
						|
 | 
						|
#ifndef uchar
 | 
						|
#   define  uchar   unsigned char
 | 
						|
#endif
 | 
						|
 | 
						|
#if DEBUG_LEVEL > 0 && !(defined TXEN || defined TXEN0) /* no UART in device */
 | 
						|
#   warning "Debugging disabled because device has no UART"
 | 
						|
#   undef   DEBUG_LEVEL
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef DEBUG_LEVEL
 | 
						|
#   define  DEBUG_LEVEL 0
 | 
						|
#endif
 | 
						|
 | 
						|
/* ------------------------------------------------------------------------- */
 | 
						|
 | 
						|
#if DEBUG_LEVEL > 0
 | 
						|
#   define  DBG1(prefix, data, len) odDebug(prefix, data, len)
 | 
						|
#else
 | 
						|
#   define  DBG1(prefix, data, len)
 | 
						|
#endif
 | 
						|
 | 
						|
#if DEBUG_LEVEL > 1
 | 
						|
#   define  DBG2(prefix, data, len) odDebug(prefix, data, len)
 | 
						|
#else
 | 
						|
#   define  DBG2(prefix, data, len)
 | 
						|
#endif
 | 
						|
 | 
						|
/* ------------------------------------------------------------------------- */
 | 
						|
 | 
						|
#if DEBUG_LEVEL > 0
 | 
						|
extern void odDebug(uchar prefix, uchar *data, uchar len);
 | 
						|
 | 
						|
/* Try to find our control registers; ATMEL likes to rename these */
 | 
						|
 | 
						|
#if defined UBRR
 | 
						|
#   define  ODDBG_UBRR  UBRR
 | 
						|
#elif defined UBRRL
 | 
						|
#   define  ODDBG_UBRR  UBRRL
 | 
						|
#elif defined UBRR0
 | 
						|
#   define  ODDBG_UBRR  UBRR0
 | 
						|
#elif defined UBRR0L
 | 
						|
#   define  ODDBG_UBRR  UBRR0L
 | 
						|
#endif
 | 
						|
 | 
						|
#if defined UCR
 | 
						|
#   define  ODDBG_UCR   UCR
 | 
						|
#elif defined UCSRB
 | 
						|
#   define  ODDBG_UCR   UCSRB
 | 
						|
#elif defined UCSR0B
 | 
						|
#   define  ODDBG_UCR   UCSR0B
 | 
						|
#endif
 | 
						|
 | 
						|
#if defined TXEN
 | 
						|
#   define  ODDBG_TXEN  TXEN
 | 
						|
#else
 | 
						|
#   define  ODDBG_TXEN  TXEN0
 | 
						|
#endif
 | 
						|
 | 
						|
#if defined USR
 | 
						|
#   define  ODDBG_USR   USR
 | 
						|
#elif defined UCSRA
 | 
						|
#   define  ODDBG_USR   UCSRA
 | 
						|
#elif defined UCSR0A
 | 
						|
#   define  ODDBG_USR   UCSR0A
 | 
						|
#endif
 | 
						|
 | 
						|
#if defined UDRE
 | 
						|
#   define  ODDBG_UDRE  UDRE
 | 
						|
#else
 | 
						|
#   define  ODDBG_UDRE  UDRE0
 | 
						|
#endif
 | 
						|
 | 
						|
#if defined UDR
 | 
						|
#   define  ODDBG_UDR   UDR
 | 
						|
#elif defined UDR0
 | 
						|
#   define  ODDBG_UDR   UDR0
 | 
						|
#endif
 | 
						|
 | 
						|
static inline void  odDebugInit(void)
 | 
						|
{
 | 
						|
    ODDBG_UCR |= (1<<ODDBG_TXEN);
 | 
						|
    ODDBG_UBRR = F_CPU / (19200 * 16L) - 1;
 | 
						|
}
 | 
						|
#else
 | 
						|
#   define odDebugInit()
 | 
						|
#endif
 | 
						|
 | 
						|
/* ------------------------------------------------------------------------- */
 | 
						|
 | 
						|
#endif /* __oddebug_h_included__ */
 |