Diff: DMX.cpp
- 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); + } }