Доброго времени суток!
Уже целый день пытаюсь заставить Arduino UNO управлять цифро-аналоговым преобразователем DAC8512 (Datasheet) по SPI.
Но пока безуспешно.
Подключён DAC к ардуино вот так:
1 -> +5V;
2 -> D10;
3 -> D13;
4 -> D11;
5 -> to GND;
6 -> 10k to +5V;
7 -> GND
8 -> V_OUT
Таким образом управление идёт только по 3 проводам. LD опущен на землю, CLR и CS подтянут к +5В через 10к сопративление.
Код, который я использую:
Подозреваю, что проблема заключается в 12-битном регистре в ЦАПе, но как пердать меньше 16 бит, я не знаю.
Буду рад любому дельному совету
Раздел: Arduino и Raspberry Pi
Уже целый день пытаюсь заставить Arduino UNO управлять цифро-аналоговым преобразователем DAC8512 (Datasheet) по SPI.
Но пока безуспешно.
Подключён DAC к ардуино вот так:
1 -> +5V;
2 -> D10;
3 -> D13;
4 -> D11;
5 -> to GND;
6 -> 10k to +5V;
7 -> GND
8 -> V_OUT
Таким образом управление идёт только по 3 проводам. LD опущен на землю, CLR и CS подтянут к +5В через 10к сопративление.
Код, который я использую:
#include "SPI.h" // necessary library
int del=0; // used for various delays
word outputValue = 0; // a word is a 16-bit number
byte data = 0; // and a byte is an 8-bit number
void setup()
{
//set pin(s) to input and output
pinMode(10, OUTPUT);
SPI.begin(); // wake up the SPI bus.
SPI.setDataMode(SPI_MODE3);
SPI.setBitOrder(MSBFIRST);
}
void loop()
{
for (int a=0; a<=4095; a++)
{
outputValue = a;
digitalWrite(10, LOW);
data = highByte(outputValue);
//data = 0b00001111 & data;
SPI.transfer(data);
data = lowByte(outputValue);
SPI.transfer(data);
digitalWrite(10, HIGH);
delay(del);
}
delay(del+25);
for (int a=4095; a>=0; --a)
{
outputValue = a;
digitalWrite(10, LOW);
data = highByte(outputValue);
//data = 0b00001111 & data;
SPI.transfer(data);
data = lowByte(outputValue);
SPI.transfer(data);
digitalWrite(10, HIGH);
delay(del);
}
delay(del+25);
}
Подозреваю, что проблема заключается в 12-битном регистре в ЦАПе, но как пердать меньше 16 бит, я не знаю.
Буду рад любому дельному совету
Раздел: Arduino и Raspberry Pi