Забыл сказать еще одну вещь

сорри
после Init_DDS
Код
void DDS_SetStartFreq (unsigned int startfreq, unsigned int chanel)
{
if (!chanel) DDS_WriteData (DDS_CSR_REG, Chanel0_Select, 1);
else DDS_WriteData (DDS_CSR_REG, Chanel1_Select, 1);
DDS_WriteData (DDS_CTW0_REG, startfreq, 1);
}
void DDS_SetStopFreq (unsigned int stopfreq, unsigned int chanel)
{
if (!chanel) DDS_WriteData (DDS_CSR_REG, Chanel0_Select, 1);
else DDS_WriteData (DDS_CSR_REG, Chanel1_Select, 1);
DDS_WriteData (DDS_CTW1_REG, stopfreq, 1);
}
void DDS_ScanPrepare (STData *td)
{
DDS_WriteData (DDS_CSR_REG, ChanelS_Select, 1);
DDS_WriteData (DDS_CFR_REG, Init_Function_Register3_0 | StopSweep, 1);
DDS_IO_Update ();
DDS_SetStartFreq (td->StartFreq0, 0);
DDS_SetStopFreq (td->StopFreq0, 0);
DDS_SetStartFreq (td->StartFreq1, 1);
DDS_SetStopFreq (td->StopFreq1, 1);
DDS_WriteData (DDS_CSR_REG, ChanelS_Select, 1);
DDS_WriteData (DDS_LSR_REG, td->RampRate, 1);
DDS_WriteData (DDS_RDW_REG, td->DeltaFreq, 1);
DDS_WriteData (DDS_CFR_REG, Init_Function_Register3_0 | StartSweep, 1);
DDS_IO_Update (); //Здесь на выходе должны появится сигналы
}
Это я дал пример для моего случая, но порядок записи в регистры лучше придерживаться.
И еще кой какие замечания:
1. IOUPDATE не надо делать после каждой записи в регистр
Цитата
Each set of communication cycles does not require an
I/O_UPDATE to be issued. The I/O_UPDATE transfers data
from the I/O port buffer to active registers. The I/O_UPDATE
can be sent for each communication cycle or can be sent when
all serial operations are complete. However, data is not active
until an I/O_UPDATE is sent, with the exception of the channel
enable bits in the Channel Select Register (CSR). These bits do
not require an I/O_UPDATE to be enabled.
2. Записали Вы к примеру в DDS_CSR_REG значение F2, пробовали прочитать обратно? (какой результат)
3. Если не читается (п.2), проверте SDIO(0-3) ноги, в моем случае (AD9958) SDIO_3 должно быть на земле, иначе SPI не работает (я о режиме когда SDIO_2=DO, SDIO_0=DI)
Успехов!!!