aboutsummaryrefslogtreecommitdiff
path: root/firmware/firmware.c
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2011-07-04 21:55:37 +0000
committerDimitri Sokolyuk <demon@dim13.org>2011-07-04 21:55:37 +0000
commit5bcec6fd976b3f92961b9881007283a0046c91d4 (patch)
tree652ac83c8da7aa428427212c4f0f06e38b4737c6 /firmware/firmware.c
parent99ad22f055c9700b954be3f12b259d6977d9c870 (diff)
new language, fix pagesize bug
Diffstat (limited to 'firmware/firmware.c')
-rw-r--r--firmware/firmware.c17
1 files changed, 8 insertions, 9 deletions
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;
}