diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2008-01-26 14:35:25 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2008-01-26 14:35:25 +0000 |
commit | 84c38efeff157aac42105ccf709a604af75bf9ec (patch) | |
tree | 318232aeb96cd306ae866fff3882e4a069acc118 /nuttx/arch/z16/src/z16f | |
parent | eb243ffb65d42ef0426e0ae75ef8f52b8adf2468 (diff) | |
download | px4-nuttx-84c38efeff157aac42105ccf709a604af75bf9ec.tar.gz px4-nuttx-84c38efeff157aac42105ccf709a604af75bf9ec.tar.bz2 px4-nuttx-84c38efeff157aac42105ccf709a604af75bf9ec.zip |
Fix a16f serial bugs
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@568 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/z16/src/z16f')
-rwxr-xr-x | nuttx/arch/z16/src/z16f/z16f_head.S | 2 | ||||
-rwxr-xr-x | nuttx/arch/z16/src/z16f/z16f_lowuart.S | 18 | ||||
-rw-r--r-- | nuttx/arch/z16/src/z16f/z16f_serial.c | 35 |
3 files changed, 25 insertions, 30 deletions
diff --git a/nuttx/arch/z16/src/z16f/z16f_head.S b/nuttx/arch/z16/src/z16f/z16f_head.S index 2a1871aae..f9cdf745c 100755 --- a/nuttx/arch/z16/src/z16f/z16f_head.S +++ b/nuttx/arch/z16/src/z16f/z16f_head.S @@ -149,7 +149,7 @@ _z16f_reset: #endif /* Perform VERY early UART initialization so that we can use it here */ -#if defined(CONFIG_ARCH_LOWPUTC) || defined(CONFIG_ARCH_LOWGETC) +#if defined(CONFIG_ARCH_LOWPUTC) || defined(CONFIG_ARCH_LOWGETC) || CONFIG_NFILE_DESCRIPTORS == 0 call _z16f_lowuartinit /* Initialize the UART for debugging */ #endif /* Initialize the hardware stack overflow register */ diff --git a/nuttx/arch/z16/src/z16f/z16f_lowuart.S b/nuttx/arch/z16/src/z16f/z16f_lowuart.S index 037b3dd80..5e45e8c53 100755 --- a/nuttx/arch/z16/src/z16f/z16f_lowuart.S +++ b/nuttx/arch/z16/src/z16f/z16f_lowuart.S @@ -41,7 +41,7 @@ #include <nuttx/config.h> #include "chip/chip.h" -#if defined(CONFIG_ARCH_LOWPUTC) || defined(CONFIG_ARCH_LOWGETC) +#if defined(CONFIG_ARCH_LOWPUTC) || defined(CONFIG_ARCH_LOWGETC) || CONFIG_NFILE_DESCRIPTORS == 0 /************************************************************************* * External References / External Definitions @@ -96,31 +96,31 @@ _z16f_lowuartinit: udiv r0, r3 /* BRG = (freq + baud * 8)/(baud * 16) */ #ifdef CONFIG_UART0_SERIAL_CONSOLE - ld.w Z16F_UART0_BR, r0 /* Z16F_UART0_BR = BRG */ + ld.w Z16F_UART1_BR, r0 /* Z16F_UART1_BR = BRG */ /* Set the GPIO Alternate Function Register Lo (AFL) register */ ld r0, #%30 - or.b Z16F_GPIOA_AFL, r0 /* Z16F_GPIOA_AFL |= %30 */ + or.b Z16F_GPIOD_AFL, r0 /* Z16F_GPIOD_AFL |= %30 */ /* Enable UART receive (REN) and transmit (TEN) */ - clr.b Z16F_UART0_CTL1 /* Z16F_UART0_CTL1 = 0 */ + clr.b Z16F_UART1_CTL1 /* Z16F_UART1_CTL1 = 0 */ ld r0, #(Z16F_UARTCTL0_TEN|Z16F_UARTCTL0_REN) - ld.b Z16F_UART0_CTL0, r0 /* Z16F_UART0_CTL0 = %c0 */ + ld.b Z16F_UART1_CTL0, r0 /* Z16F_UART1_CTL0 = %c0 */ #else - ld.w Z16F_UART1_BR, r0 /* Z16F_UART1_BR = BRG */ + ld.w Z16F_UART0_BR, r0 /* Z16F_UART0_BR = BRG */ /* Set the GPIO Alternate Function Register Lo (AFL) register */ ld r0, #%30 - or.b Z16F_GPIOD_AFL, r0 /* Z16F_GPIOD_AFL |= %30 */ + or.b Z16F_GPIOA_AFL, r0 /* Z16F_GPIOA_AFL |= %30 */ /* Enable UART receive (REN) and transmit (TEN) */ - clr.b Z16F_UART1_CTL1 /* Z16F_UART1_CTL1 = 0 */ + clr.b Z16F_UART0_CTL1 /* Z16F_UART0_CTL1 = 0 */ ld r0, #(Z16F_UARTCTL0_TEN|Z16F_UARTCTL0_REN) - ld.b Z16F_UART1_CTL0, r0 /* Z16F_UART1_CTL0 = %c0 */ + ld.b Z16F_UART0_CTL0, r0 /* Z16F_UART0_CTL0 = %c0 */ #endif popmlo <r0, r3> /* Restore registers */ ret /* Return */ diff --git a/nuttx/arch/z16/src/z16f/z16f_serial.c b/nuttx/arch/z16/src/z16f/z16f_serial.c index 1ca6e0377..d63c6e5dd 100644 --- a/nuttx/arch/z16/src/z16f/z16f_serial.c +++ b/nuttx/arch/z16/src/z16f/z16f_serial.c @@ -649,39 +649,35 @@ int up_putc(int ch) ****************************************************************************/ #ifdef CONFIG_UART1_SERIAL_CONSOLE -# define z16f_contrde() \ - do { \ - int tmp; \ - for (tmp = 1000 ; tmp > 0 ; tmp--) \ - if ((getreg8(Z16F_UART1_STAT0) & Z16F_UARTSTAT0_TDRE) != 0) \ - break; \ - } while (0) +# define z16f_contrde() \ + ((getreg8(Z16F_UART1_STAT0) & Z16F_UARTSTAT0_TDRE) != 0) # define z16f_contxd(ch) \ - putreg8((ubyte)(ch), Z16F_UART1_STAT0) + putreg8((ubyte)(ch), Z16F_UART1_TXD) #else -# define z16f_contrde() \ - do { \ - int tmp; \ - for (tmp = 1000 ; tmp > 0 ; tmp--) \ - if ((getreg8(Z16F_UART0_STAT0) & Z16F_UARTSTAT0_TDRE) != 0) \ - break; \ - } while (0) +# define z16f_contrde() \ + ((getreg8(Z16F_UART0_STAT0) & Z16F_UARTSTAT0_TDRE) != 0) # define z16f_contxd(ch) \ - putreg8((ubyte)(ch), Z16F_UART0_STAT0) + putreg8((ubyte)(ch), Z16F_UART0_TXD) #endif /**************************************************************************** * Private Functions ****************************************************************************/ +static void _up_putc(int ch) +{ + int tmp; + for (tmp = 1000 ; tmp > 0 && !z16f_contrde(); tmp--); + z16f_contxd(ch); +} + /**************************************************************************** * Public Functions ****************************************************************************/ int up_putc(int ch) { - z16f_contrde(); - z16f_contxd(ch); + _up_putc(ch); /* Check for LF */ @@ -689,8 +685,7 @@ int up_putc(int ch) { /* Add CR */ - z16f_contrde(); - z16f_contxd('\r'); + _up_putc('\r'); } return ch; |