2 * Copyright Droids Corporation, Microb Technology, Eirbot (2005)
\r
4 * This program is free software; you can redistribute it and/or modify
\r
5 * it under the terms of the GNU General Public License as published by
\r
6 * the Free Software Foundation; either version 2 of the License, or
\r
7 * (at your option) any later version.
\r
9 * This program is distributed in the hope that it will be useful,
\r
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
12 * GNU General Public License for more details.
\r
14 * You should have received a copy of the GNU General Public License
\r
15 * along with this program; if not, write to the Free Software
\r
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
\r
18 * Revision : $Id: uart_defs.h,v 1.2.4.13 2009-06-29 20:28:27 zer0 Exp $
\r
22 /* Olivier MATZ, Droids-corp 2004 - 2006
\r
23 * Uart specific definitions
\r
26 #ifndef _UART_DEFS_H_
\r
27 #define _UART_DEFS_H_
\r
29 #define UART_PARTITY_NONE 0
\r
30 #define UART_PARTITY_ODD 1
\r
31 #define UART_PARTITY_EVEN 2
\r
33 #define UART_STOP_BITS_1 0
\r
34 #define UART_STOP_BITS_2 1
\r
37 #define UART_HW_NUM 4
\r
38 #elif (defined UDR2)
\r
39 #define UART_HW_NUM 3
\r
40 #elif (defined UDR1)
\r
41 #define UART_HW_NUM 2
\r
42 #else /* assume 1 uart */
\r
43 #define UART_HW_NUM 1
\r
47 /* For arch with only one UART, we consider that UART0 = UART */
\r
48 #if !defined(SIG_UART0_DATA) && !defined(SIG_USART0_DATA)
\r
49 #if defined SIG_UART_DATA
\r
50 #define SIG_UART0_DATA SIG_UART_DATA
\r
51 #elif defined SIG_USART_DATA
\r
52 #define SIG_UART0_DATA SIG_USART_DATA
\r
56 #if !defined(SIG_UART0_RECV) && !defined(SIG_USART0_RECV)
\r
57 #if defined SIG_UART_RECV
\r
58 #define SIG_UART0_RECV SIG_UART_RECV
\r
59 #elif defined SIG_USART_RECV
\r
60 #define SIG_UART0_RECV SIG_USART_RECV
\r
64 #if !defined(UDR0) && defined(UDR)
\r
68 #define UCSR0A UCSRA
\r
71 #define UCSR0B UCSRB
\r
74 #define UCSR0C UCSRC
\r
77 #define UBRR0L UBRRL
\r
80 #define UBRR0H UBRRH
\r
82 #if !defined(U2X) && defined(U2X0)
\r
85 #if !defined(UCSZ0) && defined(UCSZ00)
\r
86 #define UCSZ0 UCSZ00
\r
88 #if !defined(UCSZ1) && defined(UCSZ01)
\r
89 #define UCSZ1 UCSZ01
\r
91 #if !defined(UCSZ2) && defined(UCSZ02)
\r
92 #define UCSZ2 UCSZ02
\r
94 #if !defined(UPM0) && defined(UPM00)
\r
97 #if !defined(UPM1) && defined(UPM01)
\r
100 #if !defined(USBS) && defined(USBS0)
\r
103 #if !defined(TXEN) && defined(TXEN0)
\r
106 #if !defined(TXCIE) && defined(TXCIE0)
\r
107 #define TXCIE TXCIE0
\r
109 #if !defined(RXEN) && defined(RXEN0)
\r
112 #if !defined(RXCIE) && defined(RXCIE0)
\r
113 #define RXCIE RXCIE0
\r
115 #if !defined(TXC) && defined(TXC0)
\r
118 #if !defined(RXC) && defined(RXC0)
\r
121 #if !defined(RXB8) && defined(RXB80)
\r
124 #if !defined(UDRIE) && defined(UDRIE0)
\r
125 #define UDRIE UDRIE0
\r
127 #if !defined(UDRE) && defined(UDRE0)
\r
130 #if !defined(U2X) && defined(U2X1)
\r
133 #if !defined(UCSZ1) && defined(UCSZ10)
\r
134 #define UCSZ0 UCSZ10
\r
136 #if !defined(UCSZ1) && defined(UCSZ11)
\r
137 #define UCSZ1 UCSZ11
\r
139 #if !defined(UCSZ2) && defined(UCSZ12)
\r
140 #define UCSZ2 UCSZ12
\r
142 #if !defined(UPM1) && defined(UPM10)
\r
145 #if !defined(UPM1) && defined(UPM11)
\r
148 #if !defined(USBS) && defined(USBS1)
\r
151 #if !defined(TXEN) && defined(TXEN1)
\r
154 #if !defined(TXCIE) && defined(TXCIE1)
\r
155 #define TXCIE TXCIE1
\r
157 #if !defined(RXEN) && defined(RXEN1)
\r
160 #if !defined(RXCIE) && defined(RXCIE1)
\r
161 #define RXCIE RXCIE1
\r
163 #if !defined(TXC) && defined(TXC1)
\r
166 #if !defined(RXC) && defined(RXC1)
\r
169 #if !defined(RXB8) && defined(RXB81)
\r
172 #if !defined(UDRIE) && defined(UDRIE1)
\r
173 #define UDRIE UDRIE1
\r
175 #if !defined(UDRIE) && defined(UDRIE1)
\r
176 #define UDRIE UDRIE1
\r
178 #if !defined(UDRE) && defined(UDRE1)
\r
182 /* makes functions more generic, we associate USR and UCR with UCSRA
\r
183 * and UCSRB, respectively */
\r
184 #if ( ! defined UCSRA ) && ( defined USR )
\r
188 #if ( ! defined UCSRB ) && ( defined UCR )
\r
192 /* UBRR is UBRRL */
\r
198 /* workaround for libc incomplete headers when using CAN AVR
\r
199 * (avr/iocanxx.h): USART is valid.
\r
200 * see http://savannah.nongnu.org/bugs/?18964
\r
202 #if defined (__AVR_AT90CAN128__) || defined (__AVR_AT90CAN64__) || defined (__AVR_AT90CAN32__)
\r
204 #ifndef SIG_USART0_RECV
\r
205 #define SIG_USART0_RECV SIG_UART0_RECV
\r
206 #define SIG_USART1_RECV SIG_UART1_RECV
\r
207 #define SIG_USART0_DATA SIG_UART0_DATA
\r
208 #define SIG_USART1_DATA SIG_UART1_DATA
\r
209 #define SIG_USART0_TRANS SIG_UART0_TRANS
\r
210 #define SIG_USART1_TRANS SIG_UART1_TRANS
\r
216 /* if the signal USART is defined, the uC has a USART. */
\r
217 #if ( defined SIG_USART0_RECV ) || ( defined SIG_USART_RECV )
\r
218 #define UART_IS_USART 1
\r
219 #elif (defined USART_UDRE_vect) || (defined USART_TXC_vect) || (defined USART_RXC_vect)
\r
220 #define UART_IS_USART 1
\r
221 #elif (defined USART1_UDRE_vect) || (defined USART1_TXC_vect) || (defined USART1_RXC_vect)
\r
222 #define UART_IS_USART 1
\r
224 #define UART_IS_USART 0
\r
227 /* if the U2X macro is defined, the uC has the U2X option. */
\r
229 #define UART_HAS_U2X 1
\r
231 #define UART_HAS_U2X 0
\r
234 #endif //_UART_DEFS_H_
\r