]> git.friedersdorff.com Git - max/tmk_keyboard.git/blob - ps2_vusb/usart_print.h
host interface for pjrc
[max/tmk_keyboard.git] / ps2_vusb / usart_print.h
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 /*
15 General Description:
16 This module implements a function for debug logs on the serial line of the
17 AVR microcontroller. Debugging can be configured with the define
18 'DEBUG_LEVEL'. If this macro is not defined or defined to 0, all debugging
19 calls are no-ops. If it is 1, DBG1 logs will appear, but not DBG2. If it is
20 2, DBG1 and DBG2 logs will be printed.
21
22 A debug log consists of a label ('prefix') to indicate which debug log created
23 the 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 extern void odDebug(uchar prefix, uchar *data, uchar len);
64 void uartPutc(char c);
65 void printHex(uchar c);
66
67 /* Try to find our control registers; ATMEL likes to rename these */
68
69 #if defined UBRR
70 #   define  ODDBG_UBRR  UBRR
71 #elif defined UBRRL
72 #   define  ODDBG_UBRR  UBRRL
73 #elif defined UBRR0
74 #   define  ODDBG_UBRR  UBRR0
75 #elif defined UBRR0L
76 #   define  ODDBG_UBRR  UBRR0L
77 #endif
78
79 #if defined UCR
80 #   define  ODDBG_UCR   UCR
81 #elif defined UCSRB
82 #   define  ODDBG_UCR   UCSRB
83 #elif defined UCSR0B
84 #   define  ODDBG_UCR   UCSR0B
85 #endif
86
87 #if defined TXEN
88 #   define  ODDBG_TXEN  TXEN
89 #else
90 #   define  ODDBG_TXEN  TXEN0
91 #endif
92
93 #if defined USR
94 #   define  ODDBG_USR   USR
95 #elif defined UCSRA
96 #   define  ODDBG_USR   UCSRA
97 #elif defined UCSR0A
98 #   define  ODDBG_USR   UCSR0A
99 #endif
100
101 #if defined UDRE
102 #   define  ODDBG_UDRE  UDRE
103 #else
104 #   define  ODDBG_UDRE  UDRE0
105 #endif
106
107 #if defined UDR
108 #   define  ODDBG_UDR   UDR
109 #elif defined UDR0
110 #   define  ODDBG_UDR   UDR0
111 #endif
112
113 static inline void  odDebugInit(void)
114 {
115     ODDBG_UCR |= (1<<ODDBG_TXEN);
116     ODDBG_UBRR = F_CPU / (57600 * 16L) - 1;
117 }
118
119 /* ------------------------------------------------------------------------- */
120
121 #endif /* __oddebug_h_included__ */