# HG changeset patch # User Paul Boddie # Date 1440352929 -7200 # Node ID cb9fe339c6ed30d1e657c71bb13cdeaae5be4efb # Parent c3fae781613c6c8992581b061499031d2269ef9d Fixed data pin I/O which made assumptions about pin ordering. diff -r c3fae781613c -r cb9fe339c6ed ArduinoAm29F010.cpp --- a/ArduinoAm29F010.cpp Sun Aug 23 19:20:03 2015 +0200 +++ b/ArduinoAm29F010.cpp Sun Aug 23 20:02:09 2015 +0200 @@ -21,6 +21,7 @@ DQ0 = 7, DQ1 = 6, DQ2 = 5, DQ3 = 4, DQ4 = 8, DQ5 = 9, DQ6 = 10, DQ7 = 11; +const int datapins[8] = {DQ7, DQ6, DQ5, DQ4, DQ3, DQ2, DQ1, DQ0}; const int BUFSIZE = 9; char inbuffer[BUFSIZE]; int nread = 0; @@ -69,16 +70,14 @@ int sampleData() { - int i = DQ7; + int i = 0; /* start at DQ7 */ int data = 0; - while (1) + while (i < 8) { - data += digitalRead(i); - if (i == DQ0) - break; - i--; data <<= 1; + data += digitalRead(datapins[i]); + i++; } return data; @@ -97,14 +96,12 @@ void writeData(int data) { - int i = DQ0; + int i = 8; /* start at DQ0 */ - while (1) + while (i > 0) { - digitalWrite(i, data % 2); - if (i == DQ7) - break; - i++; + i--; + digitalWrite(datapins[i], data % 2); data >>= 1; } }