Fix AVR uart bugs
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3700 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
fe9849bb99
commit
91b1e37ee3
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user