Nick,
Attached is code with digitalread as well as my output from the serial monitor.
I should be reading 0010-0111 but am instead reading 0001-0011.
/*****************************************************
Purpose: Read/Write to RI-R6C-001A Register
*****************************************************/
int SCLK = 7; // SCLOCK
int DIN = 4; //Data from main controller to transceiver ic
int DOUT = 3; //Data from transceiver ic to main controller
int val;
/*****************************************************/
void setup()
{
Serial.begin(9600);
//Serial1.begin(9600);
Serial.println("Setting up Serial I/O");
pinMode(SCLK, OUTPUT); // sets SCLK digital pin as output
pinMode(DIN, OUTPUT); //sets DIN digital pin as output
pinMode(DOUT, INPUT); //sets the digital pin as input
/*****************************************************
Start Bit
*****************************************************/
Serial.println("Start Bit");
digitalWrite(SCLK, HIGH);
delayMicroseconds(1);
digitalWrite(DIN, HIGH);
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(DIN, LOW);
delayMicroseconds(1);
/*****************************************************
Write configuration register command 0x7D
Data - > MSB; Latched on Rising Clock Edge
*****************************************************/
Serial.println("Write 0x7D");
digitalWrite(SCLK, HIGH); //0
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(DIN, HIGH);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //1
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //1
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //1
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //1
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //1
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(DIN, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //0
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(DIN, HIGH);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //1
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(DIN, LOW);
delayMicroseconds(1);
/*****************************************************
Write configuration register content 0x27
This is the value I am storing in the register
*****************************************************/
Serial.println("Write content 0x27");
digitalWrite(SCLK, HIGH); //0
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //0
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(DIN, HIGH);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //1
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(DIN, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //0
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //0
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(DIN, HIGH);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //1
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //1
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //1
delayMicroseconds(1);
digitalWrite(DIN, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
/*****************************************************
Stop Bit
*****************************************************/
Serial.println("Stop bit");
digitalWrite(DIN, HIGH);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH);
delayMicroseconds(1);
digitalWrite(DIN, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
/*****************************************************
Start Bit
*****************************************************/
Serial.println("Start Bit");
digitalWrite(SCLK, HIGH);
delayMicroseconds(1);
digitalWrite(DIN, HIGH);
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(DIN, LOW);
delayMicroseconds(1);
/*****************************************************
Read configuration register command 0x71
*****************************************************/
Serial.println("Read Command 0x71");
digitalWrite(SCLK, HIGH); //0
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(DIN, HIGH);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //1
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //1
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //1
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(DIN, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //0
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //0
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //0
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(DIN, HIGH);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH); //1
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(DIN, LOW);
delayMicroseconds(1);
/*****************************************************
Read back configuration register using controller clock = 0x27
*****************************************************/
Serial.println("Read Register");
digitalWrite(SCLK, HIGH);
delayMicroseconds(5);
Serial.println(digitalRead(DOUT)); //1
delayMicroseconds(1);
//var = digitalRead(DOUT); //read the pin and save it into var
//Serial.println(var);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH);
delayMicroseconds(5);
Serial.println(digitalRead(DOUT)); //2
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH);
delayMicroseconds(5);
Serial.println(digitalRead(DOUT)); //3
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH);
delayMicroseconds(1);
Serial.println(digitalRead(DOUT)); //4
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH);
delayMicroseconds(1);
Serial.println(digitalRead(DOUT)); //5
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH);
delayMicroseconds(1);
Serial.println(digitalRead(DOUT)); //6
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH);
delayMicroseconds(1);
Serial.println(digitalRead(DOUT)); //7
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH);
delayMicroseconds(1);
Serial.println(digitalRead(DOUT)); //8
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
/*****************************************************
Stop Bit
*****************************************************/
Serial.println("Stop bit");
digitalWrite(DIN, HIGH);
delayMicroseconds(1);
digitalWrite(SCLK, HIGH);
delayMicroseconds(1);
digitalWrite(DIN, LOW);
delayMicroseconds(1);
digitalWrite(SCLK, LOW);
delayMicroseconds(1);
}
void loop()
{
}