Перейти к содержанию

Arduino Uno И Dac8512


Рекомендуемые сообщения

Доброго времени суток!

Уже целый день пытаюсь заставить 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 бит, я не знаю.

Буду рад любому дельному совету :)

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Спасибо за внимание, проблему решил.

Надо было внимательно читать документацию:

Пин LD нельзя просто так опускать на землю. Перед передачей данных в регистр нужно поднять этот пин на HIGH, после передачи - опустить на LOW.

Всё заработало.

#include "SPI.h" // necessary library
int LD = 8;
int CS = 10;
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(CS, OUTPUT);
 pinMode(LD, 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(LD, HIGH);
   digitalWrite(CS, LOW);
   data = highByte(outputValue);
   SPI.transfer(data);
   data = lowByte(outputValue);
   SPI.transfer(data);
   digitalWrite(CS, HIGH);
   digitalWrite(LD, LOW);
   delay(del);
 }
 delay(del+25);
 for (int a=4095; a>=0; --a)
 {
   outputValue = a;
   digitalWrite(LD, HIGH);
   digitalWrite(CS, LOW);
   data = highByte(outputValue);
   SPI.transfer(data);
   data = lowByte(outputValue);
   SPI.transfer(data);
   digitalWrite(CS, HIGH);
   digitalWrite(LD, LOW);
   delay(del);
 }
 delay(del+25);
}

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...