-/*\r
-\r
- soft_uart\r
-\r
- Copyright John Steggall 2009\r
-\r
-*/\r
-\r
-\r
-/*\r
- Copyright 2009 John Steggall (steggall.j@gmail.com)\r
-\r
- Permission to use, copy, modify, and distribute this software\r
- and its documentation for any purpose and without fee is hereby\r
- granted, provided that the above copyright notice appear in all\r
- copies and that both that the copyright notice and this\r
- permission notice and warranty disclaimer appear in supporting\r
- documentation, and that the name of the author not be used in\r
- advertising or publicity pertaining to distribution of the\r
- software without specific, written prior permission.\r
-\r
- The author disclaim all warranties with regard to this\r
- software, including all implied warranties of merchantability\r
- and fitness. In no event shall the author be liable for any\r
- special, indirect or consequential damages or any damages\r
- whatsoever resulting from loss of use, data or profits, whether\r
- in an action of contract, negligence or other tortious action,\r
- arising out of or in connection with the use or performance of\r
- this software.\r
-*/\r
-\r
-/* \r
- Specifically designed for the xplain board, other uses could be made by furkling through the code\r
- and replacing the port and pin assignments. Also relies on and external interupt to detect the low\r
- level of the start bit, in this case INT0.\r
- Always configured to 9600baud. Can be changed by setting the BITLENGTH define to F_CPU/(desired baud)\r
- code may need optimising when getting any faster to sample the bit in the correct place. No \r
- compensation has been made for the response time of the int routine.\r
- */\r
-\r
-#ifndef UART_SOFT_H\r
-#define UART_SOFT_H\r
-\r
- /* initialises software uart and enables transmit */\r
- extern void SoftUART_Init(void);\r
-\r
- /* checks if there is a byte in the receive buffer*/\r
- extern unsigned char SoftUART_IsReceived(void);\r
-\r
- /* returns the received byte */\r
- extern unsigned char SoftUART_RxByte(void);\r
-\r
- /* starts a byte send and returns the byte to be sent */\r
- extern unsigned char SoftUART_TxByte(unsigned char data);\r
-\r
- /* Simulates polling UDRE to see if tx buffer is empty and ready */\r
- extern unsigned char SoftUART_IsReady(void);\r
-\r
-#endif\r
+/*
+ LUFA Library
+ Copyright (C) Dean Camera, 2012.
+
+ dean [at] fourwalledcubicle [dot] com
+ www.lufa-lib.org
+*/
+
+/*
+ Copyright 2010 David Prentice (david.prentice [at] farming [dot] uk)
+ Copyright 2010 Peter Danneger
+ Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+
+ Permission to use, copy, modify, distribute, and sell this
+ software and its documentation for any purpose is hereby granted
+ without fee, provided that the above copyright notice appear in
+ all copies and that both that the copyright notice and this
+ permission notice and warranty disclaimer appear in supporting
+ documentation, and that the name of the author not be used in
+ advertising or publicity pertaining to distribution of the
+ software without specific, written prior permission.
+
+ The author disclaim all warranties with regard to this
+ software, including all implied warranties of merchantability
+ and fitness. In no event shall the author be liable for any
+ special, indirect or consequential damages or any damages
+ whatsoever resulting from loss of use, data or profits, whether
+ in an action of contract, negligence or other tortious action,
+ arising out of or in connection with the use or performance of
+ this software.
+*/
+
+/** \file
+ *
+ * Header file for SoftUART.c.
+ */
+
+#ifndef _SOFT_UART_
+#define _SOFT_UART_
+
+ /* Includes: */
+ #include <avr/io.h>
+ #include <avr/interrupt.h>
+ #include <stdbool.h>
+
+ #include "../XPLAINBridge.h"
+
+ /* Macros: */
+ #define SRX PD0
+ #define SRXPIN PIND
+ #define SRXPORT PORTD
+
+ #define STX PD1
+ #define STXPORT PORTD
+ #define STXDDR DDRD
+
+ /* Inline Functions: */
+ static inline void SoftUART_SetBaud(const uint32_t Baud)
+ {
+ uint16_t BitTime = ((F_CPU / Baud) - 1);
+
+ OCR1A = BitTime;
+ OCR3A = BitTime;
+ }
+
+ /* Function Prototypes: */
+ void SoftUART_Init(void);
+
+#endif
+