Kevin Anderson
/
DataCommFreedom
Using FRDM Board to output data and a clock for communications example.
Diff: main.cpp
- Revision:
- 6:4ef63169c970
- Parent:
- 5:8c012e2c1ba8
- Child:
- 7:aeeb441a68b8
--- a/main.cpp Mon Mar 23 14:20:12 2015 +0000 +++ b/main.cpp Sun Mar 29 03:54:41 2015 +0000 @@ -15,34 +15,24 @@ int skew_flag; //skew flag for while loop unsigned char pre = PREAMBLE, add = ADDRESS; unsigned char data[100] = "Hi!"; //data output -int done = 0, i = 0, j = 128; //increment variables +int done = 0,sent = 0 ,i = 0, j = 128; //increment variables +void send_byte(int byte); -int main() { - - //turn on red led to show programming has worked - myled = 0; - //initialize output pins - clock_pin = 0; - serial_out = 0; - //skew flag - skew_flag = 1; - //set timers - msecs = 1000; - sksecs = 800; - - //output preamble - while(!done) - { +void send_byte(int byte) +{ + //not done(reset) + done = 0; + + //output byte + while(!done) { //start timer for clock t.start(); //wait until the timer has reached the set time. - while(t.read_ms() < msecs) - { + while(t.read_ms() < msecs) { //extract data just before clock goes high - if(!clock_pin && skew_flag && t.read_ms() > sksecs) - { + if(!clock_pin && skew_flag && t.read_ms() > sksecs) { //extract data bit - serial_out = (pre / j) % 2; + serial_out = (byte / j) % 2; skew_flag = 0; j /= 2; //decrement j to get to next bit location } @@ -55,86 +45,40 @@ //reset skew flag skew_flag = 1; //last preamble bit sent - reset/increment variables - if(j==0) - { + if(j==0) { done = 1; - j = 128; - } - } - - //reset done - done = 0; - - //output address - while(!done) - { - //start timer for clock - t.start(); - //wait until the timer has reached the set time. - while(t.read_ms() < msecs) - { - //extract data just before clock goes high - if(!clock_pin && skew_flag && t.read_ms() > sksecs) - { - //extract data bit - serial_out = (add / j) % 2; - skew_flag = 0; - j /= 2; //decrement j to get to next bit location - } - } - //stop and reset the timer - t.stop(); - t.reset(); - //switch clock signal - clock_pin = !clock_pin; - //reset skew flag - skew_flag = 1; - //last preamble bit sent - reset/increment variables - if(j==0) - { - done = 1; - j = 128; + j = 128; } - } - - //reset done - done = 0; + } +} + +int main() +{ - //output a clock pulse and data. - while(!done) - { - //start timer for clock - t.start(); - //wait until the timer has reached the set time. - while(t.read_ms() < msecs) - { - //extract data just before clock goes high - if(!clock_pin && skew_flag && t.read_ms() > sksecs) - { - //extract data bit - serial_out = (data[i] / j) % 2; - skew_flag = 0; - j /= 2; //decrement j to get to next bit location - } + //turn on red led to show programming has worked + myled = 0; + //initialize output pins + clock_pin = 0; + serial_out = 0; + //skew flag + skew_flag = 1; + //set timers + msecs = 1000; + sksecs = 800; + + //output preamble + send_byte(pre); + //output address + send_byte(add); + //output data + i=0; + while(!sent) { + send_byte(data[i]); + //finished sending data + if(i>2) { + sent = 1; } - //stop and reset the timer - t.stop(); - t.reset(); - //switch clock signal - clock_pin = !clock_pin; - //reset skew flag - skew_flag = 1; - //last bit sent - reset/increment variables - if(j==0) - { - j=128; - i++; - } - //finished sending data - if(i>2) - { - done = 1; - } + i=i+1; } //turn off red led to show sending has finished myled = 1;