dds: do not reset AD9914

This commit is contained in:
Sebastien Bourdeauducq 2015-09-05 14:52:25 -06:00
parent d621780206
commit eb554f86f9
1 changed files with 10 additions and 1 deletions

View File

@ -18,7 +18,7 @@
/* DAC calibration takes max. 1ms as per datasheet */ /* DAC calibration takes max. 1ms as per datasheet */
#define DURATION_DAC_CAL (147000 << RTIO_FINE_TS_WIDTH) #define DURATION_DAC_CAL (147000 << RTIO_FINE_TS_WIDTH)
/* not counting final FUD */ /* not counting final FUD */
#define DURATION_INIT (10*DURATION_WRITE + DURATION_DAC_CAL) #define DURATION_INIT (8*DURATION_WRITE + DURATION_DAC_CAL)
#define DURATION_PROGRAM (6*DURATION_WRITE) /* not counting FUD */ #define DURATION_PROGRAM (6*DURATION_WRITE) /* not counting FUD */
#else #else
@ -59,8 +59,17 @@ void dds_init(long long int timestamp, int channel)
#endif #endif
channel <<= 1; channel <<= 1;
DDS_WRITE(DDS_GPIO, channel); DDS_WRITE(DDS_GPIO, channel);
#ifndef DDS_AD9914
/*
* Resetting a AD9914 intermittently crashes it. It does not produce any
* output until power-cycled.
* Increasing the reset pulse length and the delay until the first write
* to 300ns do not solve the problem.
* The chips seem fine without a reset.
*/
DDS_WRITE(DDS_GPIO, channel | 1); /* reset */ DDS_WRITE(DDS_GPIO, channel | 1); /* reset */
DDS_WRITE(DDS_GPIO, channel); DDS_WRITE(DDS_GPIO, channel);
#endif
#ifdef DDS_AD9858 #ifdef DDS_AD9858
/* /*