mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-20 21:01:25 +03:00
Initial Arduino IDE based on Processing.
This commit is contained in:
134
build/shared/lib/avrlib/uart.h
Executable file
134
build/shared/lib/avrlib/uart.h
Executable file
@ -0,0 +1,134 @@
|
||||
/*! \file uart.h \brief UART driver with buffer support. */
|
||||
//*****************************************************************************
|
||||
//
|
||||
// File Name : 'uart.h'
|
||||
// Title : UART driver with buffer support
|
||||
// Author : Pascal Stang - Copyright (C) 2000-2002
|
||||
// Created : 11/22/2000
|
||||
// Revised : 02/01/2004
|
||||
// Version : 1.3
|
||||
// Target MCU : ATMEL AVR Series
|
||||
// Editor Tabs : 4
|
||||
//
|
||||
// This code is distributed under the GNU Public License
|
||||
// which can be found at http://www.gnu.org/licenses/gpl.txt
|
||||
//
|
||||
//*****************************************************************************
|
||||
|
||||
#ifndef UART_H
|
||||
#define UART_H
|
||||
|
||||
#include "global.h"
|
||||
#include "buffer.h"
|
||||
|
||||
//! default baud rate
|
||||
//! can be changed by using uartSetBaudRate()
|
||||
#define UART_DEFAULT_BAUD_RATE 9600
|
||||
|
||||
// buffer memory allocation defines
|
||||
// buffer sizes
|
||||
#ifndef UART_TX_BUFFER_SIZE
|
||||
#define UART_TX_BUFFER_SIZE 0x0040 ///< number of bytes for uart transmit buffer
|
||||
#endif
|
||||
#ifndef UART_RX_BUFFER_SIZE
|
||||
#define UART_RX_BUFFER_SIZE 0x0040 ///< number of bytes for uart receive buffer
|
||||
#endif
|
||||
|
||||
// define this key if you wish to use
|
||||
// external RAM for the UART buffers
|
||||
//#define UART_BUFFER_EXTERNAL_RAM
|
||||
#ifdef UART_BUFFER_EXTERNAL_RAM
|
||||
// absolute address of uart buffers
|
||||
#define UART_TX_BUFFER_ADDR 0x1000
|
||||
#define UART_RX_BUFFER_ADDR 0x1100
|
||||
#endif
|
||||
|
||||
// type of interrupt handler to use
|
||||
// *do not change unless you know what you're doing
|
||||
// Value may be SIGNAL or INTERRUPT
|
||||
#ifndef UART_INTERRUPT_HANDLER
|
||||
#define UART_INTERRUPT_HANDLER SIGNAL
|
||||
#endif
|
||||
|
||||
// compatibility with most newer processors
|
||||
#ifdef UCSRB
|
||||
#define UCR UCSRB
|
||||
#endif
|
||||
// compatibility with old Mega processors
|
||||
#if defined(UBRR) && !defined(UBRRL)
|
||||
#define UBRRL UBRR
|
||||
#endif
|
||||
// compatibility with dual-uart processors
|
||||
// (if you need to use both uarts, please use the uart2 library)
|
||||
#if defined(__AVR_ATmega128__)
|
||||
#define UDR UDR0
|
||||
#define UCR UCSR0B
|
||||
#define UBRRL UBRR0L
|
||||
#define UBRRH UBRR0H
|
||||
#define SIG_UART_TRANS SIG_UART0_TRANS
|
||||
#define SIG_UART_RECV SIG_UART0_RECV
|
||||
#define SIG_UART_DATA SIG_UART0_DATA
|
||||
#endif
|
||||
#if defined(__AVR_ATmega161__)
|
||||
#define UDR UDR0
|
||||
#define UCR UCSR0B
|
||||
#define UBRRL UBRR0
|
||||
#define SIG_UART_TRANS SIG_UART0_TRANS
|
||||
#define SIG_UART_RECV SIG_UART0_RECV
|
||||
#define SIG_UART_DATA SIG_UART0_DATA
|
||||
#endif
|
||||
|
||||
// functions
|
||||
|
||||
//! initializes transmit and receive buffers
|
||||
// called from uartInit()
|
||||
void uartInitBuffers(void);
|
||||
|
||||
//! initializes uart
|
||||
void uartInit(void);
|
||||
|
||||
//! redirects received data to a user function
|
||||
void uartSetRxHandler(void (*rx_func)(unsigned char c));
|
||||
|
||||
//! sets the uart baud rate
|
||||
void uartSetBaudRate(u32 baudrate);
|
||||
|
||||
//! returns pointer to the receive buffer structure
|
||||
cBuffer* uartGetRxBuffer(void);
|
||||
|
||||
//! returns pointer to the transmit buffer structure
|
||||
cBuffer* uartGetTxBuffer(void);
|
||||
|
||||
//! sends a single byte over the uart
|
||||
void uartSendByte(u08 data);
|
||||
|
||||
//! gets a single byte from the uart receive buffer (getchar-style)
|
||||
// returns the byte, or -1 if no byte is available
|
||||
int uartGetByte(void);
|
||||
|
||||
//! gets a single byte from the uart receive buffer
|
||||
// Function returns TRUE if data was available, FALSE if not.
|
||||
// Actual data is returned in variable pointed to by "data".
|
||||
// example usage:
|
||||
// char myReceivedByte;
|
||||
// uartReceiveByte( &myReceivedByte );
|
||||
u08 uartReceiveByte(u08* data);
|
||||
|
||||
//! returns TRUE/FALSE if receive buffer is empty/not-empty
|
||||
u08 uartReceiveBufferIsEmpty(void);
|
||||
|
||||
//! flushes (deletes) all data from receive buffer
|
||||
void uartFlushReceiveBuffer(void);
|
||||
|
||||
//! add byte to end of uart Tx buffer
|
||||
void uartAddToTxBuffer(u08 data);
|
||||
|
||||
//! begins transmission of the transmit buffer under interrupt control
|
||||
void uartSendTxBuffer(void);
|
||||
|
||||
//! sends a buffer of length nBytes via the uart using interrupt control
|
||||
u08 uartSendBuffer(char *buffer, u16 nBytes);
|
||||
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user