sync logic with Mork version.
authorDarron Broad <darron@kewl.org>
Sat, 21 Mar 2015 18:26:58 +0000
changeset 83 9044a52f97f0
parent 82 89a8eb206b34
child 84 c15ea9108199
sync logic with Mork version.

this adds the RUN mode for sourced programming.

this is looking ok. now we need to somehow create
a libopencm3 make file which isn't completely bogus
like the one it demos.
io.c
nanunanu.c
uart.c
--- a/io.c	Sat Mar 21 11:47:59 2015 +0000
+++ b/io.c	Sat Mar 21 18:26:58 2015 +0000
@@ -56,7 +56,7 @@
 	PORTC = 0;
 	DDRC = 0;		/* ALL INPUT */
 #else
-	PORTC = 0;
+	PORTC = 1;		/* RUN */
 	DDRC |= (1 << DDC0);	/* OUTPUT */
 	DDRC |= (1 << DDC1);	/* OUTPUT */
 	DDRC |= (1 << DDC2);	/* OUTPUT */
--- a/nanunanu.c	Sat Mar 21 11:47:59 2015 +0000
+++ b/nanunanu.c	Sat Mar 21 18:26:58 2015 +0000
@@ -74,11 +74,11 @@
 int
 main(void)
 {
+	/* LED init */
+	led_init();
+
 	while (true) {
-		/* LED Init */
-		led_init();
-
-		/* UART Start up */
+		/* UART init */
 		uart_init();
 
 		/* Program Chip */
@@ -86,7 +86,7 @@
 		stk500v2_listen();
 		io_close();
 
-		/* UART Shut down */
+		/* UART reset */
 		uart_shutdown();
 	}
 
--- a/uart.c	Sat Mar 21 11:47:59 2015 +0000
+++ b/uart.c	Sat Mar 21 18:26:58 2015 +0000
@@ -61,11 +61,14 @@
 {
 	static uint16_t i = 0;
 
-	while ((UCSR0A & (1 << RXC0)) == 0) {
+	while (uart_poll() == false) {
 		if (!i++)
 			led_toggle();
 	}
-	return (uint8_t)UDR0;
+	if (!i++)
+		led_toggle();
+
+	return ((uint8_t)UDR0);
 }
 
 /*
@@ -83,8 +86,8 @@
 int16_t
 uart_putchar(char c)
 {
-	while ((UCSR0A & (1 << UDRE0)) == 0)
-		;
+	uart_flush();
+
 	UDR0 = c;
 
 	return (0);