UART Library

Interrupt UART library using the built-in UART with transmit and receive circular buffers. More...

Defines

#define UART_BAUD_SELECT(baudRate, xtalCpu)   ((xtalCpu)/((baudRate)*16l)-1)
 UART Baudrate Expression.
#define UART_RX_BUFFER_SIZE   32
#define UART_TX_BUFFER_SIZE   32
#define P(s)   ({static const char c[] __attribute__ ((progmem)) = s;c;})
#define UART_FRAME_ERROR   0x0800
#define UART_OVERRUN_ERROR   0x0400
#define UART_BUFFER_OVERFLOW   0x0200
#define UART_NO_DATA   0x0100
#define uart_puts_P(__s)   uart_puts_p(P(__s))
 Macro to automatically put a string constant into program memory.

Functions

void uart_init (unsigned int baudrate)
 Initialize UART and set baudrate.
unsigned int uart_getc (void)
 Get received byte from ringbuffer.
void uart_putc (unsigned char data)
 Put byte to ringbuffer for transmitting via UART.
void uart_putc_hex (unsigned char data)
void uart_putdw_dec (uint32_t dw)
void uart_putw_dec (uint16_t dw)
void uart_puts (const char *s)
 Put string to ringbuffer for transmitting via UART.
void uart_puts_p (const char *s)
 Put string from program memory to ringbuffer for transmitting via UART.

Detailed Description

Interrupt UART library using the built-in UART with transmit and receive circular buffers.

 #include <uart.h> 

This library can be used to transmit and receive data through the built in UART.

An interrupt is generated when the UART has finished transmitting or receiving a byte. The interrupt handling routines use circular buffers for buffering received and transmitted data.

The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE constants define the size of the circular buffers in bytes. Note that these constants must be a power of 2. You may need to adapt this size to your target and your application.

Note:
Based on Atmel Application Note AVR306
Author:
Peter Fleury pfleury@gmx.ch http://jump.to/fleury

Define Documentation

#define P (  )     ({static const char c[] __attribute__ ((progmem)) = s;c;})

Definition at line 59 of file uart.h.

#define UART_BAUD_SELECT ( baudRate,
xtalCpu   )     ((xtalCpu)/((baudRate)*16l)-1)

UART Baudrate Expression.

Parameters:
xtalcpu system clock in Mhz
baudrate baudrate in bps, e.g. 1200, 2400, 9600

Definition at line 48 of file uart.h.

Referenced by main().

#define UART_BUFFER_OVERFLOW   0x0200

Definition at line 68 of file uart.h.

#define UART_FRAME_ERROR   0x0800

Definition at line 66 of file uart.h.

#define UART_NO_DATA   0x0100

Definition at line 69 of file uart.h.

#define UART_OVERRUN_ERROR   0x0400

Definition at line 67 of file uart.h.

#define uart_puts_P ( __s   )     uart_puts_p(P(__s))

Macro to automatically put a string constant into program memory.

Definition at line 152 of file uart.h.

#define UART_RX_BUFFER_SIZE   32

Size of the circular receive buffer, must be power of 2

Definition at line 52 of file uart.h.

#define UART_TX_BUFFER_SIZE   32

Size of the circular transmit buffer, must be power of 2

Definition at line 54 of file uart.h.


Function Documentation

unsigned int uart_getc ( void   ) 

Get received byte from ringbuffer.

Returns in the lower byte the received character and in the higher byte the last receive error. UART_NO_DATA is returned when no data is available.

Parameters:
void 
Returns:
lower byte: received byte from ringbuffer

higher byte: last receive status

  • 0 successfully received data from UART
  • UART_NO_DATA
    no receive data available
  • UART_BUFFER_OVERFLOW
    Receive ringbuffer overflow. We are not reading the receive buffer fast enough, one or more received character have been dropped
  • UART_OVERRUN_ERROR
    Overrun condition by UART. A character already present in the UART UDR register was not read by the interrupt handler before the next character arrived, one or more received characters have been dropped.
  • UART_FRAME_ERROR
    Framing Error by UART

void uart_init ( unsigned int  baudrate  ) 

Initialize UART and set baudrate.

Parameters:
baudrate Specify baudrate using macro UART_BAUD_SELECT()
Returns:
none

Referenced by main().

void uart_putc ( unsigned char  data  ) 

Put byte to ringbuffer for transmitting via UART.

Parameters:
data byte to be transmitted
Returns:
none

Referenced by display_buffer(), main(), and sd_init().

void uart_putc_hex ( unsigned char  data  ) 

void uart_putdw_dec ( uint32_t  dw  ) 

Referenced by print_disk_info().

void uart_puts ( const char *  s  ) 

Put string to ringbuffer for transmitting via UART.

The string is buffered by the uart library in a circular buffer and one character at a time is transmitted to the UART using interrupts. Blocks if it can not write the whole string into the circular buffer.

Parameters:
s string to be transmitted
Returns:
none

Referenced by display_buffer(), main(), print_disk_info(), and sd_init().

void uart_puts_p ( const char *  s  ) 

Put string from program memory to ringbuffer for transmitting via UART.

The string is buffered by the uart library in a circular buffer and one character at a time is transmitted to the UART using interrupts. Blocks if it can not write the whole string into the circular buffer.

Parameters:
s program memory string to be transmitted
Returns:
none
See also:
uart_puts_P

void uart_putw_dec ( uint16_t  dw  ) 

Referenced by print_disk_info().


Generated on Wed Sep 17 19:31:52 2008 for mptry by  doxygen 1.5.5