PAS EGSE HVPS for Nucleo F746ZG

Dependencies:   SDFileSystem TextLCD mbed

Committer:
hcseran
Date:
Mon Jul 25 09:48:24 2016 +0000
Revision:
0:f24491e13cb3
PAS EGSE HVPS for Nucleo F746ZG

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hcseran 0:f24491e13cb3 1 #include "mbed.h"
hcseran 0:f24491e13cb3 2 //#include "TextLCD.h"
hcseran 0:f24491e13cb3 3 //#include "SDFileSystem.h"
hcseran 0:f24491e13cb3 4
hcseran 0:f24491e13cb3 5 #define GAIN_TOPDEF 6
hcseran 0:f24491e13cb3 6 #define SIGN_TOPDEF 5
hcseran 0:f24491e13cb3 7 #define GAIN_BOTDEF 4
hcseran 0:f24491e13cb3 8 #define SIGN_BOTDEF 3
hcseran 0:f24491e13cb3 9 #define GAIN_TOPPLATE 2
hcseran 0:f24491e13cb3 10 #define SIGN_TOPPLATE 1
hcseran 0:f24491e13cb3 11 #define GAIN_ANL 0
hcseran 0:f24491e13cb3 12
hcseran 0:f24491e13cb3 13 //#define LPC1768
hcseran 0:f24491e13cb3 14 //#define K64F
hcseran 0:f24491e13cb3 15 //#define KL25Z
hcseran 0:f24491e13cb3 16 #define F746ZG
hcseran 0:f24491e13cb3 17
hcseran 0:f24491e13cb3 18 Serial pc(USBTX, USBRX);
hcseran 0:f24491e13cb3 19 #ifdef LPC1768
hcseran 0:f24491e13cb3 20 DigitalOut led1(LED1),led2(LED2);
hcseran 0:f24491e13cb3 21 TextLCD lcd(p15, p16, p17, p18, p19, p20, TextLCD::LCD16x2); // rs, e, d4-d7
hcseran 0:f24491e13cb3 22 SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board
hcseran 0:f24491e13cb3 23 SPI spi(p11, p12, p13); // MOSI (Din DAC), MISO (Dout ADC), SCLK
hcseran 0:f24491e13cb3 24 DigitalOut on_off_mhv(p21), cs_adc(p22), sign_top_def(p25), gain_top_def(p26), cs_top_def(p23), cs_mhv(p24);
hcseran 0:f24491e13cb3 25 #endif
hcseran 0:f24491e13cb3 26 #ifdef K64F
hcseran 0:f24491e13cb3 27 SPI spi(D11, D12, D13); // MOSI (Din DAC), MISO (Dout ADC), SCLK
hcseran 0:f24491e13cb3 28 DigitalOut on_off_mhv(PTB18), cs_adc(PTC17), sign_top_def(PTC1), gain_top_def(PTC8), cs_top_def(PTC9), cs_mhv(D9);
hcseran 0:f24491e13cb3 29 DigitalOut gain_anl(D0), cs_anl(PTB19), sign_top_plate(D2), gain_top_plate(D3), cs_top_plate(D4);
hcseran 0:f24491e13cb3 30 DigitalOut sign_bot_def(D5), gain_bot_def(D6), cs_bot_def(D7), hv_limit(D10);
hcseran 0:f24491e13cb3 31 DigitalOut led_green(LED2); // GREEN
hcseran 0:f24491e13cb3 32 DigitalOut led_red(LED1); // RED
hcseran 0:f24491e13cb3 33 DigitalOut led_blue(LED3); // BLUE
hcseran 0:f24491e13cb3 34 #endif
hcseran 0:f24491e13cb3 35 #ifdef F746ZG
hcseran 0:f24491e13cb3 36 SPI spi(D11, D12, D13); // MOSI (Din DAC), MISO (Dout ADC), SCLK
hcseran 0:f24491e13cb3 37 DigitalOut on_off_mhv(PB_2), cs_adc(D1), sign_top_def(PF_4), gain_top_def(PC_2), cs_top_def(PB_1), cs_mhv(D9);
hcseran 0:f24491e13cb3 38 DigitalOut gain_anl(D0), cs_anl(PB_6), sign_top_plate(D2), gain_top_plate(D3), cs_top_plate(D4);
hcseran 0:f24491e13cb3 39 DigitalOut sign_bot_def(D5), gain_bot_def(D6), cs_bot_def(D7), hv_limit(D10);
hcseran 0:f24491e13cb3 40 DigitalOut led_green(LED2); // GREEN
hcseran 0:f24491e13cb3 41 DigitalOut led_red(LED1); // RED
hcseran 0:f24491e13cb3 42 DigitalOut led_blue(LED3); // BLUE
hcseran 0:f24491e13cb3 43 #endif
hcseran 0:f24491e13cb3 44 #ifdef KL25Z
hcseran 0:f24491e13cb3 45 SPI spi(PTD2, PTD3, PTD1); // MOSI (Din DAC), MISO (Dout ADC), SCLK
hcseran 0:f24491e13cb3 46 DigitalOut on_off_mhv(PTC7), cs_adc(PTA1), sign_top_def(PTC3), gain_top_def(PTC4), cs_top_def(PTC5), cs_mhv(PTC6);
hcseran 0:f24491e13cb3 47 DigitalOut gain_anl(PTA2), cs_anl(PTC0), sign_top_plate(PTD4), gain_top_plate(PTA12), cs_top_plate(PTA4);
hcseran 0:f24491e13cb3 48 DigitalOut sign_bot_def(PTA5), gain_bot_def(PTC8), cs_bot_def(PTC9), hv_limit(PTC11);
hcseran 0:f24491e13cb3 49 DigitalOut led_green(LED2); // GREEN
hcseran 0:f24491e13cb3 50 DigitalOut led_red(LED1); // RED
hcseran 0:f24491e13cb3 51 DigitalOut led_blue(LED3); // BLUE
hcseran 0:f24491e13cb3 52 #endif
hcseran 0:f24491e13cb3 53
hcseran 0:f24491e13cb3 54 struct hv {
hcseran 0:f24491e13cb3 55 short top_def, bot_def, top_plate, anl;
hcseran 0:f24491e13cb3 56 char gain_sign;
hcseran 0:f24491e13cb3 57 struct hv *next;
hcseran 0:f24491e13cb3 58 } *head, *tail, *node, *temp;
hcseran 0:f24491e13cb3 59 typedef struct hv element;
hcseran 0:f24491e13cb3 60
hcseran 0:f24491e13cb3 61 Ticker sweeper;
hcseran 0:f24491e13cb3 62
hcseran 0:f24491e13cb3 63 void sweep(void);
hcseran 0:f24491e13cb3 64 void load_dac_gain_sign(element *tail);
hcseran 0:f24491e13cb3 65 void libere_memoire();
hcseran 0:f24491e13cb3 66
hcseran 0:f24491e13cb3 67 int main()
hcseran 0:f24491e13cb3 68 {
hcseran 0:f24491e13cb3 69 char c, on, byte[4] = {0};
hcseran 0:f24491e13cb3 70 short mhv = 0, dac = 0;
hcseran 0:f24491e13cb3 71 int dwell = 1000000; // interval between steps in microsec
hcseran 0:f24491e13cb3 72 // short adc = 0, gbot_def, sbot_def, gtop_plate, stop_plate, ganl;
hcseran 0:f24491e13cb3 73 short nb_elts = 0;
hcseran 0:f24491e13cb3 74 int adc = 0;
hcseran 0:f24491e13cb3 75 short adc0 = 0, adc1 = 0;
hcseran 0:f24491e13cb3 76 bool clean = false;
hcseran 0:f24491e13cb3 77 unsigned int checksum = 0;
hcseran 0:f24491e13cb3 78 short ok = 0xcc;
hcseran 0:f24491e13cb3 79 // char texte[128];
hcseran 0:f24491e13cb3 80
hcseran 0:f24491e13cb3 81 #ifdef LPC1768
hcseran 0:f24491e13cb3 82 led1 = 0;
hcseran 0:f24491e13cb3 83 led2 = 0;
hcseran 0:f24491e13cb3 84 #endif
hcseran 0:f24491e13cb3 85
hcseran 0:f24491e13cb3 86 #ifdef K64F
hcseran 0:f24491e13cb3 87 led_red = true;
hcseran 0:f24491e13cb3 88 led_green = true;
hcseran 0:f24491e13cb3 89 led_blue = true;
hcseran 0:f24491e13cb3 90 #endif
hcseran 0:f24491e13cb3 91
hcseran 0:f24491e13cb3 92 // int step = 10; // increment pour les DACs
hcseran 0:f24491e13cb3 93 // initialisations
hcseran 0:f24491e13cb3 94 on_off_mhv = 0; // mhv off
hcseran 0:f24491e13cb3 95 cs_adc = 1; // adc not selected
hcseran 0:f24491e13cb3 96 cs_anl = 1;
hcseran 0:f24491e13cb3 97 cs_bot_def = 1;
hcseran 0:f24491e13cb3 98 cs_top_plate = 1;
hcseran 0:f24491e13cb3 99 cs_top_def = 1; // dac anl not selected
hcseran 0:f24491e13cb3 100 cs_mhv = 1; // dac mhv not selected
hcseran 0:f24491e13cb3 101 gain_anl = 0; // low gain
hcseran 0:f24491e13cb3 102 gain_top_def = 0; // low gain
hcseran 0:f24491e13cb3 103 gain_bot_def = 0;
hcseran 0:f24491e13cb3 104 gain_top_plate = 0;
hcseran 0:f24491e13cb3 105 sign_top_def = 1; // positif
hcseran 0:f24491e13cb3 106 sign_bot_def = 0; // negatif
hcseran 0:f24491e13cb3 107 sign_top_plate = 1; // positif
hcseran 0:f24491e13cb3 108
hcseran 0:f24491e13cb3 109 spi.format(16,1); // setup for SPI DAC, 16 bit data, high steady state clock, second edge capture
hcseran 0:f24491e13cb3 110 // spi.frequency(1000000); // 1 MHz SPI clock
hcseran 0:f24491e13cb3 111 spi.frequency(100000); // 100 kHz SPI clock
hcseran 0:f24491e13cb3 112
hcseran 0:f24491e13cb3 113 // pc.baud(9600); // set baud rate for RS232
hcseran 0:f24491e13cb3 114 pc.baud(115200);
hcseran 0:f24491e13cb3 115 pc.format(8, SerialBase::None, 1); // 8 bits data, no parity bit, 1 stop bit
hcseran 0:f24491e13cb3 116
hcseran 0:f24491e13cb3 117
hcseran 0:f24491e13cb3 118 #ifdef LPC1768
hcseran 0:f24491e13cb3 119 if (sign_top_def == 1) s = '+';
hcseran 0:f24491e13cb3 120 else s = '-';
hcseran 0:f24491e13cb3 121 if (gain_top_def == 1) g = 'H';
hcseran 0:f24491e13cb3 122 else g = 'L';
hcseran 0:f24491e13cb3 123 if (on_off_mhv == 0) on = 'A';
hcseran 0:f24491e13cb3 124 else on = 'M';
hcseran 0:f24491e13cb3 125 lcd.cls(); // clear the LCD screen
hcseran 0:f24491e13cb3 126 lcd.locate(13,0); // locate to column 13, row 0
hcseran 0:f24491e13cb3 127 lcd.printf("%c%c%c", g, s, on);
hcseran 0:f24491e13cb3 128 lcd.locate(0,1); // locate to column 0, row 1
hcseran 0:f24491e13cb3 129 lcd.printf("MHV %4d AN %4d", mhv, anl);
hcseran 0:f24491e13cb3 130 #endif
hcseran 0:f24491e13cb3 131 while (1) {
hcseran 0:f24491e13cb3 132 c = pc.getc();
hcseran 0:f24491e13cb3 133 if (c == 0x01) {
hcseran 0:f24491e13cb3 134 pc.puts("Connexion OK\r\n");
hcseran 0:f24491e13cb3 135 #ifdef LPC1768
hcseran 0:f24491e13cb3 136 led1 = 1;
hcseran 0:f24491e13cb3 137 #endif
hcseran 0:f24491e13cb3 138 }
hcseran 0:f24491e13cb3 139 if (c == 0x02) { // load DAC, gain and sign values
hcseran 0:f24491e13cb3 140 #ifdef K64F
hcseran 0:f24491e13cb3 141 // led_green = false; // allume la LED verte
hcseran 0:f24491e13cb3 142 #endif
hcseran 0:f24491e13cb3 143 if (clean) {
hcseran 0:f24491e13cb3 144 nb_elts = 0;
hcseran 0:f24491e13cb3 145 ok = 0xcc;
hcseran 0:f24491e13cb3 146 libere_memoire();
hcseran 0:f24491e13cb3 147 clean = false;
hcseran 0:f24491e13cb3 148 #ifdef K64F
hcseran 0:f24491e13cb3 149 led_green = false; // allume la LED verte
hcseran 0:f24491e13cb3 150 #endif
hcseran 0:f24491e13cb3 151 }
hcseran 0:f24491e13cb3 152
hcseran 0:f24491e13cb3 153 #ifdef LPC1768
hcseran 0:f24491e13cb3 154 led2 =!led2;
hcseran 0:f24491e13cb3 155 #endif
hcseran 0:f24491e13cb3 156 #ifdef K64F
hcseran 0:f24491e13cb3 157 // led_green = !led_green; // LED verte clignote
hcseran 0:f24491e13cb3 158 #endif
hcseran 0:f24491e13cb3 159 // renvoie la commande pour signaler qu'on est prêt à recevoir les données
hcseran 0:f24491e13cb3 160 pc.putc(0x02);
hcseran 0:f24491e13cb3 161 checksum = 0;
hcseran 0:f24491e13cb3 162 if (nb_elts == 0) {
hcseran 0:f24491e13cb3 163 byte[0] = pc.getc(); // MSB
hcseran 0:f24491e13cb3 164 byte[1] = pc.getc(); // LSB
hcseran 0:f24491e13cb3 165 if (ok == 0xcc) head = (element*)malloc(sizeof(element));
hcseran 0:f24491e13cb3 166 head->top_def = (byte[0] << 8) | byte[1];
hcseran 0:f24491e13cb3 167 checksum += head->top_def;
hcseran 0:f24491e13cb3 168 byte[0] = pc.getc(); // MSB
hcseran 0:f24491e13cb3 169 byte[1] = pc.getc(); // LSB
hcseran 0:f24491e13cb3 170 head->bot_def = (byte[0] << 8) | byte[1];
hcseran 0:f24491e13cb3 171 checksum += head->bot_def;
hcseran 0:f24491e13cb3 172 byte[0] = pc.getc(); // MSB
hcseran 0:f24491e13cb3 173 byte[1] = pc.getc(); // LSB
hcseran 0:f24491e13cb3 174 head->top_plate = (byte[0] << 8) | byte[1];
hcseran 0:f24491e13cb3 175 checksum += head->top_plate;
hcseran 0:f24491e13cb3 176 byte[0] = pc.getc(); // MSB
hcseran 0:f24491e13cb3 177 byte[1] = pc.getc(); // LSB
hcseran 0:f24491e13cb3 178 head->anl = (byte[0] << 8) | byte[1];
hcseran 0:f24491e13cb3 179 checksum += head->anl;
hcseran 0:f24491e13cb3 180 #ifdef LPC1768
hcseran 0:f24491e13cb3 181 lcd.cls();
hcseran 0:f24491e13cb3 182 lcd.locate(0, 1);
hcseran 0:f24491e13cb3 183 lcd.printf("%4x%4x%4x%4x",head->top_def,head->bot_def,head->top_plate,head->anl);
hcseran 0:f24491e13cb3 184 #endif
hcseran 0:f24491e13cb3 185 byte[0] = pc.getc();
hcseran 0:f24491e13cb3 186 checksum += byte[0];
hcseran 0:f24491e13cb3 187 head->gain_sign = byte[0];
hcseran 0:f24491e13cb3 188 #ifdef LPC1768
hcseran 0:f24491e13cb3 189 lcd.locate(0, 0); // columb 0, row 0
hcseran 0:f24491e13cb3 190 lcd.printf("%04x",head->gain_sign);
hcseran 0:f24491e13cb3 191 #endif
hcseran 0:f24491e13cb3 192 tail = head;
hcseran 0:f24491e13cb3 193 // renvoyer le checksum
hcseran 0:f24491e13cb3 194 byte[0] = checksum & 0xff; // LSB
hcseran 0:f24491e13cb3 195 pc.putc(byte[0]);
hcseran 0:f24491e13cb3 196 byte[1] = (checksum >> 8) & 0xff; // MSB
hcseran 0:f24491e13cb3 197 pc.putc(byte[1]);
hcseran 0:f24491e13cb3 198 byte[0] = (checksum >> 16) & 0xff;
hcseran 0:f24491e13cb3 199 pc.putc(byte[0]);
hcseran 0:f24491e13cb3 200 byte[1] = (checksum >> 24) & 0xff;
hcseran 0:f24491e13cb3 201 pc.putc(byte[1]);
hcseran 0:f24491e13cb3 202 // attendre la réponse: si Ok attendre 0xcc, si Nok attendre 0x33
hcseran 0:f24491e13cb3 203 ok = pc.getc();
hcseran 0:f24491e13cb3 204 if (ok == 0xcc) nb_elts = 1;
hcseran 0:f24491e13cb3 205 } else {
hcseran 0:f24491e13cb3 206 if (ok == 0xcc) {
hcseran 0:f24491e13cb3 207 tail->next = (element*)malloc(sizeof(element));
hcseran 0:f24491e13cb3 208 tail = tail->next; // avance d'un pas
hcseran 0:f24491e13cb3 209 }
hcseran 0:f24491e13cb3 210 byte[0] = pc.getc();
hcseran 0:f24491e13cb3 211 byte[1] = pc.getc();
hcseran 0:f24491e13cb3 212 tail->top_def = (byte[0] << 8) | byte[1];
hcseran 0:f24491e13cb3 213 checksum += tail->top_def;
hcseran 0:f24491e13cb3 214 byte[0] = pc.getc();
hcseran 0:f24491e13cb3 215 byte[1] = pc.getc();
hcseran 0:f24491e13cb3 216 tail->bot_def = (byte[0] << 8) | byte[1];
hcseran 0:f24491e13cb3 217 checksum += tail->bot_def;
hcseran 0:f24491e13cb3 218 byte[0] = pc.getc();
hcseran 0:f24491e13cb3 219 byte[1] = pc.getc();
hcseran 0:f24491e13cb3 220 tail->top_plate = (byte[0] << 8) | byte[1];
hcseran 0:f24491e13cb3 221 checksum += tail->top_plate;
hcseran 0:f24491e13cb3 222 byte[0] = pc.getc();
hcseran 0:f24491e13cb3 223 byte[1] = pc.getc();
hcseran 0:f24491e13cb3 224 tail->anl = (byte[0] << 8) | byte[1];
hcseran 0:f24491e13cb3 225 checksum += tail->anl;
hcseran 0:f24491e13cb3 226 byte[0] = pc.getc();
hcseran 0:f24491e13cb3 227 checksum += byte[0];
hcseran 0:f24491e13cb3 228 tail->gain_sign = byte[0];
hcseran 0:f24491e13cb3 229 #ifdef LPC1768
hcseran 0:f24491e13cb3 230 lcd.cls();
hcseran 0:f24491e13cb3 231 lcd.locate(0, 1);
hcseran 0:f24491e13cb3 232 lcd.printf("%4x%4x%4x%4x",tail->top_def,tail->bot_def,tail->top_plate,tail->anl);
hcseran 0:f24491e13cb3 233 lcd.locate(15, 0); // columb 15, row 0
hcseran 0:f24491e13cb3 234 lcd.printf("%2x",tail->gain_sign);
hcseran 0:f24491e13cb3 235 #endif
hcseran 0:f24491e13cb3 236
hcseran 0:f24491e13cb3 237 // renvoyer le checksum
hcseran 0:f24491e13cb3 238 byte[0] = checksum & 0xff; // LSB
hcseran 0:f24491e13cb3 239 pc.putc(byte[0]);
hcseran 0:f24491e13cb3 240 byte[1] = (checksum >> 8) & 0xff; // MSB
hcseran 0:f24491e13cb3 241 pc.putc(byte[1]);
hcseran 0:f24491e13cb3 242 byte[0] = (checksum >> 16) & 0xff;
hcseran 0:f24491e13cb3 243 pc.putc(byte[0]);
hcseran 0:f24491e13cb3 244 byte[1] = (checksum >> 24) & 0xff;
hcseran 0:f24491e13cb3 245 pc.putc(byte[1]);
hcseran 0:f24491e13cb3 246 // attendre la réponse: si Ok attendre 0xcc, si Nok attendre 0x33
hcseran 0:f24491e13cb3 247 ok = pc.getc();
hcseran 0:f24491e13cb3 248 if (ok == 0xcc) nb_elts++;
hcseran 0:f24491e13cb3 249 tail->next = NULL;
hcseran 0:f24491e13cb3 250 }
hcseran 0:f24491e13cb3 251 #ifdef K64F
hcseran 0:f24491e13cb3 252 // led_green = true; // éteint la LED verte
hcseran 0:f24491e13cb3 253 #endif
hcseran 0:f24491e13cb3 254 }
hcseran 0:f24491e13cb3 255 if ( c == 0x03) { // send the number of elements loaded in memory
hcseran 0:f24491e13cb3 256 #ifdef LPC1768
hcseran 0:f24491e13cb3 257 lcd.locate(0, 0);
hcseran 0:f24491e13cb3 258 lcd.printf("Nb of elts: %4d",nb_elts);
hcseran 0:f24491e13cb3 259 #endif
hcseran 0:f24491e13cb3 260 byte[0] = nb_elts & 0xff; // LSB
hcseran 0:f24491e13cb3 261 pc.putc(byte[0]);
hcseran 0:f24491e13cb3 262 byte[1] = nb_elts >> 8; // MSB
hcseran 0:f24491e13cb3 263 pc.putc(byte[1]);
hcseran 0:f24491e13cb3 264 // positionne en début de liste
hcseran 0:f24491e13cb3 265 tail = head;
hcseran 0:f24491e13cb3 266 // Set DACs gain & sign
hcseran 0:f24491e13cb3 267 spi.format(16,1);
hcseran 0:f24491e13cb3 268 load_dac_gain_sign(tail);
hcseran 0:f24491e13cb3 269 clean = true;
hcseran 0:f24491e13cb3 270 #ifdef K64F
hcseran 0:f24491e13cb3 271 led_green = true; // éteint la LED verte
hcseran 0:f24491e13cb3 272 #endif
hcseran 0:f24491e13cb3 273
hcseran 0:f24491e13cb3 274 }
hcseran 0:f24491e13cb3 275 if ( c == 0x04) { // receive the DAC MHV and returns it
hcseran 0:f24491e13cb3 276 byte[1] = pc.getc(); // LSB received
hcseran 0:f24491e13cb3 277 byte[0] = pc.getc(); // MSB received
hcseran 0:f24491e13cb3 278 mhv = (byte[0] << 8) | byte[1];
hcseran 0:f24491e13cb3 279 #ifdef LPC1768
hcseran 0:f24491e13cb3 280 lcd.locate(0, 0);
hcseran 0:f24491e13cb3 281 lcd.printf("MHV : %04d %02x ",mhv,tail->gain_sign);
hcseran 0:f24491e13cb3 282 #endif
hcseran 0:f24491e13cb3 283 pc.putc(byte[1]); // LSB sent
hcseran 0:f24491e13cb3 284 pc.putc(byte[0]); // MSB sent
hcseran 0:f24491e13cb3 285
hcseran 0:f24491e13cb3 286 spi.format(16,1); // format to write into DAC
hcseran 0:f24491e13cb3 287 cs_mhv = 0;
hcseran 0:f24491e13cb3 288 spi.write(mhv); // send value to DAC MHV
hcseran 0:f24491e13cb3 289 cs_mhv = 1;
hcseran 0:f24491e13cb3 290 }
hcseran 0:f24491e13cb3 291 if ( c == 0x05) { // avance d'un pas
hcseran 0:f24491e13cb3 292 #ifdef K64F
hcseran 0:f24491e13cb3 293 // led_blue = false; // allume la LED
hcseran 0:f24491e13cb3 294 #endif
hcseran 0:f24491e13cb3 295 tail = tail->next;
hcseran 0:f24491e13cb3 296 #ifdef LPC1768
hcseran 0:f24491e13cb3 297 lcd.locate(0, 1);
hcseran 0:f24491e13cb3 298 lcd.printf("%4x%4x%4x%4x",tail->top_def,tail->bot_def,tail->top_plate,tail->anl);
hcseran 0:f24491e13cb3 299 #endif
hcseran 0:f24491e13cb3 300 // configure DAC with top_def value, gain and sign
hcseran 0:f24491e13cb3 301 spi.format(16,1);
hcseran 0:f24491e13cb3 302 load_dac_gain_sign(tail);
hcseran 0:f24491e13cb3 303 #ifdef K64F
hcseran 0:f24491e13cb3 304 // led_blue = true; // éteint la LED
hcseran 0:f24491e13cb3 305 #endif
hcseran 0:f24491e13cb3 306 }
hcseran 0:f24491e13cb3 307 if ( c == 0x06) { // recule d'un pas
hcseran 0:f24491e13cb3 308 #ifdef K64F
hcseran 0:f24491e13cb3 309 // led_red = false; // allume la LED
hcseran 0:f24491e13cb3 310 #endif
hcseran 0:f24491e13cb3 311 node = head;
hcseran 0:f24491e13cb3 312 if (tail != head) {
hcseran 0:f24491e13cb3 313 while (node->next != tail) node = node ->next;
hcseran 0:f24491e13cb3 314 tail = node; // recule d'un pas dans la liste
hcseran 0:f24491e13cb3 315 }
hcseran 0:f24491e13cb3 316 #ifdef LPC1768
hcseran 0:f24491e13cb3 317 lcd.locate(0, 1);
hcseran 0:f24491e13cb3 318 lcd.printf("%4x%4x%4x%4x",tail->top_def,tail->bot_def,tail->top_plate,tail->anl);
hcseran 0:f24491e13cb3 319 #endif
hcseran 0:f24491e13cb3 320 // configure DAC with top_def value, gain and sign
hcseran 0:f24491e13cb3 321 spi.format(16,1);
hcseran 0:f24491e13cb3 322 load_dac_gain_sign(tail);
hcseran 0:f24491e13cb3 323 #ifdef K64F
hcseran 0:f24491e13cb3 324 // led_red = true; // éteint la LED
hcseran 0:f24491e13cb3 325 #endif
hcseran 0:f24491e13cb3 326 }
hcseran 0:f24491e13cb3 327 if ( c == 0x07) { // set DAC values, gain & sign
hcseran 0:f24491e13cb3 328 spi.format(16,1);
hcseran 0:f24491e13cb3 329 load_dac_gain_sign(tail);
hcseran 0:f24491e13cb3 330 #ifdef LPC1768
hcseran 0:f24491e13cb3 331 lcd.locate(0, 1);
hcseran 0:f24491e13cb3 332 lcd.printf("%4x%4x%4x%4x",tail->top_def,tail->bot_def,tail->top_plate,tail->anl);
hcseran 0:f24491e13cb3 333 lcd.locate(14, 0);
hcseran 0:f24491e13cb3 334 lcd.printf("%02x",tail->gain_sign);
hcseran 0:f24491e13cb3 335 #endif
hcseran 0:f24491e13cb3 336 }
hcseran 0:f24491e13cb3 337 if ( c == 0x08) { // receive DAC top def value and reloads top def DAC
hcseran 0:f24491e13cb3 338 byte[1] = pc.getc(); // LSB received
hcseran 0:f24491e13cb3 339 byte[0] = pc.getc(); // MSB received
hcseran 0:f24491e13cb3 340 dac = (byte[0] << 8) | byte[1];
hcseran 0:f24491e13cb3 341 spi.format(16,1);
hcseran 0:f24491e13cb3 342 cs_top_def = 0;
hcseran 0:f24491e13cb3 343 spi.write(dac); // send value to DAC
hcseran 0:f24491e13cb3 344 cs_top_def = 1;
hcseran 0:f24491e13cb3 345 }
hcseran 0:f24491e13cb3 346 if ( c == 0x09) {
hcseran 0:f24491e13cb3 347 tail = head; // set pointer to beginning of list
hcseran 0:f24491e13cb3 348 #ifdef LPC1768
hcseran 0:f24491e13cb3 349 lcd.locate(0, 1);
hcseran 0:f24491e13cb3 350 lcd.printf("%4x%4x%4x%4x",tail->top_def,tail->bot_def,tail->top_plate,tail->anl);
hcseran 0:f24491e13cb3 351 #endif
hcseran 0:f24491e13cb3 352 spi.format(16,1);
hcseran 0:f24491e13cb3 353 load_dac_gain_sign(tail);
hcseran 0:f24491e13cb3 354 }
hcseran 0:f24491e13cb3 355 if ( c == 0x0a) {
hcseran 0:f24491e13cb3 356 tail->gain_sign = pc.getc(); // gain & sign received
hcseran 0:f24491e13cb3 357 gain_top_def = ((tail->gain_sign) >> GAIN_TOPDEF) & 0x01;
hcseran 0:f24491e13cb3 358 sign_top_def = ((tail->gain_sign) >> SIGN_TOPDEF) & 0x01;
hcseran 0:f24491e13cb3 359 gain_bot_def = ((tail->gain_sign) >> GAIN_BOTDEF) & 0x01;
hcseran 0:f24491e13cb3 360 sign_bot_def = ((tail->gain_sign) >> SIGN_BOTDEF) & 0x01;
hcseran 0:f24491e13cb3 361 gain_top_plate = ((tail->gain_sign) >> GAIN_TOPPLATE) & 0x01;
hcseran 0:f24491e13cb3 362 sign_top_plate = ((tail->gain_sign) >> SIGN_TOPPLATE) & 0x01;
hcseran 0:f24491e13cb3 363 gain_anl = ((tail->gain_sign) >> GAIN_ANL) & 0x01;
hcseran 0:f24491e13cb3 364 //lcd.locate(14, 0); // column 15, row 0
hcseran 0:f24491e13cb3 365 //lcd.printf("%2x",tail->gain_sign);
hcseran 0:f24491e13cb3 366 }
hcseran 0:f24491e13cb3 367 if ( c == 0x0b) { // receive On/Off value and set it
hcseran 0:f24491e13cb3 368 on = pc.getc();
hcseran 0:f24491e13cb3 369 on_off_mhv = on; // set on(1) / off(0) MHV
hcseran 0:f24491e13cb3 370 }
hcseran 0:f24491e13cb3 371 if ( c == 0x0c) { // send ADC values
hcseran 0:f24491e13cb3 372 #ifdef F746ZG
hcseran 0:f24491e13cb3 373 spi.format(16,3); // format pour l'ADC
hcseran 0:f24491e13cb3 374 // spi.format(8,3);
hcseran 0:f24491e13cb3 375
hcseran 0:f24491e13cb3 376 // faire une lecture bidon sans sélectionner l'ADC
hcseran 0:f24491e13cb3 377 spi.write(0);
hcseran 0:f24491e13cb3 378 cs_adc = 0;
hcseran 0:f24491e13cb3 379
hcseran 0:f24491e13cb3 380 // adc = spi.write(0);
hcseran 0:f24491e13cb3 381
hcseran 0:f24491e13cb3 382 adc = spi.write(0x0800); // lecture adc in0 (HK_TEMP_HVPS)
hcseran 0:f24491e13cb3 383 adc1 = adc >> 8; // MSB part
hcseran 0:f24491e13cb3 384 adc0 = adc & 0xff; // LSB part
hcseran 0:f24491e13cb3 385 // adc1 = spi.write(0x8); // lecture adc in0 (HK_TEMP_HVPS)
hcseran 0:f24491e13cb3 386 // adc0 = spi.write(0);
hcseran 0:f24491e13cb3 387 pc.putc(adc1); // send MSB in0
hcseran 0:f24491e13cb3 388 pc.putc(adc0); // send LSB in0
hcseran 0:f24491e13cb3 389
hcseran 0:f24491e13cb3 390 adc = spi.write(0x1000); // lecture adc in1
hcseran 0:f24491e13cb3 391 adc1 = adc >> 8; // MSB part
hcseran 0:f24491e13cb3 392 adc0 = adc & 0xff; // LSB part
hcseran 0:f24491e13cb3 393 // adc1 = spi.write(0x10); // lecture adc in1 (HK_TEMP_EA)
hcseran 0:f24491e13cb3 394 // adc0 = spi.write(0);
hcseran 0:f24491e13cb3 395 pc.putc(adc1); // send MSB adc
hcseran 0:f24491e13cb3 396 pc.putc(adc0); // send LSB adc
hcseran 0:f24491e13cb3 397
hcseran 0:f24491e13cb3 398 adc = spi.write(0x1800); // lecture adc in2 (HK_TEMP_HVPS)
hcseran 0:f24491e13cb3 399 adc1 = adc >> 8; // MSB part
hcseran 0:f24491e13cb3 400 adc0 = adc & 0xff; // LSB part
hcseran 0:f24491e13cb3 401 // adc1 = spi.write(0x18); // lecture adc in2 (HK_MHV_POS)
hcseran 0:f24491e13cb3 402 // adc0 = spi.write(0);
hcseran 0:f24491e13cb3 403 pc.putc(adc1); // send MSB adc
hcseran 0:f24491e13cb3 404 pc.putc(adc0); // send LSB adc
hcseran 0:f24491e13cb3 405
hcseran 0:f24491e13cb3 406 adc = spi.write(0x2000); // lecture adc in3 (HK_TEMP_HVPS)
hcseran 0:f24491e13cb3 407 adc1 = adc >> 8; // MSB part
hcseran 0:f24491e13cb3 408 adc0 = adc & 0xff; // LSB part
hcseran 0:f24491e13cb3 409 // adc1 = spi.write(0x20); // lecture adc in3 (HK_MHV_NEG)
hcseran 0:f24491e13cb3 410 // adc0 = spi.write(0);
hcseran 0:f24491e13cb3 411 pc.putc(adc1); // send MSB adc
hcseran 0:f24491e13cb3 412 pc.putc(adc0); // send LSB adc
hcseran 0:f24491e13cb3 413
hcseran 0:f24491e13cb3 414 adc = spi.write(0x2800); // lecture adc in4 (HK_TEMP_HVPS)
hcseran 0:f24491e13cb3 415 adc1 = adc >> 8; // MSB part
hcseran 0:f24491e13cb3 416 adc0 = adc & 0xff; // LSB part
hcseran 0:f24491e13cb3 417 // adc1 = spi.write(0x28); // lecture adc in4 (HK_ANL)
hcseran 0:f24491e13cb3 418 // adc0 = spi.write(0);
hcseran 0:f24491e13cb3 419 pc.putc(adc1); // send MSB adc
hcseran 0:f24491e13cb3 420 pc.putc(adc0); // send LSB adc
hcseran 0:f24491e13cb3 421
hcseran 0:f24491e13cb3 422 adc = spi.write(0x3000); // lecture adc in5 (HK_TEMP_HVPS)
hcseran 0:f24491e13cb3 423 adc1 = adc >> 8; // MSB part
hcseran 0:f24491e13cb3 424 adc0 = adc & 0xff; // LSB part
hcseran 0:f24491e13cb3 425 // adc1 = spi.write(0x30); // lecture adc in5 (HK_TOP_DEF)
hcseran 0:f24491e13cb3 426 // adc0 = spi.write(0);
hcseran 0:f24491e13cb3 427 pc.putc(adc1); // send MSB adc
hcseran 0:f24491e13cb3 428 pc.putc(adc0); // send LSB adc
hcseran 0:f24491e13cb3 429
hcseran 0:f24491e13cb3 430 adc = spi.write(0x3800); // lecture adc in6 (HK_TEMP_HVPS)
hcseran 0:f24491e13cb3 431 adc1 = adc >> 8; // MSB part
hcseran 0:f24491e13cb3 432 adc0 = adc & 0xff; // LSB part
hcseran 0:f24491e13cb3 433 // adc1 = spi.write(0x38); // lecture adc in6 (HK_BOT_DEF)
hcseran 0:f24491e13cb3 434 // adc0 = spi.write(0);
hcseran 0:f24491e13cb3 435 pc.putc(adc1); // send MSB adc
hcseran 0:f24491e13cb3 436 pc.putc(adc0); // send LSB adc
hcseran 0:f24491e13cb3 437
hcseran 0:f24491e13cb3 438 adc = spi.write(0x0); // lecture adc in7 (HK_TEMP_HVPS)
hcseran 0:f24491e13cb3 439 adc1 = adc >> 8; // MSB part
hcseran 0:f24491e13cb3 440 adc0 = adc & 0xff; // LSB part
hcseran 0:f24491e13cb3 441 // adc1 = spi.write(0); // lecture adc in7 (HK_TOP_PLT) finit sur 0 pour démarrer par in0
hcseran 0:f24491e13cb3 442 // adc0 = spi.write(0);
hcseran 0:f24491e13cb3 443 pc.putc(adc1); // send MSB adc
hcseran 0:f24491e13cb3 444 pc.putc(adc0); // send LSB adc
hcseran 0:f24491e13cb3 445 cs_adc = 1;
hcseran 0:f24491e13cb3 446 #endif
hcseran 0:f24491e13cb3 447 #ifdef K64F
hcseran 0:f24491e13cb3 448 // spi.format(16,3); // format pour l'ADC
hcseran 0:f24491e13cb3 449 spi.format(8,3);
hcseran 0:f24491e13cb3 450
hcseran 0:f24491e13cb3 451 // faire une lecture bidon sans sélectionner l'ADC
hcseran 0:f24491e13cb3 452 spi.write(0);
hcseran 0:f24491e13cb3 453 cs_adc = 0;
hcseran 0:f24491e13cb3 454
hcseran 0:f24491e13cb3 455 adc = spi.write(0);
hcseran 0:f24491e13cb3 456
hcseran 0:f24491e13cb3 457 // adc = spi.write(0x0800); // lecture adc in0 (HK_TEMP_HVPS)
hcseran 0:f24491e13cb3 458 // adc1 = adc >> 8; // MSB part
hcseran 0:f24491e13cb3 459 // adc0 = adc & 0xff; // LSB part
hcseran 0:f24491e13cb3 460 adc1 = spi.write(0x8); // lecture adc in0 (HK_TEMP_HVPS)
hcseran 0:f24491e13cb3 461 adc0 = spi.write(0);
hcseran 0:f24491e13cb3 462 pc.putc(adc1); // send MSB in0
hcseran 0:f24491e13cb3 463 pc.putc(adc0); // send LSB in0
hcseran 0:f24491e13cb3 464
hcseran 0:f24491e13cb3 465 // adc = spi.write(0x1000); // lecture adc in1
hcseran 0:f24491e13cb3 466 // adc1 = adc >> 8; // MSB part
hcseran 0:f24491e13cb3 467 // adc0 = adc & 0xff; // LSB part
hcseran 0:f24491e13cb3 468 adc1 = spi.write(0x10); // lecture adc in1 (HK_TEMP_EA)
hcseran 0:f24491e13cb3 469 adc0 = spi.write(0);
hcseran 0:f24491e13cb3 470 pc.putc(adc1); // send MSB adc
hcseran 0:f24491e13cb3 471 pc.putc(adc0); // send LSB adc
hcseran 0:f24491e13cb3 472
hcseran 0:f24491e13cb3 473 // adc = spi.write(0x1800); // lecture adc in2 (HK_TEMP_HVPS)
hcseran 0:f24491e13cb3 474 // adc1 = adc >> 8; // MSB part
hcseran 0:f24491e13cb3 475 // adc0 = adc & 0xff; // LSB part
hcseran 0:f24491e13cb3 476 adc1 = spi.write(0x18); // lecture adc in2 (HK_MHV_POS)
hcseran 0:f24491e13cb3 477 adc0 = spi.write(0);
hcseran 0:f24491e13cb3 478 pc.putc(adc1); // send MSB adc
hcseran 0:f24491e13cb3 479 pc.putc(adc0); // send LSB adc
hcseran 0:f24491e13cb3 480
hcseran 0:f24491e13cb3 481 // adc = spi.write(0x2000); // lecture adc in3 (HK_TEMP_HVPS)
hcseran 0:f24491e13cb3 482 // adc1 = adc >> 8; // MSB part
hcseran 0:f24491e13cb3 483 // adc0 = adc & 0xff; // LSB part
hcseran 0:f24491e13cb3 484 adc1 = spi.write(0x20); // lecture adc in3 (HK_MHV_NEG)
hcseran 0:f24491e13cb3 485 adc0 = spi.write(0);
hcseran 0:f24491e13cb3 486 pc.putc(adc1); // send MSB adc
hcseran 0:f24491e13cb3 487 pc.putc(adc0); // send LSB adc
hcseran 0:f24491e13cb3 488
hcseran 0:f24491e13cb3 489 // adc = spi.write(0x2800); // lecture adc in4 (HK_TEMP_HVPS)
hcseran 0:f24491e13cb3 490 // adc1 = adc >> 8; // MSB part
hcseran 0:f24491e13cb3 491 // adc0 = adc & 0xff; // LSB part
hcseran 0:f24491e13cb3 492 adc1 = spi.write(0x28); // lecture adc in4 (HK_ANL)
hcseran 0:f24491e13cb3 493 adc0 = spi.write(0);
hcseran 0:f24491e13cb3 494 pc.putc(adc1); // send MSB adc
hcseran 0:f24491e13cb3 495 pc.putc(adc0); // send LSB adc
hcseran 0:f24491e13cb3 496
hcseran 0:f24491e13cb3 497 // adc = spi.write(0x3000); // lecture adc in5 (HK_TEMP_HVPS)
hcseran 0:f24491e13cb3 498 // adc1 = adc >> 8; // MSB part
hcseran 0:f24491e13cb3 499 // adc0 = adc & 0xff; // LSB part
hcseran 0:f24491e13cb3 500 adc1 = spi.write(0x30); // lecture adc in5 (HK_TOP_DEF)
hcseran 0:f24491e13cb3 501 adc0 = spi.write(0);
hcseran 0:f24491e13cb3 502 pc.putc(adc1); // send MSB adc
hcseran 0:f24491e13cb3 503 pc.putc(adc0); // send LSB adc
hcseran 0:f24491e13cb3 504
hcseran 0:f24491e13cb3 505 // adc = spi.write(0x3800); // lecture adc in6 (HK_TEMP_HVPS)
hcseran 0:f24491e13cb3 506 // adc1 = adc >> 8; // MSB part
hcseran 0:f24491e13cb3 507 // adc0 = adc & 0xff; // LSB part
hcseran 0:f24491e13cb3 508 adc1 = spi.write(0x38); // lecture adc in6 (HK_BOT_DEF)
hcseran 0:f24491e13cb3 509 adc0 = spi.write(0);
hcseran 0:f24491e13cb3 510 pc.putc(adc1); // send MSB adc
hcseran 0:f24491e13cb3 511 pc.putc(adc0); // send LSB adc
hcseran 0:f24491e13cb3 512
hcseran 0:f24491e13cb3 513 // adc = spi.write(0x0); // lecture adc in7 (HK_TEMP_HVPS)
hcseran 0:f24491e13cb3 514 // adc1 = adc >> 8; // MSB part
hcseran 0:f24491e13cb3 515 // adc0 = adc & 0xff; // LSB part
hcseran 0:f24491e13cb3 516 adc1 = spi.write(0); // lecture adc in7 (HK_TOP_PLT) finit sur 0 pour démarrer par in0
hcseran 0:f24491e13cb3 517 adc0 = spi.write(0);
hcseran 0:f24491e13cb3 518 pc.putc(adc1); // send MSB adc
hcseran 0:f24491e13cb3 519 pc.putc(adc0); // send LSB adc
hcseran 0:f24491e13cb3 520 cs_adc = 1;
hcseran 0:f24491e13cb3 521 #endif
hcseran 0:f24491e13cb3 522 spi.format(16,1); // format to write into DAC
hcseran 0:f24491e13cb3 523 // faire une lecture bidon sans sélectionner l'ADC
hcseran 0:f24491e13cb3 524 spi.write(0);
hcseran 0:f24491e13cb3 525 }
hcseran 0:f24491e13cb3 526 if ( c == 0x0d) { // load the dwell time in us
hcseran 0:f24491e13cb3 527 byte[1] = pc.getc(); // LSB received
hcseran 0:f24491e13cb3 528 byte[0] = pc.getc(); // MSB received
hcseran 0:f24491e13cb3 529 byte[3] = pc.getc(); // LSB
hcseran 0:f24491e13cb3 530 byte[2] = pc.getc(); // MSB
hcseran 0:f24491e13cb3 531 dwell = (((byte[2] << 24) | byte[3]) << 16) | ((byte[0] << 8) | byte[1]);
hcseran 0:f24491e13cb3 532 #ifdef LPC1768
hcseran 0:f24491e13cb3 533 lcd.locate(0, 0);
hcseran 0:f24491e13cb3 534 lcd.printf("Dwell : %8d",dwell);
hcseran 0:f24491e13cb3 535 #endif
hcseran 0:f24491e13cb3 536 pc.putc(byte[1]); // LSB sent
hcseran 0:f24491e13cb3 537 pc.putc(byte[0]); // MSB sent
hcseran 0:f24491e13cb3 538 pc.putc(byte[3]); // LSB sent
hcseran 0:f24491e13cb3 539 pc.putc(byte[2]); // MSB sent
hcseran 0:f24491e13cb3 540 }
hcseran 0:f24491e13cb3 541 if ( c == 0x0e) { // start sweeping
hcseran 0:f24491e13cb3 542 spi.format(16,1); // ecrire dans les DACs
hcseran 0:f24491e13cb3 543 sweeper.attach_us(&sweep,dwell);
hcseran 0:f24491e13cb3 544 }
hcseran 0:f24491e13cb3 545 if ( c == 0x0f) { // stop sweeping
hcseran 0:f24491e13cb3 546 sweeper.detach();
hcseran 0:f24491e13cb3 547 }
hcseran 0:f24491e13cb3 548 if ( c == 0x10) { // receive DAC analyzer value and reloads analyzer DAC
hcseran 0:f24491e13cb3 549 byte[1] = pc.getc(); // LSB received
hcseran 0:f24491e13cb3 550 byte[0] = pc.getc(); // MSB received
hcseran 0:f24491e13cb3 551 dac = (byte[0] << 8) | byte[1];
hcseran 0:f24491e13cb3 552 spi.format(16,1);
hcseran 0:f24491e13cb3 553 cs_anl = 0;
hcseran 0:f24491e13cb3 554 spi.write(dac); // send value to DAC
hcseran 0:f24491e13cb3 555 cs_anl = 1;
hcseran 0:f24491e13cb3 556 }
hcseran 0:f24491e13cb3 557 if ( c == 0x11) { // receive DAC bot def value and reloads bot def DAC
hcseran 0:f24491e13cb3 558 byte[1] = pc.getc(); // LSB received
hcseran 0:f24491e13cb3 559 byte[0] = pc.getc(); // MSB received
hcseran 0:f24491e13cb3 560 dac = (byte[0] << 8) | byte[1];
hcseran 0:f24491e13cb3 561 spi.format(16,1);
hcseran 0:f24491e13cb3 562 cs_bot_def = 0;
hcseran 0:f24491e13cb3 563 spi.write(dac); // send value to DAC
hcseran 0:f24491e13cb3 564 cs_bot_def = 1;
hcseran 0:f24491e13cb3 565 }
hcseran 0:f24491e13cb3 566 if ( c == 0x12) { // receive DAC top plate value and reloads top plate DAC
hcseran 0:f24491e13cb3 567 byte[1] = pc.getc(); // LSB received
hcseran 0:f24491e13cb3 568 byte[0] = pc.getc(); // MSB received
hcseran 0:f24491e13cb3 569 dac = (byte[0] << 8) | byte[1];
hcseran 0:f24491e13cb3 570 spi.format(16,1);
hcseran 0:f24491e13cb3 571 cs_top_plate = 0;
hcseran 0:f24491e13cb3 572 spi.write(dac); // send value to DAC
hcseran 0:f24491e13cb3 573 cs_top_plate = 1;
hcseran 0:f24491e13cb3 574 }
hcseran 0:f24491e13cb3 575 } // end while (1)
hcseran 0:f24491e13cb3 576
hcseran 0:f24491e13cb3 577 } // end main
hcseran 0:f24491e13cb3 578
hcseran 0:f24491e13cb3 579 void sweep()
hcseran 0:f24491e13cb3 580 {
hcseran 0:f24491e13cb3 581 if (tail->next != NULL) {
hcseran 0:f24491e13cb3 582 tail = tail->next; // avance d'un pas
hcseran 0:f24491e13cb3 583 } else tail = head; // revient au début
hcseran 0:f24491e13cb3 584 load_dac_gain_sign(tail);
hcseran 0:f24491e13cb3 585 } // end sweep()
hcseran 0:f24491e13cb3 586
hcseran 0:f24491e13cb3 587 void load_dac_gain_sign(element *tail)
hcseran 0:f24491e13cb3 588 {
hcseran 0:f24491e13cb3 589 gain_top_def = ((tail->gain_sign) >> GAIN_TOPDEF) & 0x01;
hcseran 0:f24491e13cb3 590 sign_top_def = ((tail->gain_sign) >> SIGN_TOPDEF) & 0x01;
hcseran 0:f24491e13cb3 591 cs_top_def = 0;
hcseran 0:f24491e13cb3 592 spi.write(tail->top_def); // send value to DAC
hcseran 0:f24491e13cb3 593 cs_top_def = 1;
hcseran 0:f24491e13cb3 594 gain_bot_def = ((tail->gain_sign) >> GAIN_BOTDEF) & 0x01;
hcseran 0:f24491e13cb3 595 sign_bot_def = ((tail->gain_sign) >> SIGN_BOTDEF) & 0x01;
hcseran 0:f24491e13cb3 596 cs_bot_def = 0;
hcseran 0:f24491e13cb3 597 spi.write(tail->bot_def); // send value DAC bot def
hcseran 0:f24491e13cb3 598 cs_bot_def = 1;
hcseran 0:f24491e13cb3 599 gain_top_plate = ((tail->gain_sign) >> GAIN_TOPPLATE) & 0x01;
hcseran 0:f24491e13cb3 600 sign_top_plate = ((tail->gain_sign) >> SIGN_TOPPLATE) & 0x01;
hcseran 0:f24491e13cb3 601 cs_top_plate = 0;
hcseran 0:f24491e13cb3 602 spi.write(tail->top_plate); // send value DAC top plate
hcseran 0:f24491e13cb3 603 cs_top_plate = 1;
hcseran 0:f24491e13cb3 604 gain_anl = ((tail->gain_sign) >> GAIN_ANL) & 0x01;
hcseran 0:f24491e13cb3 605 cs_anl = 0;
hcseran 0:f24491e13cb3 606 spi.write(tail->anl); // send value DAC top plate
hcseran 0:f24491e13cb3 607 cs_anl = 1;
hcseran 0:f24491e13cb3 608 }
hcseran 0:f24491e13cb3 609
hcseran 0:f24491e13cb3 610 void libere_memoire()
hcseran 0:f24491e13cb3 611 {
hcseran 0:f24491e13cb3 612 element *node,*temp;
hcseran 0:f24491e13cb3 613
hcseran 0:f24491e13cb3 614 node = head;
hcseran 0:f24491e13cb3 615 temp = node;
hcseran 0:f24491e13cb3 616
hcseran 0:f24491e13cb3 617 while (node != NULL) {
hcseran 0:f24491e13cb3 618 temp = node;
hcseran 0:f24491e13cb3 619 node = node->next;
hcseran 0:f24491e13cb3 620 free(temp);
hcseran 0:f24491e13cb3 621 }
hcseran 0:f24491e13cb3 622 head = NULL;
hcseran 0:f24491e13cb3 623 // free(head);
hcseran 0:f24491e13cb3 624 }
hcseran 0:f24491e13cb3 625