Dependents:   ArtnetDMX

Revision:
3:667d8f669992
Parent:
2:5efe22304016
Child:
4:54754f9736f1
--- a/DMX.cpp	Mon Mar 14 22:24:57 2016 +0000
+++ b/DMX.cpp	Wed Mar 16 23:57:50 2016 +0000
@@ -1,5 +1,7 @@
 #include "DMX.h"
 
+DigitalOut led(LED1);
+
 DMX::DMX(PinName pin) : _pin(pin) 
 {
     this->I32_m_BreakTime = 88;
@@ -30,40 +32,45 @@
 
 void DMX::V_SendDMX()
 {
+    t.detach();
     _pin = 0;
-    t.attach_us(this, &DMX::V_SendMAB, 88);
+    wait_us(88);
+    DMX::V_SendMAB();
 }
 
 void DMX::V_SendMAB()
 {
+    t.detach();
     _pin = 1;
-    t.detach();
-    t.attach_us(this, &DMX::V_SendSC, 8);
+    wait_us(8);
+    DMX::V_SendSC();
 }
 
 void DMX::V_SendSC()
 {
+    t.detach();
     _pin = 0;
-    t.detach();
-    t.attach_us(this, &DMX::V_SendData, 44);
+    wait_us(44);
+    DMX::V_SendData();;
 }
 
 void DMX::V_SendData()
 {
+    t.detach();
     if(I32_m_BitCounter == 0)
     {
         _pin = 0;
         I32_m_BitCounter++;
-        t.detach();
-        t.attach_us(this, &DMX::V_SendData, 4);
+        wait_us(4);
+        DMX::V_SendData();
     }
     else if(I32_m_BitCounter == 9 )
     {
         _pin = 1;
         I32_m_BitCounter = 0;
         I32_m_ChannelCounter++;
-        t.detach();
-        t.attach_us(this, &DMX::V_SendData, 8);
+        wait_us(8);
+        DMX::V_SendData();
     }
     else
     {
@@ -78,16 +85,17 @@
                 _pin =0;
             }
             I8_m_Data[I32_m_ChannelCounter] = I8_m_Data[I32_m_ChannelCounter] >> 1;
+            I32_m_BitCounter++;
+            wait_us(4);
+            DMX::V_SendData();
         }
         else
         {
+            led = 1;
             I32_m_ChannelCounter = 0;
             I32_m_BitCounter = 0;
-            DMX::V_SendDMX();
         }
-        I32_m_BitCounter++;
-        t.detach();
-        t.attach_us(this, &DMX::V_SendData, 4);
+        
     }
 }