diff options
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 43 |
1 files changed, 37 insertions, 6 deletions
@@ -9,26 +9,57 @@ #include "task/lock.h" #include "task/idle.h" #include "time/clock.h" -#include "io/usart.h" +#include "io/io.h" +#include "mcu/io/usart.h" #include "tshield/tshield.h" -#include "mcu/task/context.h" -#include "shell.h" - #define IN_LENGTH 64 #define WAIT_CYCLES(cycles) for (volatile unsigned long i = 0; i < cycles; ++i) {} +void writer() { + + char* buffer = "hello world"; + size_t length = 11; + + + while(1) { + debug_led(1, 0); + WAIT_CYCLES(300000); + debug_led(1, 1); + write(&usart0, buffer, length); + } +} + +void reader() { + char in; + + while(1) { + debug_led(2, 0); + debug_led(3, 0); + if (read(&usart0, &in, 1) >= 0) { + debug_led(2, 1); + } else { + debug_led(3, 1); + WAIT_CYCLES(30000); + } + + } +} DECLARE_TASK(task_idle, IDLE_STACK_SIZE, idle_entry, 0); -DECLARE_TASK(task1, DEFAULT_STACK_SIZE, shell, 1); +DECLARE_TASK(task1, DEFAULT_STACK_SIZE, writer, 1); +DECLARE_TASK(task2, DEFAULT_STACK_SIZE, reader, 2); int main(int argc, char *argv[]) { cli(); tshield_init(); - usart_init(115200); + + open(&usart0); + ioctl(&usart0, IOCTL_SET_BAUD, 115200); spawn_idle(&task_idle); spawn(&task1); + spawn(&task2); sei(); clock_init(10, schedule); |