From: tmk Date: Sat, 11 Jan 2020 07:32:46 +0000 (+0900) Subject: ibmpc: Read data line earlier in ISR as possible X-Git-Url: https://git.friedersdorff.com/?a=commitdiff_plain;h=3e2900dcc87434b11d153f66146671d71f2999b8;p=max%2Ftmk_keyboard.git ibmpc: Read data line earlier in ISR as possible --- diff --git a/tmk_core/protocol/ibmpc.c b/tmk_core/protocol/ibmpc.c index e65ac461..ab446caa 100644 --- a/tmk_core/protocol/ibmpc.c +++ b/tmk_core/protocol/ibmpc.c @@ -172,10 +172,7 @@ ISR(IBMPC_INT_VECT) static uint8_t data = 0; static uint8_t parity = 1; - // return unless falling edge - if (clock_in()) { - return; - } + uint8_t dbit = IBMPC_DATA_PIN&(1< 10) { @@ -190,9 +187,9 @@ ISR(IBMPC_INT_VECT) case START: if (ibmpc_protocol == IBMPC_PROTOCOL_XT) { // ignore start(0) bit - if (!data_in()) return; + if (!dbit) return; } else { - if (data_in()) + if (dbit) goto ERROR; } case BIT0: @@ -204,7 +201,7 @@ ISR(IBMPC_INT_VECT) case BIT6: case BIT7: data >>= 1; - if (data_in()) { + if (dbit) { data |= 0x80; parity++; } @@ -218,7 +215,7 @@ ISR(IBMPC_INT_VECT) } break; case PARITY: - if (data_in()) { + if (dbit) { if (!(parity & 0x01)) goto ERROR; } else { @@ -227,7 +224,7 @@ ISR(IBMPC_INT_VECT) } break; case STOP: - if (!data_in()) + if (!dbit) goto ERROR; if (!ringbuf_put(&rb, data)) { ibmpc_error = IBMPC_ERR_FULL;