]> git.friedersdorff.com Git - max/tmk_keyboard.git/blobdiff - ps2.c
added PS/2 to USB converter use V-USB as protocol stack
[max/tmk_keyboard.git] / ps2.c
diff --git a/ps2.c b/ps2.c
index adb425ae3345e0d548a80a5cdcb8c0e0c5d9474b..dd5b24129fac8f96c824f3a284a21a77c616dba0 100644 (file)
--- a/ps2.c
+++ b/ps2.c
@@ -104,9 +104,9 @@ uint8_t ps2_host_send(uint8_t data)
 
     /* request to send */
     clock_lo();
-    data_lo();
     _delay_us(100);
     /* start bit [1] */
+    data_lo();
     clock_hi();
     WAIT(clock_lo, 15000, 1);
     /* data [2-9] */
@@ -137,6 +137,9 @@ uint8_t ps2_host_send(uint8_t data)
 
     return 1;
 ERROR:
+    /* inhibit device to send */
+    data_hi();
+    clock_lo();
     return 0;
 }
 
@@ -146,7 +149,7 @@ uint8_t ps2_host_recv(void)
     bool parity = true;
     ps2_error = 0;
 
-    /* cancel to sync */
+    /* terminate a transmission if we have */
     clock_lo();
     _delay_us(100);
 
@@ -155,7 +158,7 @@ uint8_t ps2_host_recv(void)
     data_hi();
 
     /* start bit [1] */
-    WAIT(clock_lo, 20000, 1);
+    WAIT(clock_lo, 2000, 1);    // How long should we wait?
     WAIT(data_lo, 1, 2);
     WAIT(clock_hi, 50, 3);
 
@@ -187,6 +190,9 @@ uint8_t ps2_host_recv(void)
 
     return data;
 ERROR:
+    /* inhibit device to send */
+    data_hi();
+    clock_lo();
     return 0;
 }