Управление синтезатором частоты AD9958

Нет ответов
Pavel_1282
Offline
Зарегистрирован: 19.12.2012

Управление идёт через атмегу 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);

}

}