summaryrefslogtreecommitdiff
path: root/src/c/hardware/avr/uart/u8AVRUARTSetups.c
diff options
context:
space:
mode:
authorsiddhu89902016-01-13 11:15:17 +0530
committersiddhu89902016-01-13 11:15:17 +0530
commit7cba1cf7d2ee89559239a22c50297a1545de0587 (patch)
tree5319b21a5679b6dabf10c57346cea9b41db02ac2 /src/c/hardware/avr/uart/u8AVRUARTSetups.c
parentd166736e0eb384156d30bcea45711d4c8d474ee1 (diff)
downloadScilab2C_fossee_old-7cba1cf7d2ee89559239a22c50297a1545de0587.tar.gz
Scilab2C_fossee_old-7cba1cf7d2ee89559239a22c50297a1545de0587.tar.bz2
Scilab2C_fossee_old-7cba1cf7d2ee89559239a22c50297a1545de0587.zip
Test commit
Diffstat (limited to 'src/c/hardware/avr/uart/u8AVRUARTSetups.c')
-rw-r--r--src/c/hardware/avr/uart/u8AVRUARTSetups.c84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/c/hardware/avr/uart/u8AVRUARTSetups.c b/src/c/hardware/avr/uart/u8AVRUARTSetups.c
new file mode 100644
index 0000000..f311500
--- /dev/null
+++ b/src/c/hardware/avr/uart/u8AVRUARTSetups.c
@@ -0,0 +1,84 @@
+// Function to initialise uart interface of AVR
+//
+// Calling Sequence
+// u8AVRUARTSetups(uint8 mode, uint8 baudrate, uint8 stopbits, uint8 parity)
+//
+// Parameters
+// mode : Mode of usart interface (0-Normal mode, 1-Double speed mode,
+// 2-Synchronous master mode)
+// baudrate : Baudrate for communication. Refer AVRPeripheralUART.h
+// for available options)
+// stopbits : No. of stopbits (0-1) for stopbits 1 and 2 resp.
+// parity: set parity bit. (0-disabled, 1-Even parity, 2-Odd parity)
+//
+//
+// Description
+// This function initialises uart interface for AVR. Available modes are
+// Normal mode (0), Double speed mode (1), Synchronous master mode(2). 'baudrate'
+// decides baudrate for communication. For baudrate settings, variable
+// 'XTAL_FREQUENCY' is required. 'stopbits' sets no of stopbits for data
+// packet. 0 for 1 stopbit and 1 for 2 stopbits. 'parity' decides parity bit
+// for communication. 0 for disabling parity bit, 1 for even parity and 2
+// for odd parity.
+//
+// Authors
+// Siddhesh Wani
+//
+
+#include "AVRPeripheralUART.h"
+
+uint8 u8AVRUARTSetups(uint8 mode, uint8 baudrate, uint8 stopbits, uint8 parity)
+{
+ switch (mode) //According to mode set bits UMSEL and U2X
+ {
+ case 0: //Normal mode
+ UCSRC &= ~(1<<6); //Clear bit 6 UMSEL
+ break;
+
+ case 1: //Double speed mode
+ UCSRC &= ~(1<<6); //Clear bit 6 UMSEL
+ break;
+
+ case 2: //Synchronous master mode
+ UCSRC |= (1<<6); //Set bit 6 UMSEL
+ break;
+ }
+
+ if(stopbits == 0)
+ { // 1 stopbit
+ UCSRC &= ~(1<<3);
+ }
+ else
+ { // 2 stopbits
+ UCSRC |= (1<<3);
+ }
+
+ //Set parity bit settings
+ switch(parity)
+ {
+ case 0: // Parity disabled
+ UCSRC &= ~(3<<4); //UPM1:0=0
+ break;
+ case 1:// Even parity
+ UCSRC |= (1<<5); //UPM1:0 = 2
+ UCSRC &= ~(1<<4);
+ break;
+ case 2:// Odd parity
+ UCSRC |= (1<<5); //UPM1:1 = 3
+ UCSRC |= (1<<4);
+ break;
+ }
+
+ //Set baud rate
+ # define BAUD baudrate
+ #include "util/setbaud.h"
+ UBRRH = UBRRH_VALUE;
+ UBRRL = UBRRL_VALUE;
+ #if USE_2X
+ UCSRA |= (1 << U2X);
+ #else
+ UCSRA &= ~(1 << U2X);
+ #endif
+ return 0;
+}
+