From 5bcec6fd976b3f92961b9881007283a0046c91d4 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 4 Jul 2011 21:55:37 +0000 Subject: new language, fix pagesize bug --- firmware/firmware.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'firmware/firmware.c') diff --git a/firmware/firmware.c b/firmware/firmware.c index 4a68195..b626e2f 100644 --- a/firmware/firmware.c +++ b/firmware/firmware.c @@ -70,7 +70,7 @@ main(void) UCSRB = _BV(RXEN) | _BV(TXEN); UBRRH = UBRRH_VALUE; UBRRL = UBRRL_VALUE; - UCSRA |= _BV(U2X); + UCSRA &= ~_BV(U2X); putch('+'); /* say hallo */ for (;;) { @@ -78,15 +78,14 @@ main(void) switch (state) { case INIT: switch (ch) { - case 'D': + case '@': state = PAGE; break; - case 'P': /* legacy: confim programming state */ - putch('p'); - break; - case 'R': + case '-': reboot(); break; + default: + break; } break; case PAGE: @@ -100,7 +99,7 @@ main(void) data.byte[n % 2] = ch; if (n % 2) boot_page_fill(off + n - 1, data.word); - if (n++ == SPM_PAGESIZE) + if (++n == SPM_PAGESIZE) state = CKSUM; break; case CKSUM: @@ -109,9 +108,9 @@ main(void) boot_spm_busy_wait(); boot_page_write(off); boot_spm_busy_wait(); - putch('d'); /* confirm */ + putch('.'); /* confirm */ } else - putch('D'); + putch('!'); /* flag error */ state = INIT; break; } -- cgit v1.2.3