diff options
author | siddhu8990 | 2016-01-13 11:15:17 +0530 |
---|---|---|
committer | siddhu8990 | 2016-01-13 11:15:17 +0530 |
commit | 7cba1cf7d2ee89559239a22c50297a1545de0587 (patch) | |
tree | 5319b21a5679b6dabf10c57346cea9b41db02ac2 /src/c/hardware/avr/uart/u8AVRUARTSetups.c | |
parent | d166736e0eb384156d30bcea45711d4c8d474ee1 (diff) | |
download | Scilab2C_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.c | 84 |
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; +} + |