Hi, I can't get the SPI function to work on my Nano. The code is here:
#include <SPI.h>
//Chip select for three DAC's
int CS1 = 10;
int CS2 = 9;
int CS3 = 8;
// set up the speed, data order and data mode
SPISettings settings(10000000, MSBFIRST, SPI_MODE0);
void setup() {
pinMode (CS1, OUTPUT);
digitalWrite(CS1, HIGH);
pinMode (CS2, OUTPUT);
digitalWrite(CS2, HIGH);
pinMode (CS3, OUTPUT);
digitalWrite(CS3, HIGH);
// initialize SPI:
SPI.begin();
}
void loop() {
// SPI communication with DAC
SPI.beginTransaction(settingsA);
digitalWrite(CS1, LOW);
digitalWrite(CS2, LOW);
digitalWrite(CS3, LOW);
SPI.transfer(127);
SPI.transfer(127);
digitalWrite(CS1, HIGH);
digitalWrite(CS2, HIGH);
digitalWrite(CS3, HIGH);
SPI.endTransaction();
delay(1000);
}
I think it should be Mode0, but I've tried all modes and varying speeds also, and it still doesn't seem to work. The below code does work fine - does this way of doing it have disadvantages? Is it a lot slower for example?
Primarily though would appreciate if someone could point out what I am doing wrong in the above please
Many thanks
#define CS1 10
#define CS2 9
#define CS3 8
#define DIN 12
#define SCK 13
void setup() {
// put your setup code here, to run once:
pinMode(CS1, OUTPUT);
pinMode(CS2, OUTPUT);
pinMode(CS3, OUTPUT);
pinMode(DIN, OUTPUT);
pinMode(SCK, OUTPUT);
digitalWrite(CS1, HIGH);
digitalWrite(CS2, HIGH);
digitalWrite(CS3, HIGH);
}
void loop() {
// DAC1
digitalWrite(CS1, LOW);
delay(100);
//1011001100110011
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
digitalWrite(CS1, HIGH);
//DAC2
digitalWrite(CS2, LOW);
delay(100);
//1011001100110011
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
digitalWrite(CS2, HIGH);
//DAC3
digitalWrite(CS3, LOW);
delay(100);
//1011001100110011
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//0
digitalWrite(DIN, LOW);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
//1
digitalWrite(DIN, HIGH);
digitalWrite(SCK, HIGH);
digitalWrite(SCK, LOW);
digitalWrite(CS3, HIGH);
delay(1000);
}