Well, it compiles, but it seems to hang somewhere ?
I was also wondering if the array is needed, instead of dataArray = (freq & 0xFF);, just sending the data byte in the for loop?
```
**#include <SPI.h>
#define W_CLK 13 // Pin 13 - connect to AD9850 module word load clock pin (CLK)
#define DATA 11 // Pin 11 - connect to serial data load pin (DATA)
#define FQ_UD 10 // Pin 10 - connect to freq update pin (FQ)
#define RESET 9 // Pin 9 - connect to reset pin (RST)
#define pulseHigh(pin) {digitalWrite(pin, HIGH); digitalWrite(pin, LOW); }
// frequency calc from datasheet page 8 = * /2^32
void sendFrequency(double frequency) {
byte dataArray[5];
int32_t freq = frequency * 4294967295/125000000; // note 125 MHz clock on 9850
for (int b=0; b<4; b++, freq>>=8) {
dataArray[b] = (freq & 0xFF);
}
dataArray[4] = 0x000; // Final control byte, all 0 for 9850 chip
PORTB = PORTB & B11111011; // clear pin 10
SPI.transfer(dataArray[0]);
SPI.transfer(dataArray[1]);
SPI.transfer(dataArray[2]);
SPI.transfer(dataArray[3]);
SPI.transfer(dataArray[4]);
PORTB = PORTB | B00000100; // set pin 10
pulseHigh(FQ_UD); // Done! Should see output
}
void setup() {
Serial.begin(115200);
Serial.println("DDS Sweep");
// configure arduino data pins for output
pinMode(FQ_UD, OUTPUT);
pinMode(W_CLK, OUTPUT);
pinMode(DATA, OUTPUT);
pinMode(RESET, OUTPUT);
pulseHigh(RESET);
pulseHigh(W_CLK);
pulseHigh(FQ_UD); // this pulse enables serial mode - Datasheet page 12 figure 10
}
void loop() {
long F1 = 1;
long F2 = 10;
long long freq = 1;
Serial.print("Start Frequency: ");
Serial.print(long (freq));
Serial.println(" Hz");
long timeStart = micros();
while (freq <= F2) {
sendFrequency(freq); // freq
freq++;
}
long timeStop = micros();
Serial.print("Start Time: ");
Serial.print(timeStart);
Serial.println(" us");
Serial.print("Stop Frequency: ");
Serial.print(long (freq));
Serial.println(" Hz");
Serial.print("Stop Time: ");
Serial.print(timeStop);
Serial.println(" us");
Serial.print("Sweep Time: ");
Serial.print(timeStop - timeStart);
Serial.println(" us");
Serial.print("Switching Time: ");
Serial.print((timeStop - timeStart) / long(freq));
Serial.println(" us/pt");
Serial.println("");
}**
```