2

Dependencies:   mbed DevInterfaces MCP4728 MCP4728setaddr I2Cinterfaces

Committer:
kstokely
Date:
Fri Mar 22 12:48:52 2019 +0000
Revision:
9:2d70aa45f16e
Parent:
8:abdd660056fb
Export to mbed studio;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wbeaumont 1:d175631a5803 1 /** example program for the use of the MCP4728 class and DACInterface.h classes
wbeaumont 1:d175631a5803 2 *
wbeaumont 1:d175631a5803 3 * V 1.0 : tested on the KL05z but without the MCP4728 connected \
wbeaumont 1:d175631a5803 4 * (C) Wim Beaumont Universiteit Antwerpen 2016
wbeaumont 1:d175631a5803 5 */
wbeaumont 1:d175631a5803 6
wbeaumont 3:e12e21dcd16a 7 #define MCP4728EXAMPLEVER "2.04"
kstokely 7:e649bb2b6187 8 #define TARGET_MBED 1
wbeaumont 1:d175631a5803 9
wbeaumont 0:5bc0f4bd5aa0 10 #include "mbed.h"
kstokely 7:e649bb2b6187 11 #include <string>
wbeaumont 0:5bc0f4bd5aa0 12
wbeaumont 0:5bc0f4bd5aa0 13 #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
wbeaumont 0:5bc0f4bd5aa0 14 PinName const SDA = PTE25;
wbeaumont 0:5bc0f4bd5aa0 15 PinName const SCL = PTE24;
wbeaumont 0:5bc0f4bd5aa0 16 #elif defined (TARGET_KL05Z)
wbeaumont 0:5bc0f4bd5aa0 17 PinName const SDA = PTB4;
wbeaumont 0:5bc0f4bd5aa0 18 PinName const SCL = PTB3;
wbeaumont 0:5bc0f4bd5aa0 19 #elif defined (TARGET_K20D50M)
wbeaumont 0:5bc0f4bd5aa0 20 PinName const SDA = PTB1;
wbeaumont 0:5bc0f4bd5aa0 21 PinName const SCL = PTB0;
kstokely 7:e649bb2b6187 22 #elif defined (TARGET_MBED)
kstokely 7:e649bb2b6187 23 PinName const SDA = p28;
kstokely 7:e649bb2b6187 24 PinName const SCL = p27;
wbeaumont 0:5bc0f4bd5aa0 25 #else
wbeaumont 0:5bc0f4bd5aa0 26 #error TARGET NOT DEFINED
wbeaumont 0:5bc0f4bd5aa0 27 #endif
wbeaumont 0:5bc0f4bd5aa0 28
wbeaumont 0:5bc0f4bd5aa0 29
wbeaumont 0:5bc0f4bd5aa0 30 #include "I2C.h"
wbeaumont 0:5bc0f4bd5aa0 31 #include "I2CInterface.h"
wbeaumont 0:5bc0f4bd5aa0 32 #include "MBEDI2CInterface.h"
wbeaumont 0:5bc0f4bd5aa0 33 #include "DACInterface.h"
wbeaumont 0:5bc0f4bd5aa0 34 #include "dev_interface_def.h"
wbeaumont 3:e12e21dcd16a 35 #include "MCP4728setaddr.h"
wbeaumont 0:5bc0f4bd5aa0 36 #include "mcp4728.h"
wbeaumont 0:5bc0f4bd5aa0 37
kstokely 7:e649bb2b6187 38 #include "shutter.h"
kstokely 7:e649bb2b6187 39
wbeaumont 0:5bc0f4bd5aa0 40 MBEDI2CInterface mbedi2c( SDA, SCL);
wbeaumont 0:5bc0f4bd5aa0 41 MBEDI2CInterface* mbedi2cp= &mbedi2c ;
wbeaumont 0:5bc0f4bd5aa0 42 I2CInterface* i2cdev= mbedi2cp;
kstokely 7:e649bb2b6187 43 const float Vdd = 4.97;
wbeaumont 3:e12e21dcd16a 44
wbeaumont 0:5bc0f4bd5aa0 45
wbeaumont 0:5bc0f4bd5aa0 46 Serial pc(USBTX, USBRX);
wbeaumont 0:5bc0f4bd5aa0 47
kstokely 7:e649bb2b6187 48
kstokely 7:e649bb2b6187 49 //Pins for 4x4 Module
kstokely 7:e649bb2b6187 50
kstokely 7:e649bb2b6187 51 DigitalOut m4x4TTL1(p21);
kstokely 7:e649bb2b6187 52 DigitalOut m4x4TTL2(p22);
kstokely 7:e649bb2b6187 53 DigitalOut m4x4TTL3(p23);
kstokely 7:e649bb2b6187 54 DigitalOut m4x4TTL4(p24);
kstokely 7:e649bb2b6187 55 DigitalOut m4x4TTL5(p25);
kstokely 7:e649bb2b6187 56
kstokely 7:e649bb2b6187 57 DigitalOut m4x4CLK(p26); //CLk for triggering after new input
kstokely 7:e649bb2b6187 58
kstokely 7:e649bb2b6187 59
kstokely 7:e649bb2b6187 60 //Pins for 4x5 Module
kstokely 7:e649bb2b6187 61
kstokely 7:e649bb2b6187 62 DigitalOut m4x5TTL1(p7);
kstokely 7:e649bb2b6187 63 DigitalOut m4x5TTL2(p8);
kstokely 7:e649bb2b6187 64 DigitalOut m4x5TTL3(p9);
kstokely 7:e649bb2b6187 65 DigitalOut m4x5TTL4(p10);
kstokely 7:e649bb2b6187 66 DigitalOut m4x5TTL5(p11);
kstokely 7:e649bb2b6187 67
kstokely 7:e649bb2b6187 68 //Shutter Pins
kstokely 7:e649bb2b6187 69 DigitalOut SH1_1(p12);
kstokely 7:e649bb2b6187 70 DigitalOut SH1_2(p13);
kstokely 7:e649bb2b6187 71 DigitalOut SH2_1(p14);
kstokely 7:e649bb2b6187 72 DigitalOut SH2_2(p15);
kstokely 7:e649bb2b6187 73 DigitalOut SH3_1(p16);
kstokely 7:e649bb2b6187 74 DigitalOut SH3_2(p17);
kstokely 7:e649bb2b6187 75 DigitalOut SH4_1(p18);
kstokely 7:e649bb2b6187 76 DigitalOut SH4_2(p19);
kstokely 7:e649bb2b6187 77
kstokely 7:e649bb2b6187 78 DigitalOut m4x5CLK(p20);
kstokely 7:e649bb2b6187 79
kstokely 9:2d70aa45f16e 80 DigitalOut mRefShutters(p5);
kstokely 8:abdd660056fb 81
kstokely 8:abdd660056fb 82 bool Shut1 = 0;
kstokely 8:abdd660056fb 83 bool Shut2 = 0;
kstokely 8:abdd660056fb 84 bool Shut3 = 0;
kstokely 8:abdd660056fb 85 bool Shut4 = 0;
kstokely 8:abdd660056fb 86
kstokely 8:abdd660056fb 87
kstokely 8:abdd660056fb 88
kstokely 8:abdd660056fb 89
kstokely 8:abdd660056fb 90 int DACSetChannel( int chan, MCP4728* dac)
kstokely 8:abdd660056fb 91 {
kstokely 8:abdd660056fb 92 int ret = 0;
kstokely 8:abdd660056fb 93 char z;
kstokely 9:2d70aa45f16e 94 int voltCount = 0;
kstokely 8:abdd660056fb 95 string instr;
kstokely 8:abdd660056fb 96
kstokely 9:2d70aa45f16e 97 //printf("\n\rEnter Voltage \n\r");
kstokely 8:abdd660056fb 98 while (ret == 0)
kstokely 8:abdd660056fb 99 {
kstokely 8:abdd660056fb 100
kstokely 8:abdd660056fb 101 z = pc.getc();
kstokely 8:abdd660056fb 102
kstokely 8:abdd660056fb 103
kstokely 8:abdd660056fb 104 if( z == 13 )
kstokely 8:abdd660056fb 105 {
kstokely 9:2d70aa45f16e 106 voltCount = atoi( instr.c_str() );
kstokely 8:abdd660056fb 107
kstokely 9:2d70aa45f16e 108 if( voltCount > 4095 || voltCount < 0)
kstokely 8:abdd660056fb 109 {
kstokely 9:2d70aa45f16e 110 //////pc.printf("\n\r Voltage Entered Higher than Vdd Setting Voltage to Maximum\n\r");
kstokely 9:2d70aa45f16e 111 dac->setDACvalue(4095,chan);
kstokely 8:abdd660056fb 112 }
kstokely 8:abdd660056fb 113 else
kstokely 8:abdd660056fb 114 {
kstokely 9:2d70aa45f16e 115 if ( dac->setDACvalue(voltCount,chan) )
kstokely 8:abdd660056fb 116 {
kstokely 9:2d70aa45f16e 117 //printf("failed to set dac value %f for channel %d\n\r",voltCount,chan);
kstokely 8:abdd660056fb 118 }
kstokely 9:2d70aa45f16e 119 ////////pc.printf("Voltage set to %3fV\n\r", voltage);
kstokely 8:abdd660056fb 120 if( dac->update() )
kstokely 8:abdd660056fb 121 {
kstokely 9:2d70aa45f16e 122 //printf("\n\rfailed to readback channel info \n\r");
kstokely 8:abdd660056fb 123 }
kstokely 8:abdd660056fb 124 else
kstokely 8:abdd660056fb 125 {
kstokely 9:2d70aa45f16e 126 (void)dac->getDACvalue(voltCount,chan);//no need to test done with updat
kstokely 9:2d70aa45f16e 127 //printf(" CH%d %d Counts",chan,voltCount);
kstokely 9:2d70aa45f16e 128 //printf("\n\r");
kstokely 8:abdd660056fb 129
kstokely 8:abdd660056fb 130 }
kstokely 8:abdd660056fb 131
kstokely 8:abdd660056fb 132 }
kstokely 8:abdd660056fb 133
kstokely 8:abdd660056fb 134 instr.clear();
kstokely 8:abdd660056fb 135 ret = 1;
kstokely 8:abdd660056fb 136 }
kstokely 8:abdd660056fb 137 else
kstokely 8:abdd660056fb 138 {
kstokely 9:2d70aa45f16e 139 ////pc.printf("%c",z);
kstokely 8:abdd660056fb 140 instr.push_back(z);
kstokely 8:abdd660056fb 141 }
kstokely 8:abdd660056fb 142 }
kstokely 8:abdd660056fb 143 return 1;
kstokely 8:abdd660056fb 144 }
kstokely 8:abdd660056fb 145
kstokely 7:e649bb2b6187 146
kstokely 7:e649bb2b6187 147
kstokely 7:e649bb2b6187 148
kstokely 7:e649bb2b6187 149
kstokely 7:e649bb2b6187 150
wbeaumont 0:5bc0f4bd5aa0 151 int main(void) {
wbeaumont 0:5bc0f4bd5aa0 152
wbeaumont 0:5bc0f4bd5aa0 153 // get the version of getVersion
wbeaumont 0:5bc0f4bd5aa0 154 getVersion gv;
wbeaumont 3:e12e21dcd16a 155 int addr;
wbeaumont 6:d1e569f370ac 156
kstokely 7:e649bb2b6187 157 addr = 0;
wbeaumont 3:e12e21dcd16a 158 MCP4728 dac( i2cdev ,addr, Vdd); // assuming the address of the MCP4728 is set to 0 factory default
kstokely 9:2d70aa45f16e 159 //printf("\n\raddr %d MCP4728 :%s\n\r",addr,dac.getversioninfo());
wbeaumont 3:e12e21dcd16a 160 wait(1);
kstokely 7:e649bb2b6187 161
wbeaumont 0:5bc0f4bd5aa0 162 int cnt=0;
kstokely 7:e649bb2b6187 163
kstokely 8:abdd660056fb 164 mRefShutters = 1;
kstokely 7:e649bb2b6187 165
kstokely 7:e649bb2b6187 166
kstokely 7:e649bb2b6187 167
kstokely 9:2d70aa45f16e 168 //pc.printf("Agiltron Serial Control Program\n\r");
kstokely 9:2d70aa45f16e 169 //pc.printf("'[' 4x4 Swtiching \n\r");
kstokely 9:2d70aa45f16e 170 //pc.printf("']' 4x5 Swtiching\n\r");
kstokely 9:2d70aa45f16e 171 //pc.printf("1, 2, 3, 4 Toggle Single Shutters\n\r");
kstokely 9:2d70aa45f16e 172 //pc.printf("'o' Opens all Shutters\n\r");
kstokely 9:2d70aa45f16e 173 //pc.printf("'r' Closes all Shutters \n\r");
kstokely 9:2d70aa45f16e 174 //pc.printf("',' 4 Channel DAC Control \n\r");
kstokely 9:2d70aa45f16e 175 //pc.printf("'.' Single Channel DAC Control \n\r");
kstokely 7:e649bb2b6187 176
kstokely 7:e649bb2b6187 177 //Set up dac for external voltage
kstokely 7:e649bb2b6187 178 dac.setRefExtern();
kstokely 7:e649bb2b6187 179 dac.update();
kstokely 7:e649bb2b6187 180
kstokely 7:e649bb2b6187 181 //Intialize shutters
kstokely 7:e649bb2b6187 182 Shutter SH;
kstokely 7:e649bb2b6187 183 SH.init( &SH1_1, &SH1_2, &SH2_1, &SH2_2, &SH3_1, &SH3_2, &SH4_1, &SH4_2 );
kstokely 8:abdd660056fb 184
kstokely 7:e649bb2b6187 185 SH.writeShutters(Shut1,Shut2,Shut3,Shut4);
kstokely 7:e649bb2b6187 186
kstokely 7:e649bb2b6187 187
kstokely 7:e649bb2b6187 188 //TTL pin arrays
kstokely 7:e649bb2b6187 189 DigitalOut* Arr_4x4[5] = {&m4x4TTL1, &m4x4TTL2, &m4x4TTL3, &m4x4TTL4, &m4x4TTL5 };
kstokely 7:e649bb2b6187 190 DigitalOut* Arr_4x5[5] = {&m4x5TTL1, &m4x5TTL2, &m4x5TTL3, &m4x5TTL4, &m4x5TTL5 };
kstokely 7:e649bb2b6187 191
kstokely 7:e649bb2b6187 192
kstokely 8:abdd660056fb 193 //Set straight pipes initial state
kstokely 7:e649bb2b6187 194 m4x5TTL1 = 1;
kstokely 7:e649bb2b6187 195
kstokely 7:e649bb2b6187 196 m4x4TTL1 = 1;
kstokely 7:e649bb2b6187 197 float voltage = 0;
kstokely 9:2d70aa45f16e 198 int voltCount = 0;
kstokely 7:e649bb2b6187 199 string instr;
kstokely 7:e649bb2b6187 200
kstokely 7:e649bb2b6187 201 while(1)
kstokely 7:e649bb2b6187 202 {
kstokely 7:e649bb2b6187 203 char c = pc.getc();
kstokely 7:e649bb2b6187 204
kstokely 7:e649bb2b6187 205 if( c == '1') //Toggle Shutter 1
kstokely 7:e649bb2b6187 206 {
kstokely 7:e649bb2b6187 207 Shut1 = !Shut1;
kstokely 7:e649bb2b6187 208 SH.writeShutters(Shut1,Shut2,Shut3,Shut4);
kstokely 9:2d70aa45f16e 209 if(Shut1)
kstokely 9:2d70aa45f16e 210 {
kstokely 9:2d70aa45f16e 211 ////pc.printf("Shutter 1 Closed\n\r");
kstokely 9:2d70aa45f16e 212 }
kstokely 9:2d70aa45f16e 213 else
kstokely 9:2d70aa45f16e 214 {
kstokely 9:2d70aa45f16e 215 ////pc.printf("Shutter 1 Opened\n\r");
kstokely 9:2d70aa45f16e 216 }
kstokely 7:e649bb2b6187 217 }
kstokely 7:e649bb2b6187 218
kstokely 7:e649bb2b6187 219 else if( c == '2') //Toggle Shutter 2
kstokely 7:e649bb2b6187 220 {
kstokely 7:e649bb2b6187 221 Shut2 = !Shut2;
kstokely 7:e649bb2b6187 222 SH.writeShutters(Shut1,Shut2,Shut3,Shut4);
kstokely 9:2d70aa45f16e 223 if(Shut2)
kstokely 9:2d70aa45f16e 224 {
kstokely 9:2d70aa45f16e 225 ////pc.printf("Shutter 2 Closed\n\r");
kstokely 9:2d70aa45f16e 226 }
kstokely 9:2d70aa45f16e 227 else
kstokely 9:2d70aa45f16e 228 {
kstokely 9:2d70aa45f16e 229 ////pc.printf("Shutter 2 Opened\n\r");
kstokely 9:2d70aa45f16e 230 }
kstokely 7:e649bb2b6187 231 }
kstokely 7:e649bb2b6187 232
kstokely 7:e649bb2b6187 233 else if( c == '3') //Toggle Shutter 3
kstokely 7:e649bb2b6187 234 {
kstokely 7:e649bb2b6187 235 Shut3 = !Shut3;
kstokely 7:e649bb2b6187 236 SH.writeShutters(Shut1,Shut2,Shut3,Shut4);
kstokely 9:2d70aa45f16e 237 if(Shut3)
kstokely 9:2d70aa45f16e 238 {
kstokely 9:2d70aa45f16e 239 ////pc.printf("Shutter 3 Closed\n\r");
kstokely 9:2d70aa45f16e 240 }
kstokely 9:2d70aa45f16e 241 else
kstokely 9:2d70aa45f16e 242 {
kstokely 9:2d70aa45f16e 243 ////pc.printf("Shutter 3 Opened\n\r");
kstokely 9:2d70aa45f16e 244 }
kstokely 7:e649bb2b6187 245 }
kstokely 7:e649bb2b6187 246
kstokely 7:e649bb2b6187 247 else if( c == '4') //Toggle Shutter 4
kstokely 7:e649bb2b6187 248 {
kstokely 7:e649bb2b6187 249 Shut4 = !Shut4;
kstokely 7:e649bb2b6187 250 SH.writeShutters(Shut1,Shut2,Shut3,Shut4);
kstokely 9:2d70aa45f16e 251 if(Shut4)
kstokely 9:2d70aa45f16e 252 {
kstokely 9:2d70aa45f16e 253 ////pc.printf("Shutter 4 Closed\n\r");
kstokely 9:2d70aa45f16e 254 }
kstokely 9:2d70aa45f16e 255 else
kstokely 9:2d70aa45f16e 256 {
kstokely 9:2d70aa45f16e 257 ////pc.printf("Shutter 4 Opened\n\r");
kstokely 9:2d70aa45f16e 258 }
kstokely 7:e649bb2b6187 259 }
kstokely 7:e649bb2b6187 260
kstokely 8:abdd660056fb 261 else if( c == 'u')
kstokely 8:abdd660056fb 262 {
kstokely 8:abdd660056fb 263 mRefShutters = 0;
kstokely 9:2d70aa45f16e 264 ////pc.printf("Referenced Shutters Opened\n\r");
kstokely 8:abdd660056fb 265 }
kstokely 7:e649bb2b6187 266
kstokely 8:abdd660056fb 267 else if( c == 'y')
kstokely 8:abdd660056fb 268 {
kstokely 8:abdd660056fb 269 mRefShutters = 1;
kstokely 9:2d70aa45f16e 270 ////pc.printf("Reference Shutters Closed\n\r");
kstokely 8:abdd660056fb 271 }
kstokely 8:abdd660056fb 272
kstokely 8:abdd660056fb 273 else if(c == 'o') //Open All Shutters
kstokely 8:abdd660056fb 274 {
kstokely 8:abdd660056fb 275 Shut1 = 1;
kstokely 8:abdd660056fb 276 Shut2 = 1;
kstokely 8:abdd660056fb 277 Shut3 = 1;
kstokely 8:abdd660056fb 278 Shut4 = 1;
kstokely 8:abdd660056fb 279 SH.writeShutters(1,1,1,1);
kstokely 9:2d70aa45f16e 280 ////pc.printf("All Shutters Opened\n\r");
kstokely 8:abdd660056fb 281 }
kstokely 8:abdd660056fb 282
kstokely 8:abdd660056fb 283 else if(c == 'r') //Close All Shutters
kstokely 8:abdd660056fb 284 {
kstokely 8:abdd660056fb 285 Shut1 = 0;
kstokely 8:abdd660056fb 286 Shut2 = 0;
kstokely 8:abdd660056fb 287 Shut3 = 0;
kstokely 8:abdd660056fb 288 Shut4 = 0;
kstokely 8:abdd660056fb 289 SH.writeShutters(0,0,0,0);
kstokely 9:2d70aa45f16e 290 ////pc.printf("All Shutters Closed\n\r");
kstokely 8:abdd660056fb 291 }
kstokely 8:abdd660056fb 292
kstokely 8:abdd660056fb 293 else if( c == 91 ) //Left square bracket [ 4x4 Control
kstokely 7:e649bb2b6187 294 {
kstokely 7:e649bb2b6187 295 //Get 5 1's or 0's for binary number
kstokely 7:e649bb2b6187 296 int count = 0;
kstokely 9:2d70aa45f16e 297 ////pc.printf("4x4 Control: Enter 5 digit binary number\n\r");
kstokely 7:e649bb2b6187 298 while ( count < 5 )
kstokely 7:e649bb2b6187 299 {
kstokely 7:e649bb2b6187 300 c = pc.getc();
kstokely 7:e649bb2b6187 301
kstokely 7:e649bb2b6187 302 if( c == '1' || c=='0' )
kstokely 7:e649bb2b6187 303 {
kstokely 7:e649bb2b6187 304 *Arr_4x4[count] = atoi(&c);
kstokely 7:e649bb2b6187 305 count++;
kstokely 7:e649bb2b6187 306 }
wbeaumont 0:5bc0f4bd5aa0 307 }
kstokely 7:e649bb2b6187 308
kstokely 7:e649bb2b6187 309 for( int k = 0; k<5; k++) //Trigger clocking to change values
kstokely 7:e649bb2b6187 310 {
kstokely 7:e649bb2b6187 311 m4x4CLK = 1;
kstokely 7:e649bb2b6187 312 wait(0.1);
kstokely 7:e649bb2b6187 313 m4x4CLK = 0;
kstokely 7:e649bb2b6187 314 }
kstokely 7:e649bb2b6187 315
kstokely 7:e649bb2b6187 316 pc.printf("Optical Path set to : %d%d%d%d%d\n\r", m4x4TTL1.read(), m4x4TTL2.read(), m4x4TTL3.read(), m4x4TTL4.read(), m4x4TTL5.read() ); //Confirm the correct output is set
kstokely 7:e649bb2b6187 317 }
kstokely 7:e649bb2b6187 318
kstokely 7:e649bb2b6187 319
kstokely 7:e649bb2b6187 320
kstokely 8:abdd660056fb 321 else if( c == 93 ) //Right square bracket ] 4x5 Control
kstokely 7:e649bb2b6187 322 {
kstokely 7:e649bb2b6187 323 //Get 5 1's or 0's for binary number
kstokely 7:e649bb2b6187 324 int count = 0;
kstokely 9:2d70aa45f16e 325 ////pc.printf("4x5 Control: Enter 5 digit binary number\n\r");
kstokely 7:e649bb2b6187 326 while ( count < 5 )
kstokely 7:e649bb2b6187 327 {
kstokely 7:e649bb2b6187 328 c = pc.getc();
kstokely 7:e649bb2b6187 329
kstokely 7:e649bb2b6187 330 if( c == '1' || c=='0' )
kstokely 7:e649bb2b6187 331 {
kstokely 7:e649bb2b6187 332 *Arr_4x5[count] = atoi(&c);
kstokely 7:e649bb2b6187 333 count++;
kstokely 7:e649bb2b6187 334 }
kstokely 7:e649bb2b6187 335 }
kstokely 7:e649bb2b6187 336
kstokely 7:e649bb2b6187 337 for( int k = 0; k<5; k++) //Trigger clocking to change values
kstokely 7:e649bb2b6187 338 {
kstokely 7:e649bb2b6187 339 m4x5CLK = 1;
kstokely 7:e649bb2b6187 340 wait(0.1);
kstokely 7:e649bb2b6187 341 m4x5CLK = 0;
kstokely 7:e649bb2b6187 342 }
kstokely 7:e649bb2b6187 343
kstokely 7:e649bb2b6187 344 pc.printf("Optical Path set to : %d%d%d%d%d\n\r", m4x5TTL1.read(), m4x5TTL2.read(), m4x5TTL3.read(), m4x5TTL4.read(), m4x5TTL5.read() ); //Confirm the correct output is set
kstokely 7:e649bb2b6187 345 }
kstokely 7:e649bb2b6187 346
kstokely 9:2d70aa45f16e 347
kstokely 9:2d70aa45f16e 348 else if( c == 'd')
kstokely 9:2d70aa45f16e 349 {
kstokely 9:2d70aa45f16e 350 int CH1cnt;
kstokely 9:2d70aa45f16e 351 int CH2cnt;
kstokely 9:2d70aa45f16e 352 int CH3cnt;
kstokely 9:2d70aa45f16e 353 int CH4cnt;
kstokely 9:2d70aa45f16e 354 //Print State of DAC
kstokely 9:2d70aa45f16e 355 if( dac.update() == 0)
kstokely 9:2d70aa45f16e 356 {
kstokely 9:2d70aa45f16e 357 (void)dac.getDACvalue(CH1cnt,0);
kstokely 9:2d70aa45f16e 358 (void)dac.getDACvalue(CH2cnt,1);
kstokely 9:2d70aa45f16e 359 (void)dac.getDACvalue(CH3cnt,2);
kstokely 9:2d70aa45f16e 360 (void)dac.getDACvalue(CH4cnt,3);
kstokely 9:2d70aa45f16e 361 pc.printf("CH1:%4d CH2:%4d CH3:%4d CH4:%4d\n\r",CH1cnt,CH2cnt,CH3cnt,CH4cnt);
kstokely 9:2d70aa45f16e 362 }
kstokely 9:2d70aa45f16e 363
kstokely 9:2d70aa45f16e 364 else
kstokely 9:2d70aa45f16e 365 {
kstokely 9:2d70aa45f16e 366 pc.printf("Error: No readback from DAC\n\r");
kstokely 9:2d70aa45f16e 367 }
kstokely 9:2d70aa45f16e 368 }
kstokely 9:2d70aa45f16e 369
kstokely 9:2d70aa45f16e 370 else if( c == 'a')
kstokely 9:2d70aa45f16e 371 {
kstokely 9:2d70aa45f16e 372 //Print State of Shutters
kstokely 9:2d70aa45f16e 373 pc.printf("SH1:%d SH2:%d SH3:%d SH4:%d SHRef:%d\n\r",Shut1,Shut2,Shut3,Shut4,mRefShutters.read());
kstokely 9:2d70aa45f16e 374 }
kstokely 9:2d70aa45f16e 375
kstokely 8:abdd660056fb 376 else if( c == ',' ) //4 Channel DAC Control
kstokely 7:e649bb2b6187 377 {
kstokely 9:2d70aa45f16e 378 ////pc.printf("4 Channel DAC Control Enter voltage and Press Enter\n\r");
kstokely 8:abdd660056fb 379 int ret = 0;
kstokely 8:abdd660056fb 380 int chan = 0;
kstokely 8:abdd660056fb 381 while( ret ==0 && chan < 4)
kstokely 7:e649bb2b6187 382 {
kstokely 8:abdd660056fb 383 char z = pc.getc();
kstokely 8:abdd660056fb 384 if( z == 13 )
kstokely 8:abdd660056fb 385 {
kstokely 9:2d70aa45f16e 386 voltCount = atoi( instr.c_str() );
kstokely 8:abdd660056fb 387
kstokely 9:2d70aa45f16e 388 if( voltCount < 0 || voltCount > 4095 )
kstokely 8:abdd660056fb 389 {
kstokely 9:2d70aa45f16e 390 //////pc.printf("ERROR\n\r");
kstokely 8:abdd660056fb 391 }
kstokely 8:abdd660056fb 392 else
kstokely 8:abdd660056fb 393 {
kstokely 9:2d70aa45f16e 394 if ( dac.setDACvalue(voltCount,chan) )
kstokely 8:abdd660056fb 395 {
kstokely 9:2d70aa45f16e 396 //printf("failed to set dac value %d for channel %d\n\r",voltCount,chan);
kstokely 8:abdd660056fb 397 }
kstokely 9:2d70aa45f16e 398 //////////pc.printf("Voltage set to %3fV\n\r", voltage);
kstokely 9:2d70aa45f16e 399 chan++;
kstokely 9:2d70aa45f16e 400 /*
kstokely 8:abdd660056fb 401 if( dac.update() )
kstokely 8:abdd660056fb 402 {
kstokely 8:abdd660056fb 403 printf("\n\rfailed to readback channel info \n\r");
kstokely 8:abdd660056fb 404 }
kstokely 8:abdd660056fb 405 else
kstokely 8:abdd660056fb 406 {
kstokely 8:abdd660056fb 407 (void)dac.getVoltage(voltage,chan);//no need to test done with updat
kstokely 8:abdd660056fb 408 printf(" CH%d %f[V]",chan,voltage);
kstokely 8:abdd660056fb 409 printf("\n\r");
kstokely 8:abdd660056fb 410 chan++;
kstokely 8:abdd660056fb 411 }
kstokely 9:2d70aa45f16e 412 */
kstokely 8:abdd660056fb 413
kstokely 8:abdd660056fb 414 }
kstokely 8:abdd660056fb 415 if( chan == 4)
kstokely 8:abdd660056fb 416 {
kstokely 8:abdd660056fb 417 ret = 1;
kstokely 8:abdd660056fb 418 wait_ms(100);
kstokely 8:abdd660056fb 419 }
kstokely 8:abdd660056fb 420 instr.clear();
kstokely 8:abdd660056fb 421
kstokely 8:abdd660056fb 422 }
kstokely 8:abdd660056fb 423
kstokely 9:2d70aa45f16e 424 else if( z == ']')//Sets all channels to full voltage
kstokely 8:abdd660056fb 425 {
kstokely 8:abdd660056fb 426 for ( int cc =0 ; cc <4 ; cc++)
kstokely 8:abdd660056fb 427 {
kstokely 9:2d70aa45f16e 428 if ( dac.setDACvalue(3333,cc) )
kstokely 8:abdd660056fb 429 {
kstokely 9:2d70aa45f16e 430 //printf("failed to set dac value %d for channel %d\n\r",cnt,cc);
kstokely 8:abdd660056fb 431 }
kstokely 8:abdd660056fb 432 }
kstokely 9:2d70aa45f16e 433 //printf("All Channels Set to 5V \n\r");
kstokely 9:2d70aa45f16e 434 ret = 1;
kstokely 9:2d70aa45f16e 435 }
kstokely 9:2d70aa45f16e 436
kstokely 9:2d70aa45f16e 437
kstokely 9:2d70aa45f16e 438 else if( z == '[')//Sets all channels to 0 voltage
kstokely 9:2d70aa45f16e 439 {
kstokely 9:2d70aa45f16e 440 for ( int cc =0 ; cc <4 ; cc++)
kstokely 9:2d70aa45f16e 441 {
kstokely 9:2d70aa45f16e 442 if ( dac.setDACvalue(1000,cc) )
kstokely 9:2d70aa45f16e 443 {
kstokely 9:2d70aa45f16e 444 // printf("failed to set dac value %d for channel %d\n\r",cnt,cc);
kstokely 9:2d70aa45f16e 445 }
kstokely 9:2d70aa45f16e 446 }
kstokely 9:2d70aa45f16e 447 //printf("All Channels Set to 0V \n\r");
kstokely 8:abdd660056fb 448 ret = 1;
kstokely 8:abdd660056fb 449 }
kstokely 8:abdd660056fb 450
kstokely 8:abdd660056fb 451 else
kstokely 8:abdd660056fb 452 {
kstokely 9:2d70aa45f16e 453 //////pc.printf("%c",z);
kstokely 8:abdd660056fb 454 instr.push_back(z);
kstokely 8:abdd660056fb 455 }
kstokely 8:abdd660056fb 456 }
kstokely 8:abdd660056fb 457 }
kstokely 8:abdd660056fb 458
kstokely 8:abdd660056fb 459
kstokely 8:abdd660056fb 460 else if( c == '.' ) //Single Channel DAC Control
kstokely 8:abdd660056fb 461 {
kstokely 9:2d70aa45f16e 462 ////pc.printf("Single Channel DAC Control Press Channel Number\n\r");
kstokely 8:abdd660056fb 463 char z = pc.getc();
kstokely 8:abdd660056fb 464
kstokely 9:2d70aa45f16e 465 if( z == '1' || z== '2' || z == '3' || z == '0' )
kstokely 8:abdd660056fb 466 {
kstokely 9:2d70aa45f16e 467 //////////pc.printf("Channel %c Selected",z);
kstokely 8:abdd660056fb 468 DACSetChannel( atoi(&z) , &dac);
kstokely 8:abdd660056fb 469 }
kstokely 7:e649bb2b6187 470 else
kstokely 7:e649bb2b6187 471 {
kstokely 9:2d70aa45f16e 472 ////pc.printf("ERROR");
wbeaumont 1:d175631a5803 473 }
kstokely 7:e649bb2b6187 474 }
wbeaumont 1:d175631a5803 475
kstokely 7:e649bb2b6187 476 }
kstokely 8:abdd660056fb 477 //Never Reach This
kstokely 8:abdd660056fb 478 return 1;
kstokely 8:abdd660056fb 479 }
kstokely 8:abdd660056fb 480