WinAVR + AD9851

Обсуждаем контроллеры компании Atmel.
Ответить
Встал на лапы
Сообщения: 82
Зарегистрирован: Ср авг 19, 2009 09:34:50

Сообщение geniusbsd »

Нет ли у кого библиотеки winavr для работы с AD9851
Реклама
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

40 бит без библиотеки никак не заслать?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Реклама
Встал на лапы
Сообщения: 82
Зарегистрирован: Ср авг 19, 2009 09:34:50

Сообщение geniusbsd »

Подскажите с примером. как проинициализировать AD9851 и как в нее послать данные частоты
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

Так а что ДШ говорит?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Сообщения: 82
Зарегистрирован: Ср авг 19, 2009 09:34:50

Сообщение geniusbsd »

проблемы с инглишем :(
Реклама
Встал на лапы
Сообщения: 82
Зарегистрирован: Ср авг 19, 2009 09:34:50

Сообщение geniusbsd »

Вот пример, но он к arduino

Код: Выделить всё

#define DDS_CLOCK 180000000

byte LOAD = 8; 
byte CLOCK = 9; 
byte DATA = 10;
byte LED = 13;

void setup()
{
  pinMode (DATA, OUTPUT); // sets pin 10 as OUPUT
  pinMode (CLOCK, OUTPUT); // sets pin 9 as OUTPUT
  pinMode (LOAD, OUTPUT); // sets pin 8 as OUTPUT
  pinMode (LED, OUTPUT);
}

void loop()
{
  // Do a frequency sweep in Hz
  for(unsigned long freq = 10000000; freq < 10001000; freq++)
  {
    sendFrequency(freq);
    delay(2);
  }
}

void sendFrequency(unsigned long frequency)
{
  unsigned long tuning_word = (frequency * pow(2, 32)) / DDS_CLOCK;
  digitalWrite (LOAD, LOW); // take load pin low

  for(int i = 0; i < 32; i++)
  {
    if ((tuning_word & 1) == 1)
      outOne();
    else
      outZero();
    tuning_word = tuning_word >> 1;
  }
  byte_out(0x09);

  digitalWrite (LOAD, HIGH); // Take load pin high again
}

void byte_out(unsigned char byte)
{
  int i;

  for (i = 0; i < 8; i++)
  {
    if ((byte & 1) == 1)
      outOne();
    else
      outZero();
    byte = byte >> 1;
  }
}

void outOne()
{
  digitalWrite(CLOCK, LOW);
  digitalWrite(DATA, HIGH);
  digitalWrite(CLOCK, HIGH);
  digitalWrite(DATA, LOW);
}

void outZero()
{
  digitalWrite(CLOCK, LOW);
  digitalWrite(DATA, LOW);
  digitalWrite(CLOCK, HIGH);
}
Реклама
Встал на лапы
Сообщения: 82
Зарегистрирован: Ср авг 19, 2009 09:34:50

Сообщение geniusbsd »

Все разбрался, сам ни чего сложного в єтом нет.
Остался маленький вопрос по схеме включения ножка reset AD9851 ghb последовательном программировании вист в воздухе или подключена к земле?
Друг Кота
Аватара пользователя
Сообщения: 20093
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Сообщение Gudd-Head »

geniusbsd писал(а):ножка reset AD9851 ghb последовательном программировании вист в воздухе или подключена к земле?
В воздухе её оставлять нельзя, там обычный КМОП вход.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Встал на лапы
Сообщения: 82
Зарегистрирован: Ср авг 19, 2009 09:34:50

Сообщение geniusbsd »

Можно подключить к любому порту МК и подать на нее логический 0
Ответить

Вернуться в «AVR»