- The second time read always gives correct Device ID now!
- The first time read returns a value which I wrote to DATA_FORMAT register last time in previous compilation (before reboot) !
While this helps passing this point, afterwards I get non-sense numbers. So issue still stands.
I'm doing exact same steps as Arduino. The only difference is that in Arduino code, we manually set Chip Select to HIGH and LOW: http://www.sparkfun.com/tutorials/240
I assumed that in Netduino case this is managed by the framework (SPI API) after each read/write. However, this may not be the case since Netduino has no idea if I'm doing two writes with the first write being register number and the second write being value unless it internally keeps a state and knows odd write are register number and even writes are values. Which kinda hints to above odd/even issue.
At this point the code is so simple that I suspect a bug in the firmware. There shouldn't be a bug in wiring as suggested before since double read always gives correct device ID.
This is Arduino code for reference:
//Parameters: // char registerAddress - The register to write a value to // char value - The value to be written to the specified register. void writeRegister(char registerAddress, char value){ //Set Chip Select pin low to signal the beginning of an SPI packet. digitalWrite(CS, LOW); //Transfer the register address over SPI. SPI.transfer(registerAddress); //Transfer the desired register value over SPI. SPI.transfer(value); //Set the Chip Select pin high to signal the end of an SPI packet. digitalWrite(CS, HIGH); }
Is there a simple way to bypass .NET framework and simply use Arduino code on Netduino? I'm spending a long time on simply a few lines of code without a way to debug in more details or a way to isolate the problem more.