#include <Arduino.h>
const int SCLK = 52;
const int nSYNC = 53;
const int DIN = 51;
const int nLDAC = 48;
const int CLR = 49;
// const int DIN = 30;
// const int SCLK = 23;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.println("Hello, world!");
pinMode(SCLK, OUTPUT);
pinMode(nSYNC, OUTPUT);
pinMode(DIN, OUTPUT);
digitalWrite(nLDAC, LOW);
digitalWrite(CLR, LOW);
}
void wirteDataLSB(uint8_t cmd, uint16_t data){
uint32_t send_data;
digitalWrite(nLDAC, LOW);
digitalWrite(CLR, LOW);
send_data = cmd;
send_data = send_data << 16;
send_data = send_data | data;
Serial.print(send_data, HEX);
Serial.print(" ");
Serial.print(send_data, BIN);
Serial.print(" ");
digitalWrite(nSYNC, LOW);
delay(100);
for (int i = 0; i < 24; i++) {
digitalWrite(DIN, send_data & 0x0001);
digitalWrite(SCLK, LOW);
digitalWrite(SCLK, HIGH);
send_data >>= 1;
Serial.print(send_data & 0x0001);
Serial.print(" ");
}
digitalWrite(nSYNC, HIGH);
Serial.println("");
}
void wirteDataMSB(uint8_t cmd, uint16_t data){
uint32_t send_data;
send_data = cmd;
send_data = send_data << 16;
send_data = send_data | data;
Serial.print(send_data, HEX);
Serial.print(" ");
Serial.print(send_data, BIN);
Serial.print(" ");
// for (int i = 24; i >= 0; i--){
// byte msb = (send_data >> i) & 0xFF;
// Serial.print(msb, BIN);
// }
bool msb = 0b0;
digitalWrite(nSYNC, LOW);
for (int i = 23; i >= 0; i--){
msb = bitRead(send_data, i);
digitalWrite(DIN, msb);
digitalWrite(SCLK, LOW);
digitalWrite(SCLK, HIGH);
}
digitalWrite(nSYNC, HIGH);
Serial.println("");
}
uint16_t data = 0x0000;
void loop() {
// put your main code here, to run repeatedly:
if (data >= 0xffff) {data = data - 0xf000; }
else {data = data + 0x1073; }
wirteDataMSB(0x1f,0x9999);
delay(10);
}