QMK/tmk_core/protocol/vusb/usbdrv/oddebug.h

122 lines
3.0 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__ */