diff options
author | Jakob Odersky <jodersky@gmail.com> | 2014-04-03 19:23:49 +0200 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2014-04-03 19:23:49 +0200 |
commit | 465385009a324d5369abd0474f7bd55a88ed56d2 (patch) | |
tree | 5a4acaa0d0ab706c4e4587384279ac2b79992907 | |
parent | b6181e4a21b1bc3b5615604e175c6a297b661687 (diff) | |
download | mux-465385009a324d5369abd0474f7bd55a88ed56d2.tar.gz mux-465385009a324d5369abd0474f7bd55a88ed56d2.tar.bz2 mux-465385009a324d5369abd0474f7bd55a88ed56d2.zip |
echo test
-rw-r--r-- | kernel/io/mcu/atmega2560/usart.c | 8 | ||||
-rw-r--r-- | main.c | 33 |
2 files changed, 15 insertions, 26 deletions
diff --git a/kernel/io/mcu/atmega2560/usart.c b/kernel/io/mcu/atmega2560/usart.c index 381f403..6f59787 100644 --- a/kernel/io/mcu/atmega2560/usart.c +++ b/kernel/io/mcu/atmega2560/usart.c @@ -134,8 +134,8 @@ ISR(USART0_UDRE_vect) { } //called when byte is received -ISR(USART0_RX_vect, ISR_NAKED) { - context_save(); +ISR(USART0_RX_vect) { + //context_save(); struct usart_private* priv = (struct usart_private*) usart0.private_data; @@ -143,6 +143,6 @@ ISR(USART0_RX_vect, ISR_NAKED) { rbuffer_write(&priv->rx_buffer, c); wake_all_queue(&priv->rx_queue); - context_restore(); - asm volatile ("reti"); + //context_restore(); + //asm volatile ("reti"); }
\ No newline at end of file @@ -16,39 +16,29 @@ #define WAIT_CYCLES(cycles) for (volatile unsigned long i = 0; i < cycles; ++i) {} -void writer() { - - char* buffer = "hello world"; - size_t length = 11; - +void worker() { + char buffer[64]; while(1) { debug_led(1, 0); - WAIT_CYCLES(300000); - debug_led(1, 1); - write(&usart0, buffer, length); - } -} + debug_led(2, 0); -void reader() { - char in; + int length = read(&usart0, buffer, 64); - while(1) { - debug_led(2, 0); - debug_led(3, 0); - if (read(&usart0, &in, 1) >= 0) { - debug_led(2, 1); + if (length > 0) { + debug_led(1, 1); + char lstr = ((char) length) + '0'; + write(&usart0, &lstr, sizeof(lstr)); } else { - debug_led(3, 1); + debug_led(2, 1); WAIT_CYCLES(30000); } - } } + DECLARE_TASK(task_idle, IDLE_STACK_SIZE, idle_entry, 0); -DECLARE_TASK(task1, DEFAULT_STACK_SIZE, writer, 1); -DECLARE_TASK(task2, DEFAULT_STACK_SIZE, reader, 2); +DECLARE_TASK(task1, DEFAULT_STACK_SIZE, worker, 1); int main(int argc, char *argv[]) { cli(); @@ -59,7 +49,6 @@ int main(int argc, char *argv[]) { spawn_idle(&task_idle); spawn(&task1); - spawn(&task2); sei(); clock_init(10, schedule); |