Project

General

Profile

Statistics
| Revision:

root / trunk / cardbox / rs485_int.h @ 270

History | View | Annotate | Download (2.09 KB)

1 139 kwoo
/********
2
 * This file is part of Tooltron.
3
 *
4
 * Tooltron is free software: you can redistribute it and/or modify
5
 * it under the terms of the Lesser GNU General Public License as published by
6
 * the Free Software Foundation, either version 3 of the License, or
7
 * (at your option) any later version.
8
 *
9
 * Tooltron is distributed in the hope that it will be useful,
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 * Lesser GNU General Public License for more details.
13
 * You should have received a copy of the Lesser GNU General Public License
14
 * along with Tooltron.  If not, see <http://www.gnu.org/licenses/>.
15
 *
16
 * Copyright 2009 Kevin Woo <kwoo@2ndt.com>
17
 *
18
 ********/
19 211 kwoo
/** @file rs485_int.h
20 8 kwoo
 *
21
 *        @brief Initializes UART functions using the UART hardware module
22
 *
23
 *        @author Kevin Woo (kwoo)
24
 */
25
26
#ifndef UART_H
27
#define UART_H
28
29
#include <avr/io.h>
30
#include <avr/interrupt.h>
31 109 kwoo
#include <stdint.h>
32 13 kwoo
/** **/
33 213 bneuman
#define RS485_TX_OFF 0
34
#define RS485_TX_ON 1
35 13 kwoo
36
/** @brief RX Pin for the UART **/
37 109 kwoo
#define RX                _BV(PORTD0)
38
#define TX                _BV(PORTD1)
39 213 bneuman
#define TX_EN        _BV(PORTD2)
40 8 kwoo
41 206 kwoo
/**
42
 * @brief This si the value to pass into UBRR tos et the baudrate.
43
 * @note this assumes an 8MHz system clock
44
 */
45
#define BAUD9600    51
46
47 13 kwoo
/** @brief The most recently received byte **/
48 109 kwoo
extern uint8_t received_byte;
49
/** @brief If the value in received_byte has been read or not **/
50
extern uint8_t byte_ready;
51 8 kwoo
52 109 kwoo
/** @brief Initializes the UART registers and sets it to the buad rate
53
 *         which msut be the value that is defined in the datasheet
54
 *         for any particular speed (ie: 51 -> 9600bps)
55 13 kwoo
 **/
56 211 kwoo
void rs485_init(uint16_t baud);
57 109 kwoo
/** @brief Gets latest byte and returns it in output_byte. If the byte
58
 *         was already read, returns -1 otherwise it returns 0
59 13 kwoo
 **/
60 211 kwoo
int8_t rs485_get_byte(uint8_t *output_byte);
61 109 kwoo
/** @brief Sends a character array of size size. If we are currently
62
 *         transmitting it will block until the the current transmit
63
 *         is done.
64
 **/
65 211 kwoo
void rs485_send_byte(uint8_t data);
66
void rs485_toggle_transmit(uint8_t state);
67 8 kwoo
#endif