]> git.zerfleddert.de Git - fnordlicht-mini/blame - firmware/fnordlicht-controller/usbdrv/oddebug.h
reference firmware
[fnordlicht-mini] / firmware / fnordlicht-controller / usbdrv / oddebug.h
CommitLineData
ec1bef8e 1/* Name: oddebug.h
2 * Project: AVR library
3 * Author: Christian Starkjohann
4 * Creation Date: 2005-01-16
5 * Tabsize: 4
6 * Copyright: (c) 2005 by OBJECTIVE DEVELOPMENT Software GmbH
7 * License: GNU GPL v2 (see License.txt), GNU GPL v3 or proprietary (CommercialLicense.txt)
8 * This Revision: $Id: oddebug.h 692 2008-11-07 15:07:40Z cs $
9 */
10
11#ifndef __oddebug_h_included__
12#define __oddebug_h_included__
13
14/*
15General Description:
16This module implements a function for debug logs on the serial line of the
17AVR microcontroller. Debugging can be configured with the define
18'DEBUG_LEVEL'. If this macro is not defined or defined to 0, all debugging
19calls are no-ops. If it is 1, DBG1 logs will appear, but not DBG2. If it is
202, DBG1 and DBG2 logs will be printed.
21
22A debug log consists of a label ('prefix') to indicate which debug log created
23the output and a memory block to dump in hex ('data' and 'len').
24*/
25
26
27#ifndef F_CPU
28# define F_CPU 12000000 /* 12 MHz */
29#endif
30
31/* make sure we have the UART defines: */
32#include "usbportability.h"
33
34#ifndef uchar
35# define uchar unsigned char
36#endif
37
38#if DEBUG_LEVEL > 0 && !(defined TXEN || defined TXEN0) /* no UART in device */
39# warning "Debugging disabled because device has no UART"
40# undef DEBUG_LEVEL
41#endif
42
43#ifndef DEBUG_LEVEL
44# define DEBUG_LEVEL 0
45#endif
46
47/* ------------------------------------------------------------------------- */
48
49#if DEBUG_LEVEL > 0
50# define DBG1(prefix, data, len) odDebug(prefix, data, len)
51#else
52# define DBG1(prefix, data, len)
53#endif
54
55#if DEBUG_LEVEL > 1
56# define DBG2(prefix, data, len) odDebug(prefix, data, len)
57#else
58# define DBG2(prefix, data, len)
59#endif
60
61/* ------------------------------------------------------------------------- */
62
63#if DEBUG_LEVEL > 0
64extern void odDebug(uchar prefix, uchar *data, uchar len);
65
66/* Try to find our control registers; ATMEL likes to rename these */
67
68#if defined UBRR
69# define ODDBG_UBRR UBRR
70#elif defined UBRRL
71# define ODDBG_UBRR UBRRL
72#elif defined UBRR0
73# define ODDBG_UBRR UBRR0
74#elif defined UBRR0L
75# define ODDBG_UBRR UBRR0L
76#endif
77
78#if defined UCR
79# define ODDBG_UCR UCR
80#elif defined UCSRB
81# define ODDBG_UCR UCSRB
82#elif defined UCSR0B
83# define ODDBG_UCR UCSR0B
84#endif
85
86#if defined TXEN
87# define ODDBG_TXEN TXEN
88#else
89# define ODDBG_TXEN TXEN0
90#endif
91
92#if defined USR
93# define ODDBG_USR USR
94#elif defined UCSRA
95# define ODDBG_USR UCSRA
96#elif defined UCSR0A
97# define ODDBG_USR UCSR0A
98#endif
99
100#if defined UDRE
101# define ODDBG_UDRE UDRE
102#else
103# define ODDBG_UDRE UDRE0
104#endif
105
106#if defined UDR
107# define ODDBG_UDR UDR
108#elif defined UDR0
109# define ODDBG_UDR UDR0
110#endif
111
112static inline void odDebugInit(void)
113{
114 ODDBG_UCR |= (1<<ODDBG_TXEN);
115 ODDBG_UBRR = F_CPU / (19200 * 16L) - 1;
116}
117#else
118# define odDebugInit()
119#endif
120
121/* ------------------------------------------------------------------------- */
122
123#endif /* __oddebug_h_included__ */
Impressum, Datenschutz