Skip to content
Snippets Groups Projects
Commit 91b1e37e authored by patacongo's avatar patacongo
Browse files

Fix AVR uart bugs

git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3700 42af7a65-404d-4744-a932-0658087f49c3
parent fe9849bb
No related branches found
No related tags found
No related merge requests found
......@@ -198,32 +198,33 @@ void usart1_configure(void)
/* Select parity */
#if CONFIG_USART1_PARITY == 1
ucsr1c |= (UPM11 | UPM10); /* Odd parity */
ucsr1c |= ((1 << UPM11) | (1 << UPM10)); /* Odd parity */
#else
ucsr1c |= UPM11; /* Even parity */
ucsr1c |= (1 << UPM11); /* Even parity */
#endif
/* 1 or 2 stop bits */
#if defined(CONFIG_USART1_2STOP) && CONFIG_USART1_2STOP > 0
ucsr1c |= USBS1; /* Two stop bits */
ucsr1c |= (1 << USBS1); /* Two stop bits */
#endif
/* Word size */
#if CONFIG_USART1_BITS == 5
#elif CONFIG_USART1_BITS == 6
ucsr1c |= UCSZ10;
ucsr1c |= (1 << UCSZ10);
#elif CONFIG_USART1_BITS == 7
ucsr1c |= UCSZ11;
ucsr1c |= (1 << UCSZ11);
#elif CONFIG_USART1_BITS == 8
ucsr1c |= (UCSZ10 | UCSZ11);
ucsr1c |= ((1 << UCSZ10) | (1 << UCSZ11));
#elif CONFIG_USART1_BITS == 9
ucsr1c |= (UCSZ10 | UCSZ11);
ucsr1b |= UCSZ12;
ucsr1c |= ((1 << UCSZ10) | (1 << UCSZ11));
ucsr1b |= (1 << UCSZ12);
#else
# error "Unsupported word size"
#endif
UCSR1B = ucsr1b;
UCSR1C = ucsr1c;
......@@ -239,7 +240,7 @@ void usart1_configure(void)
* an output regardless of the value of DDD3.
*/
DDRD |= (1 << 3); /* Force Port D pin 3 to be an output */
DDRD |= (1 << 3); /* Force Port D pin 3 to be an output -- Shouldn't be necessary */
PORTD |= (1 << 2); /* Set pull-up on port D pin 2 */
/* Set the baud rate divisor */
......
......@@ -279,32 +279,33 @@ void usart0_configure(void)
/* Select parity */
#if CONFIG_USART0_PARITY == 1
ucsr0c |= (UPM01 | UPM00); /* Odd parity */
ucsr0c |= ((1 << UPM01) | (1 << UPM00)); /* Odd parity */
#else
ucsr0c |= UPM00; /* Even parity */
ucsr0c |= (1 << UPM00); /* Even parity */
#endif
/* 1 or 2 stop bits */
#if defined(CONFIG_USART0_2STOP) && CONFIG_USART0_2STOP > 0
ucsr0c |= USBS0; /* Two stop bits */
ucsr0c |= (1 << USBS0); /* Two stop bits */
#endif
/* Word size */
#if CONFIG_USART0_BITS == 5
#elif CONFIG_USART0_BITS == 6
ucsr0c |= UCSZ00;
ucsr0c |= (1 << UCSZ00);
#elif CONFIG_USART0_BITS == 7
ucsr0c |= UCSZ01;
ucsr0c |= (1 << UCSZ01);
#elif CONFIG_USART0_BITS == 8
ucsr0c |= (UCSZ00 | UCSZ01);
ucsr0c |= ((1 << UCSZ00) | (1 << UCSZ01));
#elif CONFIG_USART0_BITS == 9
ucsr0c |= (UCSZ00 | UCSZ01);
ucsr0b |= UCSZ02;
ucsr0c |= ((1 << UCSZ0) | (1 << UCSZ01));
ucsr0b |= (1 << UCSZ02);
#else
# error "Unsupported word size"
#endif
UCSR0B = ucsr0b;
UCSR0C = ucsr0c;
......@@ -323,13 +324,13 @@ void usart0_configure(void)
* However, this is not explicitly stated in the text.
*/
DDRE |= (1 << 1); /* Force Port E pin 1 to be an input */
DDRE |= (1 << 1); /* Force Port E pin 1 to be an input -- might not be necessary */
PORTE |= (1 << 0); /* Set pull-up on Port E pin 0 */
/* Set the baud rate divisor */
UBRR0H = AVR_UBRR1 >> 8;
UBRR0L = AVR_UBRR1 & 0xff;
UBRR0H = AVR_UBRR0 >> 8;
UBRR0L = AVR_UBRR0 & 0xff;
}
#endif
......@@ -355,32 +356,33 @@ void usart1_configure(void)
/* Select parity */
#if CONFIG_USART1_PARITY == 1
ucsr1c |= (UPM11 | UPM10); /* Odd parity */
ucsr1c |= ((1 << UPM11) | (1 << UPM10)); /* Odd parity */
#else
ucsr1c |= UPM11; /* Even parity */
ucsr1c |= (1 << UPM11); /* Even parity */
#endif
/* 1 or 2 stop bits */
#if defined(CONFIG_USART1_2STOP) && CONFIG_USART1_2STOP > 0
ucsr1c |= USBS1; /* Two stop bits */
ucsr1c |= (1 << USBS1); /* Two stop bits */
#endif
/* Word size */
#if CONFIG_USART1_BITS == 5
#elif CONFIG_USART1_BITS == 6
ucsr1c |= UCSZ10;
ucsr1c |= (1 << UCSZ10);
#elif CONFIG_USART1_BITS == 7
ucsr1c |= UCSZ11;
ucsr1c |= (1 << UCSZ11);
#elif CONFIG_USART1_BITS == 8
ucsr1c |= (UCSZ10 | UCSZ11);
ucsr1c |= ((1 << UCSZ10) | (1 << UCSZ11));
#elif CONFIG_USART1_BITS == 9
ucsr1c |= (UCSZ10 | UCSZ11);
ucsr1b |= UCSZ12;
ucsr1c |= (U(1 << CSZ10) | (1 << UCSZ11));
ucsr1b |= (1 << UCSZ12);
#else
# error "Unsupported word size"
#endif
UCSR1B = ucsr1b;
UCSR1C = ucsr1c;
......@@ -396,7 +398,7 @@ void usart1_configure(void)
* an output regardless of the value of DDD3.
*/
DDRD |= (1 << 3); /* Force Port D pin 3 to be an output */
DDRD |= (1 << 3); /* Force Port D pin 3 to be an output -- should not be necessary */
PORTD |= (1 << 2); /* Set pull-up on port D pin 2 */
/* Set the baud rate divisor */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment