diff options
Diffstat (limited to 'src/avr')
-rw-r--r-- | src/avr/serial.c | 3 | ||||
-rw-r--r-- | src/avr/usbserial.c | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/src/avr/serial.c b/src/avr/serial.c index 10b95992..8b9dd14a 100644 --- a/src/avr/serial.c +++ b/src/avr/serial.c @@ -65,6 +65,8 @@ DECL_INIT(serial_init); ISR(USART0_RX_vect) { uint8_t data = UDR0; + if (data == MESSAGE_SYNC) + sched_wake_tasks(); if (receive_pos >= sizeof(receive_buf)) // Serial overflow - ignore it as crc error will force retransmit return; @@ -104,6 +106,7 @@ console_pop_input(uint8_t len) memmove(&receive_buf[copied], &receive_buf[copied + len] , needcopy - copied); copied = needcopy; + sched_wake_tasks(); } irqstatus_t flag = irq_save(); if (rpos != readb(&receive_pos)) { diff --git a/src/avr/usbserial.c b/src/avr/usbserial.c index 1b42d6d3..cc7bb12c 100644 --- a/src/avr/usbserial.c +++ b/src/avr/usbserial.c @@ -42,8 +42,10 @@ static void console_pop_input(uint8_t len) { uint8_t needcopy = receive_pos - len; - if (needcopy) + if (needcopy) { memmove(receive_buf, &receive_buf[len], needcopy); + sched_wake_tasks(); + } receive_pos = needcopy; } |