Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed DevInterfaces MCP4728 MCP4728setaddr I2Cinterfaces
Diff: main.cpp
- Revision:
- 9:2d70aa45f16e
- Parent:
- 8:abdd660056fb
- Child:
- 10:bf195171d850
--- a/main.cpp Wed Feb 20 14:53:58 2019 +0000
+++ b/main.cpp Fri Mar 22 12:48:52 2019 +0000
@@ -42,10 +42,6 @@
I2CInterface* i2cdev= mbedi2cp;
const float Vdd = 4.97;
-DigitalOut LDAC(p5);
-DigitalOut CntPin(p6);
-
-
Serial pc(USBTX, USBRX);
@@ -81,7 +77,7 @@
DigitalOut m4x5CLK(p20);
-DigitalOut mRefShutters(p30);
+DigitalOut mRefShutters(p5);
bool Shut1 = 0;
bool Shut2 = 0;
@@ -95,10 +91,10 @@
{
int ret = 0;
char z;
- float voltage = 0;
+ int voltCount = 0;
string instr;
- printf("\n\rEnter Voltage \n\r");
+ //printf("\n\rEnter Voltage \n\r");
while (ret == 0)
{
@@ -107,28 +103,29 @@
if( z == 13 )
{
- voltage = atof( instr.c_str() );
+ voltCount = atoi( instr.c_str() );
- if( voltage > Vdd || voltage < 0)
+ if( voltCount > 4095 || voltCount < 0)
{
- pc.printf("\n\r Voltage Entered Higher than Vdd Setting Voltage to Maximum\n\r");
+ //////pc.printf("\n\r Voltage Entered Higher than Vdd Setting Voltage to Maximum\n\r");
+ dac->setDACvalue(4095,chan);
}
else
{
- if ( dac->setVoltage(voltage,chan) )
+ if ( dac->setDACvalue(voltCount,chan) )
{
- printf("failed to set dac value %f for channel %d\n\r",voltage,chan);
+ //printf("failed to set dac value %f for channel %d\n\r",voltCount,chan);
}
- //pc.printf("Voltage set to %3fV\n\r", voltage);
+ ////////pc.printf("Voltage set to %3fV\n\r", voltage);
if( dac->update() )
{
- printf("\n\rfailed to readback channel info \n\r");
+ //printf("\n\rfailed to readback channel info \n\r");
}
else
{
- (void)dac->getVoltage(voltage,chan);//no need to test done with updat
- printf(" CH%d %f[V]",chan,voltage);
- printf("\n\r");
+ (void)dac->getDACvalue(voltCount,chan);//no need to test done with updat
+ //printf(" CH%d %d Counts",chan,voltCount);
+ //printf("\n\r");
}
@@ -139,7 +136,7 @@
}
else
{
- pc.printf("%c",z);
+ ////pc.printf("%c",z);
instr.push_back(z);
}
}
@@ -159,7 +156,7 @@
addr = 0;
MCP4728 dac( i2cdev ,addr, Vdd); // assuming the address of the MCP4728 is set to 0 factory default
- printf("\n\raddr %d MCP4728 :%s\n\r",addr,dac.getversioninfo());
+ //printf("\n\raddr %d MCP4728 :%s\n\r",addr,dac.getversioninfo());
wait(1);
int cnt=0;
@@ -168,14 +165,14 @@
-pc.printf("Agiltron Serial Control Program\n\r");
-pc.printf("'[' 4x4 Swtiching \n\r");
-pc.printf("']' 4x5 Swtiching\n\r");
-pc.printf("1, 2, 3, 4 Toggle Single Shutters\n\r");
-pc.printf("'o' Opens all Shutters\n\r");
-pc.printf("'r' Closes all Shutters \n\r");
-pc.printf("',' 4 Channel DAC Control \n\r");
-pc.printf("'.' Single Channel DAC Control \n\r");
+//pc.printf("Agiltron Serial Control Program\n\r");
+//pc.printf("'[' 4x4 Swtiching \n\r");
+//pc.printf("']' 4x5 Swtiching\n\r");
+//pc.printf("1, 2, 3, 4 Toggle Single Shutters\n\r");
+//pc.printf("'o' Opens all Shutters\n\r");
+//pc.printf("'r' Closes all Shutters \n\r");
+//pc.printf("',' 4 Channel DAC Control \n\r");
+//pc.printf("'.' Single Channel DAC Control \n\r");
//Set up dac for external voltage
dac.setRefExtern();
@@ -198,6 +195,7 @@
m4x4TTL1 = 1;
float voltage = 0;
+ int voltCount = 0;
string instr;
while(1)
@@ -208,34 +206,68 @@
{
Shut1 = !Shut1;
SH.writeShutters(Shut1,Shut2,Shut3,Shut4);
+ if(Shut1)
+ {
+ ////pc.printf("Shutter 1 Closed\n\r");
+ }
+ else
+ {
+ ////pc.printf("Shutter 1 Opened\n\r");
+ }
}
else if( c == '2') //Toggle Shutter 2
{
Shut2 = !Shut2;
SH.writeShutters(Shut1,Shut2,Shut3,Shut4);
+ if(Shut2)
+ {
+ ////pc.printf("Shutter 2 Closed\n\r");
+ }
+ else
+ {
+ ////pc.printf("Shutter 2 Opened\n\r");
+ }
}
else if( c == '3') //Toggle Shutter 3
{
Shut3 = !Shut3;
SH.writeShutters(Shut1,Shut2,Shut3,Shut4);
+ if(Shut3)
+ {
+ ////pc.printf("Shutter 3 Closed\n\r");
+ }
+ else
+ {
+ ////pc.printf("Shutter 3 Opened\n\r");
+ }
}
else if( c == '4') //Toggle Shutter 4
{
Shut4 = !Shut4;
SH.writeShutters(Shut1,Shut2,Shut3,Shut4);
+ if(Shut4)
+ {
+ ////pc.printf("Shutter 4 Closed\n\r");
+ }
+ else
+ {
+ ////pc.printf("Shutter 4 Opened\n\r");
+ }
}
else if( c == 'u')
{
mRefShutters = 0;
+ ////pc.printf("Referenced Shutters Opened\n\r");
}
else if( c == 'y')
{
mRefShutters = 1;
+ ////pc.printf("Reference Shutters Closed\n\r");
}
else if(c == 'o') //Open All Shutters
@@ -245,6 +277,7 @@
Shut3 = 1;
Shut4 = 1;
SH.writeShutters(1,1,1,1);
+ ////pc.printf("All Shutters Opened\n\r");
}
else if(c == 'r') //Close All Shutters
@@ -254,13 +287,14 @@
Shut3 = 0;
Shut4 = 0;
SH.writeShutters(0,0,0,0);
+ ////pc.printf("All Shutters Closed\n\r");
}
else if( c == 91 ) //Left square bracket [ 4x4 Control
{
//Get 5 1's or 0's for binary number
int count = 0;
- pc.printf("4x4 Control: Enter 5 digit binary number\n\r");
+ ////pc.printf("4x4 Control: Enter 5 digit binary number\n\r");
while ( count < 5 )
{
c = pc.getc();
@@ -288,7 +322,7 @@
{
//Get 5 1's or 0's for binary number
int count = 0;
- pc.printf("4x5 Control: Enter 5 digit binary number\n\r");
+ ////pc.printf("4x5 Control: Enter 5 digit binary number\n\r");
while ( count < 5 )
{
c = pc.getc();
@@ -310,9 +344,38 @@
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
}
+
+ else if( c == 'd')
+ {
+ int CH1cnt;
+ int CH2cnt;
+ int CH3cnt;
+ int CH4cnt;
+ //Print State of DAC
+ if( dac.update() == 0)
+ {
+ (void)dac.getDACvalue(CH1cnt,0);
+ (void)dac.getDACvalue(CH2cnt,1);
+ (void)dac.getDACvalue(CH3cnt,2);
+ (void)dac.getDACvalue(CH4cnt,3);
+ pc.printf("CH1:%4d CH2:%4d CH3:%4d CH4:%4d\n\r",CH1cnt,CH2cnt,CH3cnt,CH4cnt);
+ }
+
+ else
+ {
+ pc.printf("Error: No readback from DAC\n\r");
+ }
+ }
+
+ else if( c == 'a')
+ {
+ //Print State of Shutters
+ pc.printf("SH1:%d SH2:%d SH3:%d SH4:%d SHRef:%d\n\r",Shut1,Shut2,Shut3,Shut4,mRefShutters.read());
+ }
+
else if( c == ',' ) //4 Channel DAC Control
{
- pc.printf("4 Channel DAC Control Enter voltage and Press Enter\n\r");
+ ////pc.printf("4 Channel DAC Control Enter voltage and Press Enter\n\r");
int ret = 0;
int chan = 0;
while( ret ==0 && chan < 4)
@@ -320,19 +383,21 @@
char z = pc.getc();
if( z == 13 )
{
- voltage = atof( instr.c_str() );
+ voltCount = atoi( instr.c_str() );
- if( voltage == 0 || voltage > 5.0 )
+ if( voltCount < 0 || voltCount > 4095 )
{
- pc.printf("ERROR\n\r");
+ //////pc.printf("ERROR\n\r");
}
else
{
- if ( dac.setVoltage(voltage,chan) )
+ if ( dac.setDACvalue(voltCount,chan) )
{
- printf("failed to set dac value %d for channel %d\n\r",cnt,chan);
+ //printf("failed to set dac value %d for channel %d\n\r",voltCount,chan);
}
- //pc.printf("Voltage set to %3fV\n\r", voltage);
+ //////////pc.printf("Voltage set to %3fV\n\r", voltage);
+ chan++;
+ /*
if( dac.update() )
{
printf("\n\rfailed to readback channel info \n\r");
@@ -344,6 +409,7 @@
printf("\n\r");
chan++;
}
+ */
}
if( chan == 4)
@@ -355,22 +421,36 @@
}
- else if( z == ']')
+ else if( z == ']')//Sets all channels to full voltage
{
for ( int cc =0 ; cc <4 ; cc++)
{
- if ( dac.setDACvalue(4095,cc) )
+ if ( dac.setDACvalue(3333,cc) )
{
- printf("failed to set dac value %d for channel %d\n\r",cnt,cc);
+ //printf("failed to set dac value %d for channel %d\n\r",cnt,cc);
}
}
- printf("All Channels Set to 5V /n/r");
+ //printf("All Channels Set to 5V \n\r");
+ ret = 1;
+ }
+
+
+ else if( z == '[')//Sets all channels to 0 voltage
+ {
+ for ( int cc =0 ; cc <4 ; cc++)
+ {
+ if ( dac.setDACvalue(1000,cc) )
+ {
+ // printf("failed to set dac value %d for channel %d\n\r",cnt,cc);
+ }
+ }
+ //printf("All Channels Set to 0V \n\r");
ret = 1;
}
else
{
- pc.printf("%c",z);
+ //////pc.printf("%c",z);
instr.push_back(z);
}
}
@@ -379,17 +459,17 @@
else if( c == '.' ) //Single Channel DAC Control
{
- pc.printf("Single Channel DAC Control Press Channel Number\n\r");
+ ////pc.printf("Single Channel DAC Control Press Channel Number\n\r");
char z = pc.getc();
- if( z == '1' || z== '2' || z == '3' || z == '4' )
+ if( z == '1' || z== '2' || z == '3' || z == '0' )
{
- pc.printf("Channel %c Selected",z);
+ //////////pc.printf("Channel %c Selected",z);
DACSetChannel( atoi(&z) , &dac);
}
else
{
- pc.printf("ERROR");
+ ////pc.printf("ERROR");
}
}