ibmpc: Fix 'Ack' check of sending data

This commit is contained in:
tmk 2020-05-08 21:32:41 +09:00
parent 54e3c239fc
commit 343c32afc6

View file

@ -105,13 +105,13 @@ int16_t ibmpc_host_send(uint8_t data)
/* terminate a transmission if we have */ /* terminate a transmission if we have */
inhibit(); inhibit();
wait_us(100); // 100us [4]p.13, [5]p.50 wait_us(100); // [5]p.54
/* 'Request to Send' and Start bit */ /* 'Request to Send' and Start bit */
data_lo(); data_lo();
wait_us(100); wait_us(100);
clock_hi(); clock_hi(); // [5]p.54 [clock low]>100us [5]p.50
WAIT(clock_lo, 10000, 1); // 10ms [5]p.50 WAIT(clock_lo, 10000, 1); // [5]p.53, -10ms [5]p.50
/* Data bit[2-9] */ /* Data bit[2-9] */
for (uint8_t i = 0; i < 8; i++) { for (uint8_t i = 0; i < 8; i++) {
@ -135,14 +135,15 @@ int16_t ibmpc_host_send(uint8_t data)
/* Stop bit */ /* Stop bit */
wait_us(15); wait_us(15);
data_hi(); data_hi();
WAIT(clock_hi, 50, 6);
/* Ack */
WAIT(data_lo, 50, 6);
WAIT(clock_lo, 50, 7); WAIT(clock_lo, 50, 7);
/* Ack */
WAIT(data_lo, 50, 8);
/* wait for idle state */ /* wait for idle state */
WAIT(clock_hi, 50, 8); WAIT(clock_hi, 50, 9);
WAIT(data_hi, 50, 9); WAIT(data_hi, 50, 10);
// clear buffer to get response correctly // clear buffer to get response correctly
recv_data = 0xFFFF; recv_data = 0xFFFF;