/*\r
-\r
- soft_uart\r
-\r
- v0.2\r
-\r
- Copyright John Steggall 2009\r
-\r
+ LUFA Library\r
+ Copyright (C) Dean Camera, 2010.\r
+ \r
+ dean [at] fourwalledcubicle [dot] com\r
+ www.fourwalledcubicle.com\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
+ Copyright 2010 David Prentice (david.prentice [at] farming [dot] uk)\r
+ Copyright 2010 Peter Danneger\r
+ Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+\r
+ Permission to use, copy, modify, distribute, and sell this \r
+ software and its documentation for any purpose is hereby granted\r
+ without fee, provided that the above copyright notice appear in \r
+ all 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
this software.\r
*/\r
\r
-/* \r
- Specifically designed for the xplain board, other uses could be made by adjusting uart_soft_conf.h\r
- replacing the port, pin and timer 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
- Note: Configured to use 16bit timers.\r
-\r
- */\r
-\r
-/* Changes \r
- *\r
- * v0.2\r
- * - Added configuration file to ease pain of setup for different hardware configuration\r
- * - Changed bit access for ports that can be accessed directly\r
- * - Fixed atomic section in uart_init to encompass counter read\r
- */\r
-\r
-#ifndef UART_SOFT_H\r
-#define UART_SOFT_H\r
-\r
- /* status */\r
- extern uint8_t status;\r
+#ifndef _SOFT_UART_\r
+#define _SOFT_UART_\r
\r
- /* initialises software uart and enables transmit */\r
- extern void SoftUART_Init(void);\r
+ /* Includes: */\r
+ #include <avr/io.h>\r
+ #include <avr/interrupt.h>\r
+ #include "SoftUART.h"\r
\r
- /* checks if there is a byte in the receive buffer*/\r
- extern unsigned char SoftUART_IsReceived(void);\r
+ /* Macros: */\r
+ #define BAUD 9600\r
+ #define BIT_TIME (uint16_t)((F_CPU + (BAUD / 2)) / BAUD)\r
\r
- /* returns the received byte */\r
- extern unsigned char SoftUART_RxByte(void);\r
+ #define SRX PD0\r
+ #define SRXPIN PIND\r
+ #define SRXPORT PORTD\r
\r
- /* starts a byte send and returns the byte to be sent */\r
- extern unsigned char SoftUART_TxByte(unsigned char data);\r
+ #define STX PD1\r
+ #define STXPORT PORTD\r
+ #define STXDDR DDRD\r
\r
- /* Simulates polling UDRE to see if tx buffer is empty and ready */\r
- extern unsigned char SoftUART_IsReady(void);\r
+ /* Function Prototypes: */\r
+ unsigned char SoftUART_IsReady(void);\r
+ unsigned char SoftUART_TxByte(unsigned char c);\r
+ unsigned char SoftUART_IsReceived(void);\r
+ unsigned char SoftUART_RxByte(void);\r
+ void SoftUART_Init(void);\r
\r
-#endif\r
+#endif
\ No newline at end of file