From b4dbad09e9afd36fed8f4faf514bfe97720cc770 Mon Sep 17 00:00:00 2001 From: Markus Koch Date: Sat, 13 Jan 2018 12:00:42 +0100 Subject: [PATCH] Fix binary commands, add cgram support --- firmware/hcs12ss59t | 2 +- firmware/uart.c | 33 +++++++++++++++++++++++++++++---- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/firmware/hcs12ss59t b/firmware/hcs12ss59t index 1739d5b..2fc07b3 160000 --- a/firmware/hcs12ss59t +++ b/firmware/hcs12ss59t @@ -1 +1 @@ -Subproject commit 1739d5b3ae1f3c8a83237366b3f339fe128b4fdc +Subproject commit 2fc07b393e74ba2b7dbe85824fc0bdd85a30038c diff --git a/firmware/uart.c b/firmware/uart.c index 15b311b..ff4dfd8 100755 --- a/firmware/uart.c +++ b/firmware/uart.c @@ -33,6 +33,7 @@ uchar byte_counter = 0; uchar cmd = 0; #define BUFSZ 12 char dbuf[BUFSZ]; +uchar cmax = 0; void uartInit(ulong baudrate, uchar parity, uchar stopbits, uchar databits) { @@ -71,7 +72,13 @@ void uartPoll(void) while(tx_write_ptr!=tx_read_ptr) { data = tx_buf[tx_read_ptr]; - if ((data < 32) || (data > 127)) { // any control character - cmd done + + if (cmax && (byte_counter >= cmax)) { + data = 0; + cmax = 0; + } + + if ((!cmax) && ((data < 32) || (data > 127))) { // any control character - cmd done if (cmd) { txs("\r\n"); switch (cmd) { @@ -121,6 +128,9 @@ void uartPoll(void) wdt_enable(WDTO_15MS); while (1); // WD Timeout -> CPU reset break; + case 'C': + hcs12ss59t_set_character(dbuf[0], dbuf+1, 1); + break; case 'h': case '?': txs("text : t<12b ASCII>\r\n"); @@ -130,6 +140,8 @@ void uartPoll(void) txs("shift : s...\r\n"); txs(" : S...\r\n"); //txs("reset : r / R\r\n"); + //txs("cgram : C<2b RAW>\r\n"); + break; default: ok = 0; @@ -144,8 +156,7 @@ void uartPoll(void) cmd = 0; byte_counter = 0; } - if (data = '\n') - txs("\r\n>"); + txs("\r\n>"); } else { // ASCII character if (cmd == 0) { echo = 1; @@ -153,9 +164,23 @@ void uartPoll(void) for (int i = 0; i < BUFSZ; ++i) { dbuf[i] = 0; } + switch (cmd) { + case 'T': + cmax = BUFSZ; + break; + case 'B': + cmax = 1; + break; + case 'C': + cmax = 3; + break; + default: + cmax = 0; + break; + } } else { - if (cmd == 's' || cmd == 'S') { + if (cmd == 's' || cmd == 'S') { // Shift mode for (int i = 1; i < HCS12SS59T_NUMDIGITS; ++i) { dbuf[i - 1] = dbuf[i]; }