diff --git a/src/drivers/spibitbang1.cpp b/src/drivers/spibitbang1.cpp
index 2cf5ea3a5c76e7c9da38d0fd40074ff5ad016954..559b51d53d93f50a56ec01733faf1bfaad22be0f 100644
--- a/src/drivers/spibitbang1.cpp
+++ b/src/drivers/spibitbang1.cpp
@@ -13,47 +13,46 @@ c_spibitbang1::c_spibitbang1(const t_driver config1) : drvbase (config1){
   SDIOpin=config1.parameters[1];
   CSpin=config1.parameters[3];
 };
+#define setbit(dev,reg,v) bit[0]=v;parent->seti2c(dev,1,reg,bit)
 
 bool c_spibitbang1::I2Csend(int addr,int reg,int len,t_buffer* data,int direction){
   t_buffer bit[1]={0};
   if (direction==0) {  //Send
     int data2 = ( 0x00 << 23 ) + ( 0x00 << 21 ) + ( reg << 8 ) + data[0];
-    std::cout << "SPI send" << data2 << "\n";          
-    bit[0]={0};parent->seti2c(CS,1,CSpin,bit);
+    std::cout << "SPI send" << data2 << "\n";
+    setbit(CS,CSpin,0);          
     for (int x=0;x<32;x++)
     {
-      bit[0]=(data2>>(31-x)) & 1;  //Not that efficient, but works
-      parent->seti2c(SDIO,1,SDIOpin,bit);
-      bit[0]={1};parent->seti2c(CLK,1,CLKpin,bit);
-      bit[0]={0};parent->seti2c(CLK,1,CLKpin,bit);
+      setbit(SDIO,SDIOpin,(data2>>(31-x)) & 1);          
+      setbit(CLK,CLKpin,1);
+      setbit(CLK,CLKpin,0);          
     }
-    bit[0]={1};parent->seti2c(CS,1,CSpin,bit);
-    bit[0]={1};parent->seti2c(SDIO,1,SDIOpin,bit);
+    setbit(CS,CSpin,1);          
+    setbit(SDIO,SDIOpin,1);          
   } else {
     int data2 = ( 0x01 << 15) + ( 0x00 << 13 ) + reg;
-    bit[0]={0};parent->seti2c(CLK,1,CLKpin,bit);
-    bit[0]={0};parent->seti2c(CS,1,CSpin,bit);//enable
+    setbit(CLK,CLKpin,0);          
+    setbit(CS,CSpin,0);          
     for (int x=0;x<16;x++){
-      bit[0]={0};parent->seti2c(CLK,1,CLKpin,bit);
-      bit[0]=(data2>>(15-x)) & 1;  //Not that efficient, but works
-      parent->seti2c(SDIO,1,SDIOpin,bit);
-      bit[0]={1};parent->seti2c(CLK,1,CLKpin,bit);
+      setbit(CLK,CLKpin,0);          
+      setbit(SDIO,SDIOpin,(data2>>(15-x)) & 1);          
+      setbit(CLK,CLKpin,1);          
     }
-    bit[0]=1;parent->seti2c(SDIOdir,1,SDIOpin,bit);
-    bit[0]=0;parent->seti2c(CLK,1,CLKpin,bit);
+    setbit(SDIOdir,SDIOpin,1);          
+    setbit(CLK,CLKpin,0);          
 
     data2=0;
     for (int x=0;x<8;x++){
         parent->geti2c(SDIO,1,SDIOpin,bit);
         data2<<=1;
         data2+=bit[0];
-        bit[0]=1;parent->seti2c(CLK,1,CLKpin,bit);
-        bit[0]=0;parent->seti2c(CLK,1,CLKpin,bit);
+        setbit(CLK,CLKpin,1);          
+        setbit(CLK,CLKpin,0);          
       }
 
-    bit[0]=1;parent->seti2c(CS,1,CSpin,bit);//disable
-    bit[0]=1;parent->seti2c(SDIO,1,SDIOpin,bit);
-    bit[0]=0;parent->seti2c(SDIOdir,1,SDIOpin,bit);
+    setbit(CS,CSpin,1);          
+    setbit(SDIO,SDIOpin,1);          
+    setbit(SDIOdir,SDIOpin,0);          
     std::cout << "spibitbang  reg="<<reg<<" data="<<data2<<"\n";
     data[0]=data2;
   }