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.
--- 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);