Half Duplex Version of SWSPI

Fork of SWSPI by Dave Van Wagner

Files at this revision

API Documentation at this revision

Comitter:
martinsimpson
Date:
Tue Jun 19 10:49:39 2018 +0000
Parent:
1:17d758fe52f8
Child:
3:d3be72ac889e
Commit message:
Version 2; To correct write followed by read cycle

Changed in this revision

SWSPI_HD.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/SWSPI_HD.cpp	Tue Jun 19 09:55:18 2018 +0000
+++ b/SWSPI_HD.cpp	Tue Jun 19 10:49:39 2018 +0000
@@ -54,25 +54,31 @@
 int SWSPI_HD::write(int value)
 {
     int read = 0;
+
+    //Write Out
+    dio->output();// set as an OUTPUT
+    
     for (int bit = bits-1; bit >= 0; --bit)
     {
         dio->output();// set as an OUTPUT
         
         dio->write(((value >> bit) & 0x01) != 0);
 
-        dio->input();// set as an INPUT
+        sclk->write(!polarity);
 
+        wait(1.0/freq/2);
+    }
+    
+    //Read In
+    dio->input();// set as an INPUT
+    
+    for (int bit = bits-1; bit >= 0; --bit)
+    {
         if (phase == 0)
         {
-            
             if (dio->read())   // was miso
                 read |= (1 << bit);
         }
-
-        sclk->write(!polarity);
-
-        wait(1.0/freq/2);
-
         if (phase == 1)
         {
             if (dio->read())   // was miso
@@ -83,7 +89,6 @@
 
         wait(1.0/freq/2);
     }
-    
     return read;
 }