diff --git a/board/chronos/Jamfile b/board/chronos/Jamfile index bf3341d785..0899e4631b 100644 --- a/board/chronos/Jamfile +++ b/board/chronos/Jamfile @@ -2,7 +2,7 @@ SubDir TOP board chronos ; HDRS += $(TOP)/board/$(CPU)/include ; -Module board : debug_uart.c board_init.c ; +Module board : putchar.c board_init.c ; UseModule board ; SubInclude TOP board $(BOARD) drivers ; diff --git a/board/chronos/debug_uart.c b/board/chronos/debug_uart.c deleted file mode 100644 index d80c9c6e83..0000000000 --- a/board/chronos/debug_uart.c +++ /dev/null @@ -1,21 +0,0 @@ -#include -#include "board.h" - -#define UART1_TX TXBUF1 -#define UART1_WAIT_TXDONE() while( (UTCTL1 & TXEPT) == 0 ) { _NOP(); } - - -int putchar(int c) -{ -// UART1_TX = c; -// UART1_WAIT_TXDONE(); -// -// if (c == 10) { -// UART1_TX = 13; -// UART1_WAIT_TXDONE(); -// } - - return c; -} - - diff --git a/board/chronos/drivers/Jamfile b/board/chronos/drivers/Jamfile index d89390029d..54d2fb4e7b 100644 --- a/board/chronos/drivers/Jamfile +++ b/board/chronos/drivers/Jamfile @@ -5,3 +5,5 @@ HDRS += $(TOP)/board/$(CPU)/drivers/include ; Module board_display : display.c display1.c ; Module board_cc110x : cc430-cc110x.c : cc110x_cc430 ; Module board_buzzer : buzzer.c : hwtimer ; + +Module display_putchar : display_putchar.c : board_display ; diff --git a/board/chronos/drivers/display_putchar.c b/board/chronos/drivers/display_putchar.c new file mode 100644 index 0000000000..2f1d9468af --- /dev/null +++ b/board/chronos/drivers/display_putchar.c @@ -0,0 +1,42 @@ +#include +#include +#include + +extern int toupper(int c); +extern void (*_putchar)(int c); + +static char display_buf[11]; + +void putchar_to_display(); + +void init_display_putchar() { + memset(display_buf, '\0', 11); + _putchar = putchar_to_display; +} + +void putchar_to_display(int c) { + if (c == '\n') { + display_buf[4] = 1; + return; + } + + if (display_buf[4]) { + memset(display_buf, '\0', 11); + } else { + display_buf[0] = display_buf[1]; + display_buf[1] = display_buf[2]; + display_buf[2] = display_buf[3]; + display_buf[3] = display_buf[5]; + display_buf[5] = display_buf[6]; + display_buf[6] = display_buf[7]; + display_buf[7] = display_buf[8]; + display_buf[8] = display_buf[9]; + } + + display_buf[9] = toupper(c); + + clear_display_all(); + + display_chars(LCD_SEG_L1_3_0, display_buf, SEG_ON); + display_chars(LCD_SEG_L2_5_0, display_buf+4, SEG_ON); +} diff --git a/board/chronos/drivers/include/display_putchar.h b/board/chronos/drivers/include/display_putchar.h new file mode 100644 index 0000000000..6adbb9c9c0 --- /dev/null +++ b/board/chronos/drivers/include/display_putchar.h @@ -0,0 +1,6 @@ +#ifndef __DISPLAY_PUTCHAR_H +#define __DISPLAY_PUTCHAR_H + +void init_display_putchar(); + +#endif /* __DISPLAY_PUTCHAR_H */ diff --git a/board/chronos/putchar.c b/board/chronos/putchar.c new file mode 100644 index 0000000000..436d350f51 --- /dev/null +++ b/board/chronos/putchar.c @@ -0,0 +1,11 @@ +static void _dummy(int c) { +} + +void (*_putchar)(int c) = _dummy; + +int putchar(int c) +{ + _putchar(c); + return c; +} + diff --git a/board/msb-430-common/Jamfile b/board/msb-430-common/Jamfile index 147e49ea23..78807c1441 100644 --- a/board/msb-430-common/Jamfile +++ b/board/msb-430-common/Jamfile @@ -27,7 +27,7 @@ SubDir TOP board msb-430-common ; -Module board : board_init.c debug_uart.c ; +Module board : board_init.c uart1.c ; Module board_config : board_config.c : flashrom ; UseModule board ; diff --git a/board/msb-430-common/putchar.c b/board/msb-430-common/putchar.c new file mode 100644 index 0000000000..4193c0db42 --- /dev/null +++ b/board/msb-430-common/putchar.c @@ -0,0 +1,7 @@ +#include + +void (_putchar(int)) = uart1_putchar; + +void putchar(int c) { + _putchar(c); +} diff --git a/board/msb-430-common/debug_uart.c b/board/msb-430-common/uart1.c similarity index 100% rename from board/msb-430-common/debug_uart.c rename to board/msb-430-common/uart1.c diff --git a/projects/hi_earth/Jamfile b/projects/hi_earth/Jamfile index b59a2a7d33..812f2c9127 100644 --- a/projects/hi_earth/Jamfile +++ b/projects/hi_earth/Jamfile @@ -1,5 +1,5 @@ SubDir TOP projects hi_earth ; -Module hi_earth : main.c : board_display hwtimer auto_init ; +Module hi_earth : main.c : auto_init display_putchar ; UseModule hi_earth ; diff --git a/projects/hi_earth/main.c b/projects/hi_earth/main.c index a335d450eb..fa70601b9d 100644 --- a/projects/hi_earth/main.c +++ b/projects/hi_earth/main.c @@ -1,61 +1,9 @@ -//****************************************************************************** -// eZ430 chronos hello world -// Description: initializes lcd module and shows the string 'hi earth' on the -// lcd display becuase 'hello world' is too long -// Author: Felix Genicio -//****************************************************************************** - -#include -#include -#include -#include - -void display1(void); -void display2(void); +#include int main(void) { - lcd_init(); - - clear_display_all(); - - uint8_t i = 0; - uint16_t j; + printf("Hi Earth\n"); while(1) { - if (i) { - i = 0; - display1(); - } - else { - i = 1; - display2(); - } - for (j = 1; j < 10; j++) { - hwtimer_wait(3333); - } - display_symbol(5, SEG_ON); -/* - for (j = 1; j != 0; j++) { - if (i) { - display_symbol(LCD_ICON_BEEPER1, SEG_ON); - } - else { - display_symbol(5, SEG_OFF); - } - } -*/ } } - -void display1(void) { - display_chars(LCD_SEG_L1_3_0, "HI", SEG_ON); - display_chars(LCD_SEG_L2_5_0, " EARTH", SEG_OFF); -} - -void display2(void) { - display_chars(LCD_SEG_L1_3_0, "HI", SEG_OFF); - display_chars(LCD_SEG_L2_5_0, (char*) itoa(TA0R, 6, 0), SEG_ON); -// display_chars(LCD_SEG_L2_5_0, (uint8_t*) " EARTH", SEG_ON); -} - diff --git a/sys/auto_init.c b/sys/auto_init.c index 2dc5338b9b..e9e7a4d486 100644 --- a/sys/auto_init.c +++ b/sys/auto_init.c @@ -10,6 +10,16 @@ extern void main(void); void auto_init(void) { +#ifdef MODULE_BOARD_DISPLAY + extern void lcd_init(); + lcd_init(); + DEBUG("DISP OK"); +#endif +#ifdef MODULE_DISPLAY_PUTCHAR + extern void init_display_putchar(); + init_display_putchar(); + DEBUG("DISP OK"); +#endif #ifdef MODULE_HWTIMER DEBUG("Auto init hwtimer module.\n"); hwtimer_init();