Arduino Uno and AD9851 To get freq up to 70 Mhz

I have used Arduino Uno and module AD9850. I used the code below. Function OK. Very nice. AD9850 give out the suggested frequency.

Now the problem.
I use AD9850 module. The data sheet says up to 70 MHz.
BUT
In the code 8,8 MHz
Out AD9851 module 2,113 MHz

I cannot get freq. higher than 15 MHz out of AD9851.

Do i need to complete the code when i use AD9851?

This is the code i called “36C_DDS1_1Band_AD9851 FORUM”
/*

//1 Define in o utgångspinnarna
*/
//DDS1
const int DATA1 = 3; // Data DDS
const int FQ_UD1 = 4; // Frekvens uppdatering DDS
const int W_CLK1 = 5; // Clock till DDS
const int VFOpot1 = A0; // potentiometer för VFO
const int RITPot1 = A1; // Potentiometer för RIT

//DDS1
// Namnge och definiera några variablar som vi behöver
// Eftersom vi har siffror över 32000 så måste vi använda long, double och float
boolean Transmit1 =false; // skall vi sända? frekvensskift?
boolean sendDDS1 = HIGH; // uppdatera DDS:en
boolean TxPinState1 = HIGH; // TX nyckeln
int BandDDS1 = 0; // amatörbandval från BCD omkopplaren 0…15
long VFO_freq1 = 0; // frekvensen från VFO pot 0…100000
long RIT_freq1 = 0; // frekvensen från RIT pot 0…10000
long Freq1 = 0; // beräknad frekvens till DDS:en 0…1100000
long Pot_Freq1 = 0; // VFO + RIT sammanslagna 0…110000
long oldFreq1 = 0; // sparat värde för jämförelse med nya Freq 0…110000

//DDS1
// VFO UNDRE BANDKANT INVERTERAD LOGIK BANDOMK
long BandetDDS1 = 2080000000L; // Enda bandet DDS1

//DDS1
double TxOffset1 = 0; // ifall det är offset till sändaren
double RxOffset1 = 0; // offset vid superheterodynmottagare
float VFO_Freq_out1 = 0; // flyttal till medelvärdesberäkningen
float RIT_Freq_out1 = 0; // flyttal till medelvärdesberäkningen

//*********************************************************************************
//2 Setup
void setup() { // Setup… körs bara ett cykelvarv vid power on

//DDS1
// pinMode(TxPin,INPUT_PULLUP); // telegrafinyckeln
pinMode(FQ_UD1, OUTPUT); // frekvensuppdatering DDS
pinMode(W_CLK1, OUTPUT); // clockning av data till DDS
pinMode(DATA1, OUTPUT); // data till DDS

//DDS1
// starta upp DDS:en i serie mode
pulseHigh1(W_CLK1);
pulseHigh1(FQ_UD1);
//start the oscillator…
DDSsend1(); // starta DDS:en
}
// end of void setup

//*************************************************************************
//3 LOOP
//DDS1
void loop() { // Huvudprogrammet loopas kontinuerligt
// First, we check for Transmit1…
// TxPinState1 = digitalRead(TxPin); // kolla om nyckeln är nedtryckt
if (TxPinState1==0){ // nyckeln är nedtryckt!
if (Transmit1==false){ // kör endast en flank… ett cykelvarv
Transmit1=true;
Freq1=(Freq1+15); // stör medelvärdesberäkningen till DDS:en
DDSsend1(); // så den uppdateras direkt!!
}
}
else{
// No :- we’re in “Receive” Nyckeln är uppe!
if (Transmit1==true){ // kör endast en flank… ett cykelvarv
Transmit1=false;
Freq1=(Freq1+15); // stör medelvärdesberäkningen till DDS:en
DDSsend1(); // så den uppdateras direkt!!
}
}

//DDS1
switch (BandDDS1) {
case 0:
ReadPot1(); // Läs av VFO_pot + RIT_pot
Freq1 = BandetDDS1 + VFO_freq1; // addera Band + potarna
DDSsend1(); // sänd beräknade värdet till DDS:en
break;
}
}
//void loop end

//Subrutiner***********
//4 READPOT
void ReadPot1(){ // läs in potarna mappa dem och summera ihop dem
VFO_freq1 = analogRead(VFOpot1); // Läs av VFO pot
// VFO BANDBREDD
VFO_freq1 = map(VFO_freq1, 0, 1023, 0, 1023)*100; // mappa VFO poten till 0…102.300Hz
RIT_freq1 = analogRead(RITPot1); // Läs av RIT pot
// RIT BANDBREDD
RIT_freq1 = map(RIT_freq1, 0, 1023, -260, 260)*10; // mappa RIT poten till -2,6kHz…0…2,6kHz
VFO_Freq_out1 = VFO_Freq_out1 * 0.99 + VFO_freq1 * 0.01; // medelvärdesberäkna med flyttal
VFO_freq1 = (long)VFO_Freq_out1; // gör long integer av flyttalet
RIT_Freq_out1 = RIT_Freq_out1 * 0.99 + RIT_freq1 * 0.01; // medelvärdesberäkna med flyttal
RIT_freq1 = (long)RIT_Freq_out1; // gör long integer av flyttalet
VFO_freq1 = VFO_freq1 + RIT_freq1; // addera potarna
}
// end ReadPot

//**************************************************************************************
//5 DDSsend
//DDS1
void DDSsend1(){
// HYSTERES
//kolla om nya och gamla värdet skiljer mer än +/- 50 Hz
if (Freq1 >(oldFreq1 + 9) or Freq1 < (oldFreq1 - 9) ) {sendDDS1 = true;}
else { sendDDS1 = false;}
if (sendDDS1 == true) {
sendFrequency1(Freq1, Transmit1); // sänd till DDS:en
oldFreq1 = Freq1;}} // uppdatera till nästa jämförelse
//*************************************************************************************
// Subroutine to generate a positive pulse on ‘pin’…
void pulseHigh1(int pin1) { // användes till att clocka DDS:en
digitalWrite(pin1, HIGH);
digitalWrite(pin1, LOW);
}

//**************************************************************************************
//6 tfr_byte
//DDS1
// transfers a byte, a bit at a time, LSB first to the 9850 via serial DATA line
void tfr_byte1(byte data1)
{
for (int i=0; i<8; i++, data1>>=1) {
digitalWrite(DATA1, data1 & 0x01);
pulseHigh1(W_CLK1); //after each bit sent, CLK is pulsed high
}
}

//************************************************************************************
//7 sendFrequency
//DDS1
// calculate and send frequency code to DDS Module…
void sendFrequency1(double Freq1, boolean Tx1) {
int32_t freq1 = (Freq1+RxOffset1) * 4294967295/125000000;
if (Transmit1==true){
freq1 = (Freq1-RIT_freq1-TxOffset1) * 4294967295/125000000;
}
for (int b=0; b<4; b++, freq1>>=8) { //shiftOut(DATA1, W_CLK1, LSBFIRST, freq1 & 0xFF);
tfr_byte1(freq1 & 0xFF);
}

//DDS1
// shiftOut(DATA, W_CLK, LSBFIRST, 0x00); // sista databiten är nollor
tfr_byte1(0x000); // Final control byte, all 0 for 9850 chip
pulseHigh1(FQ_UD1); // skicka uppdatering av frekvensen till DDS:en
}
//************************************************************************************
//8 SLUT

Are you using the same reference clock, if not the results will be different. If this does not resolve your problem post a schematic, not a frizzy thing.

Thank you. Nice to get answer.
The function is oK with AD39850 module up to 40 MHz.
I send a chematic of it.
In this circuit in the schematic i tested AD9851 module.

For some years ago i used a PIC 16F684 and asambler and need to "

Turn on 6x clock multiplier" in AD9851.
There i used this program lines:
How to do with Arduino ?

Thanks for help.

movf    R0 , W			;skicka en byte i taget till AD9850 börja med R0
    call    Write9850
    movf    R1 , W			;skicka R1
    call    Write9850
    movf    R2 , W			;Skicka R2
    call    Write9850
    movf    R3 , W			;Skicka R3
    call    Write9850
    movf    R4 , W          ;Sist skickar vi Phase word R4 som skall vara nollor
    call    Write9850![TRX13-5B VFO KRETSSCH VerA|690x477](upload://lyriV1cRPYtMlIs5263avQ3u7GV.jpeg) 
	movlw	0x01			;Turn on 6x clock multiplier (AD9851)