123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- /* 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) or proprietary (CommercialLicense.txt)
- * This Revision: $Id: oddebug.h 275 2007-03-20 09:58:28Z 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 "iarcompat.h"
- #ifndef __IAR_SYSTEMS_ICC__
- # include <avr/io.h>
- #endif
-
- #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__ */
|