From: Keith Packard Date: Sat, 7 May 2011 03:33:58 +0000 (-0700) Subject: altos: Use USART configuration 1 with flow control for TBT X-Git-Tag: 0.9.3~40^2~8 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=19bfa3882a2d95fcade256c2d63ad24f794281e5 altos: Use USART configuration 1 with flow control for TBT It's just wired that way. Signed-off-by: Keith Packard --- diff --git a/src/ao_pins.h b/src/ao_pins.h index bc9bdcb9..4c31f755 100644 --- a/src/ao_pins.h +++ b/src/ao_pins.h @@ -248,6 +248,9 @@ #define HAS_USB 1 #define HAS_BEEP 0 #define HAS_SERIAL_1 1 + #define HAS_SERIAL_1_ALT_1 1 + #define HAS_SERIAL_1_ALT_2 0 + #define HAS_SERIAL_1_HW_FLOW 1 #define USE_SERIAL_STDIN 1 #define HAS_ADC 0 #define HAS_DBG 1 diff --git a/src/ao_serial.c b/src/ao_serial.c index 9c0b798d..2e7dad7b 100644 --- a/src/ao_serial.c +++ b/src/ao_serial.c @@ -127,6 +127,18 @@ ao_serial_set_speed(uint8_t speed) void ao_serial_init(void) { +#if HAS_SERIAL_1_ALT_1 + /* Set up the USART pin assignment */ + PERCFG = (PERCFG & ~PERCFG_U1CFG_ALT_MASK) | PERCFG_U1CFG_ALT_1; + + P2DIR = (P2DIR & ~P2DIR_PRIP0_MASK) | P2DIR_PRIP0_USART1_USART0; + + /* Make the USART pins be controlled by the USART */ + P0SEL |= (1 << 5) | (1 << 4); +#if HAS_SERIAL_1_HW_FLOW + P0SEL |= (1 << 3) | (1 << 2); +#endif +#else /* Set up the USART pin assignment */ PERCFG = (PERCFG & ~PERCFG_U1CFG_ALT_MASK) | PERCFG_U1CFG_ALT_2; @@ -135,6 +147,8 @@ ao_serial_init(void) /* Make the USART pins be controlled by the USART */ P1SEL |= (1 << 6) | (1 << 7); + P1SEL |= (1 << 5) | (1 << 4); +#endif /* UART mode with receiver enabled */ U1CSR = (UxCSR_MODE_UART | UxCSR_RE); @@ -144,7 +158,11 @@ ao_serial_init(void) /* Reasonable serial parameters */ U1UCR = (UxUCR_FLUSH | +#if HAS_SERIAL_1_HW_FLOW + UxUCR_FLOW_ENABLE | +#else UxUCR_FLOW_DISABLE | +#endif UxUCR_D9_EVEN_PARITY | UxUCR_BIT9_8_BITS | UxUCR_PARITY_DISABLE | diff --git a/src/cc1111.h b/src/cc1111.h index a07490e5..5b018cb5 100644 --- a/src/cc1111.h +++ b/src/cc1111.h @@ -589,6 +589,12 @@ sfr at 0xFD P0DIR; sfr at 0xFE P1DIR; sfr at 0xFF P2DIR; +#define P2DIR_PRIP0_USART0_USART1 (0 << 6) +#define P2DIR_PRIP0_USART1_USART0 (1 << 6) +#define P2DIR_PRIP0_TIMER1_01_USART1 (2 << 6) +#define P2DIR_PRIP0_TIMER1_2_USART0 (3 << 6) +#define P2DIR_PRIP0_MASK (3 << 6) + sfr at 0x8F P0INP; /* Select between tri-state and pull up/down