annotate DDS4xAD9912.c @ 139:e04123ab79ef

Fix recenter
author Daniele Nicolodi <daniele.nicolodi@obspm.fr>
date Wed, 22 Jan 2014 14:45:22 +0100
parents 43b35f4aae78
children fd085d61e4ca
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
1 #include <utility.h>
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
2
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
3 //==============================================================================
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
4 //
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
5 // Title: DDS4xAD9912.c
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
6 // Purpose:
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
7 //
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
8 // Created on: by Volodimer Laurent, modified by YLC
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
9 // Copyright: syrte. All Rights Reserved.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
10 //
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
11 //==============================================================================
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
12
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
13 //==============================================================================
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
14 // Include files
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
15
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
16 #include "DDS4xAD9912.h"
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
17 #include <userint.h>
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
18 #include <tcpsupp.h>
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
19 #include <ansi_c.h>
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
20
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
21 //==============================================================================
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
22 // Global functions
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
23
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
24 static int OnTCPEvent(unsigned handle, int xType, int errCode, void *callbackData)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
25 {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
26 switch(xType)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
27 {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
28 case TCP_DISCONNECT :
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
29 break;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
30 case TCP_DATAREADY :
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
31 ClientTCPRead (handle, Response, sizeof(Response), 0);
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
32 break;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
33 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
34 return 0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
35 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
36
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
37
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
38 //==============================================================================
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
39 // DDS4xAD9912_SendCmd
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
40 //
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
41 // FUNC : envoie une chaine de caracteres sur un port du serveur TCP/IP de la foxboard
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
42 // PARAM : DDSNum contient le numero de la DDS (1,2,3 ou 4)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
43 // PARAM : Buffer contenant la chaîne de caractères à envoyer
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
44 // RETURN : 0 si la connexion et l'ecriture sur le serveur TCP/IP sont OK
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
45 //==============================================================================
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
46
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
47
108
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
48 static int DDS4xAD9912_SendCmd(int DDSNum, char * Buffer)
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
49 {
112
e501896c0e7c Avoid compilation warning
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 108
diff changeset
50 int port = 0;
108
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
51 int rv;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
52
108
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
53 switch (DDSNum) {
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
54 case 1:
108
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
55 port = Port1;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
56 break;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
57 case 2:
108
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
58 port = Port2;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
59 break;
108
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
60 case 3:
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
61 port = Port3;
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
62 break;
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
63 case 4:
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
64 port = Port4;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
65 break;
108
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
66 default:
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
67 return -1;
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
68 }
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
69
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
70 rv = ConnectToTCPServer(&hConv, port, Adress, OnTCPEvent, 0, 0);
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
71 if (rv < 0) {
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
72 MessagePopup("DDS4xAD9912", "Connection to server failed!");
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
73 return rv;
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
74 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
75
108
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
76 rv = ClientTCPWrite(hConv, Buffer, strlen(Buffer)+1, 0);
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
77 if (rv < 0) {
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
78 MessagePopup("DDS Serveur", "Write to server failed!");
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
79 }
108
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
80
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
81 DisconnectFromTCPServer(hConv);
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
82
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
83 return rv;
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
84 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
85
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
86
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
87 //==============================================================================
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
88 // DDS4xAD9912_Reset
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
89 //
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
90 // FUNC : reset des 4 DDS
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
91 // PARAM :
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
92 // RETURN : 0 si le reset de la DDS 1 , DDS 2, DDS3 et DDS4 est OK
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
93 //==============================================================================
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
94
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
95 int DDS4xAD9912_Reset(DDS4xAD9912_Data * Instance)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
96 {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
97 int res_1,res_2;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
98
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
99 sprintf(Request,"set;%i;%i",1,17);
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
100 res_1 = DDS4xAD9912_SendCmd(1,Request) ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
101 if(res_1 <0) {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
102 MessagePopup("DDS Serveur", "DDS4xAD9912_1 Reset failed !") ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
103 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
104 else Instance->Frequency1 = 0.0 ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
105
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
106 sprintf(Request,"set;%i;%i",1,17);
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
107 res_2 = DDS4xAD9912_SendCmd(2,Request) ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
108 if(res_2 <0) {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
109 MessagePopup("DDS Serveur", "DDS4xAD9912_2 Reset failed !") ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
110 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
111 else Instance->Frequency2 = 0.0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
112
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
113 sprintf(Request,"set;%i;%i",1,17);
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
114 res_2 = DDS4xAD9912_SendCmd(3,Request) ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
115 if(res_2 <0) {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
116 MessagePopup("DDS Serveur", "DDS4xAD9912_3 Reset failed !") ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
117 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
118 else Instance->Frequency3 = 0.0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
119
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
120 sprintf(Request,"set;%i;%i",1,17);
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
121 res_2 = DDS4xAD9912_SendCmd(4,Request) ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
122 if(res_2 <0) {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
123 MessagePopup("DDS Serveur", "DDS4xAD9912_4 Reset failed !") ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
124 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
125 else Instance->Frequency4 = 0.0;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
126
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
127
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
128 return (res_1+res_2);
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
129 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
130
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
131
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
132 //==============================================================================
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
133 // DDS4xAD9912_SetFreq
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
134 //
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
135 // FUNC : sort une fréquence sur la DDS1 ,DDS2, DDS3 ou DDS4
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
136 // PARAM : DDSNum contient le numero de la DDS (1, 2 , 3 ou 4)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
137 // RETURN : 0 si la connexion et l'ecriture sur le serveur TCP/IP sont OK
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
138 //==============================================================================
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
139 int DDS4xAD9912_SetFrequency(DDS4xAD9912_Data * Instance, int DDSNum, double Freq)
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
140 {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
141
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
142 double Word=WORD(Freq,Clk) ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
143 double reste ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
144 int res_0 ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
145 unsigned char b5,b4,b3,b2,b1,b0 ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
146
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
147 b5=(unsigned char)(Word/E40);
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
148 b4=(unsigned char)((Word - E40*b5)/E32);
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
149 b3=(unsigned char)((Word - E40*b5 - E32*b4)/E24);
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
150 b2=(unsigned char)((Word - E40*b5 - E32*b4 - E24*b3)/E16);
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
151 b1=(unsigned char)((Word - E40*b5 - E32*b4 - E24*b3 - E16*b2)/E8);
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
152 b0=(unsigned char)((Word - E40*b5 - E32*b4 - E24*b3 - E16*b2 - E8*b1)/1.0);
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
153 reste = (Word - E40*b5 -E32*b4 -E24*b3 -E16*b2 -E8*b1-1.0*b0) ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
154
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
155 sprintf(Request,"set;%i;%i;%i;%i;%i;%i;%i;%i",0,10,b5,b4,b3,b2,b1,b0);
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
156 res_0 = DDS4xAD9912_SendCmd(DDSNum, Request) ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
157 if (res_0 <0) {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
158 MessagePopup("DDS Serveur", "SetFrequency function failed !") ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
159 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
160 else {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
161 if (DDSNum==1) Instance->Frequency1 = Freq - reste*Clk/E48 ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
162 if (DDSNum==2) Instance->Frequency2 = Freq - reste*Clk/E48 ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
163 if (DDSNum==3) Instance->Frequency3 = Freq - reste*Clk/E48 ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
164 if (DDSNum==4) Instance->Frequency4 = Freq - reste*Clk/E48 ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
165 } ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
166
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
167 sprintf(Request,"set;%i;%i",0,18); // IO_Update logiciel
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
168 res_0 = DDS4xAD9912_SendCmd(DDSNum, Request) ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
169 if (res_0 <0) {
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
170 MessagePopup("DDS Serveur", "IO_Update function failed !") ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
171 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
172 return(res_0) ;
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
173
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
174 }
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
175
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
176
108
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
177 /*
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
178 * ramp DDS frequency from `f1` to `f2` in steps of `fstep`
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
179 * with a delay of 0.01 seoconds after each step
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
180 */
118
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
181 int DDS4xAD9912_RampFrequency2(DDS4xAD9912_Data *dds, int channel, double f1, double f2, double fstep)
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
182 {
108
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
183 const double delay = 0.01;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
184
108
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
185 /* f2 > f1 */
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
186 while ((f2 - f1) > fstep) {
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
187 f1 += fstep;
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
188 DDS4xAD9912_SetFrequency(dds, channel, f1);
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
189 Delay(delay);
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
190 }
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
191
108
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
192 /* f2 < f1 */
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
193 while ((f1 - f2) > fstep) {
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
194 f1 -= fstep;
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
195 DDS4xAD9912_SetFrequency(dds, channel, f1);
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
196 Delay(delay);
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
197 }
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
198
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
199 /* final adjustment */
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
200 DDS4xAD9912_SetFrequency(dds, channel, f2);
54e7b129ecc2 Minimal cleanup of AD9912 DDS driver
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 103
diff changeset
201 return 0;
0
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents:
diff changeset
202 }
118
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
203
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
204
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
205 /*
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
206 * ramp DDS frequency from the current frequency to `f2` in steps
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
207 * of `fstep` with a delay of 0.01 seoconds after each step
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
208 */
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
209 int DDS4xAD9912_RampFrequency(DDS4xAD9912_Data *dds, int channel, double f2, double fstep)
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
210 {
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
211 double f1 = DDS4xAD9912_GetFrequency(dds, channel);
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
212 return DDS4xAD9912_RampFrequency2(dds, channel, f1, f2, fstep);
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
213 }
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
214
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
215
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
216 double DDS4xAD9912_GetFrequency(DDS4xAD9912_Data *dds, int channel)
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
217 {
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
218 switch (channel) {
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
219 case 1:
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
220 return dds->Frequency1;
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
221 case 2:
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
222 return dds->Frequency2;
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
223 case 3:
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
224 return dds->Frequency3;
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
225 case 4:
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
226 return dds->Frequency4;
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
227 default:
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
228 return 0.0;
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
229 }
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
230 }
43b35f4aae78 Fix N3 measurement. Simply frequnecy ramping functions.
Daniele Nicolodi <daniele.nicolodi@obspm.fr>
parents: 112
diff changeset
231