aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2012-03-16 13:37:27 +0000
committerDimitri Sokolyuk <demon@dim13.org>2012-03-16 13:37:27 +0000
commit0a6666c2f63e747c6eeae820152a69fff0e72ee9 (patch)
tree463ed5877308f1d4866976d637973244bbb0c977
parent120675e595fe1661fbe657bd22cb9cfbfeb0e558 (diff)
switch to dynamic memory allocation
-rw-r--r--kernel/lcd3.c7
-rw-r--r--kernel/uart.c9
2 files changed, 9 insertions, 7 deletions
diff --git a/kernel/lcd3.c b/kernel/lcd3.c
index 6bbb847..f8b3988 100644
--- a/kernel/lcd3.c
+++ b/kernel/lcd3.c
@@ -25,8 +25,6 @@
#include "kernel.h"
#include "tasks.h"
-FILE lcd_stream = FDEV_SETUP_STREAM(lcd_putchar, NULL, _FDEV_SETUP_WRITE);
-
#define CLEAR_DISPLAY _BV(0)
#define RETURN_HOME _BV(1)
@@ -88,6 +86,8 @@ write_byte(uint8_t byte, uint8_t rs)
void
lcd_init(void)
{
+ FILE *lcd_stream;
+
PORTDIR |= (_BV(DATA) | _BV(CLOCK) | _BV(E));
/* task init: wait >40ms */
@@ -108,7 +108,8 @@ lcd_init(void)
home();
- stderr = &lcd_stream;
+ lcd_stream = fdevopen(lcd_putchar, NULL);
+ stderr = lcd_stream;
}
int
diff --git a/kernel/uart.c b/kernel/uart.c
index 02911db..21389c7 100644
--- a/kernel/uart.c
+++ b/kernel/uart.c
@@ -30,8 +30,6 @@
#include "kernel.h"
#include "tasks.h"
-FILE uart_stream = FDEV_SETUP_STREAM(uart_putchar, uart_getchar, _FDEV_SETUP_RW);
-
#if USE_RXCIE
ISR(USART_RX_vect)
{
@@ -76,6 +74,8 @@ ISR(USART_UDRE_vect)
void
uart_init(void)
{
+ FILE *uart_stream;
+
UCSR0B = _BV(RXEN0) | _BV(TXEN0);
#if USE_RXCIE
UCSR0B |= _BV(RXCIE0);
@@ -88,8 +88,9 @@ uart_init(void)
UCSR0A &= ~_BV(U2X0);
#endif
- stdin = &uart_stream;
- stdout = &uart_stream;
+ uart_stream = fdevopen(uart_putchar, uart_getchar);
+ stdin = uart_stream;
+ stdout = uart_stream;
}
int