Управление синтезатором частоты AD9958
- Войдите на сайт для отправки комментариев
Управление идёт через атмегу 168 программку я написал вроде компилется без ошибок.
Суть в том что по формуле расчитывается некое число Ftw (десятичное), по которому и определяется нужная частота у синтезатора далее это число должно переводиться в двоичный 32 разрядный код и выдавяться на соот ножку синтезатора. Соот при этом ввод частоты идёт через виртуальный ком порт кот тут же описан (с этим проблем не возникло). Вопрос вот в чём:
1.расчитанное число Ftw будет итерпретироваться как двоичное если оно word?
2.какой оператор выдёт расчитаный двоичный код Ftw ввиде сигнала на соот порт (предположительно shiftOut но могу ошибаться)?
int CSLK = 2;
int CS = 3;
int Sdio = 4;
word Ftw;
void setup()
{
Serial.begin(9600);
pinMode(Sdio, OUTPUT);
pinMode(CSLK, OUTPUT);
pinMode(CS, OUTPUT);
}
void loop()
{
d
Serial.print ("Enter Fout(kHz):");
while (Serial.available()<5) {};
float Fout = Serial.parseInt();//для кГц
Serial.println (Fout);
Ftw = Fout*pow(2, 32) /50000000;//Для кГц
Serial.print ("load Ftw:");
Serial.println (Ftw);
Serial.println ();
if (0<=Ftw && Ftw<=pow (2, 32))
{Serial.println ("Loading");
}
else
{Serial.println ("Error");}
Serial.println ();
}
///////////////////////// AD9958 ///////////////////////
void loadFtw (word dataFtw)
{
digitalWrite (CS, HIGH);
digitalWrite (CS, LOW);
delay (0.001);
digitalWrite (CS, LOW);
delay (0.2);
{
digitalWrite (CSLK, LOW);
delay (0.001);
for(int i=0; i<=32; i=i++)
{
digitalWrite (CSLK, HIGH);
delay (0.0022);
digitalWrite (CSLK, LOW);
delay (0.0016);
}
}
{shiftOut (Sdio, CSLK, MSBFIRST, 00000001);
shiftOut (Sdio, CSLK, MSBFIRST, Ftw);
}
}