firmware for the SOLID Slow Control Module for SM1
Dependencies: S_SCTRL_SMlib adc_ad9249 mbed sscm_comm AD5384 SWSPI T_adt7320
Diff: main.cpp
- Revision:
- 5:4177f8012a25
- Parent:
- 4:009703f995c6
- Child:
- 6:3a92f9f93d80
diff -r 009703f995c6 -r 4177f8012a25 main.cpp --- a/main.cpp Tue Oct 14 17:11:31 2014 +0000 +++ b/main.cpp Thu Oct 23 17:26:31 2014 +0000 @@ -19,9 +19,12 @@ * v 1.55 removed decode message , messages on the ADC commands * v 1.60 added set cal values fire call , error codes corrected * v 1.61 corrected BIAS channel, introduced DEIMOS32.h + * v 1.65 added heartbeat on / off, added set cal level + * v 1.66 implemented real temperature readout + * v 1.70 implemented set_volt and get_volt commands */ -#define VERSION "1.63" +#define VERSION "1.70" #include "SWSPI_BI.h" @@ -187,23 +190,43 @@ dac[cmd.con-1][cmd.devnr-1].set_dac(chc,cmd.datain);cmd.dataout=cmd.datain;cmd.status=0; } goto DACENDCMD; - } + } + if (!strcmp( cmd.cmd, "svlt")) { + for (chc= stch ; chc < endch; chc++){ + float volt= u162float( cmd.dataout , cmd.datain); + dac[cmd.con-1][cmd.devnr-1].set_volt(chc,volt);cmd.status=0; + } + goto DACENDCMD; + } // next is not very usefull for multiple channels if (!strcmp( cmd.cmd, "rdac")) { for (chc= stch ; chc < endch; chc++){ do16=dac[cmd.con-1][cmd.devnr-1].get_dac(chc);cmd.dataout=do16;cmd.status=0; } goto DACENDCMD; - } + } + if (!strcmp( cmd.cmd, "gvlt")) { + for (chc= stch ; chc < endch; chc++){ + float volt=dac[cmd.con-1][cmd.devnr-1].get_volt(chc); + float2_2u16( volt , cmd.dataout , cmd.datain); + cmd.status=0; + } + goto DACENDCMD; + } DACENDCMD : ; }break; case TEMP : cmd.status=2; + if (!strcmp( cmd.cmd, "rtmp")){ + float temperature=temp[cmd.con-1][cmd.devnr-1].getTemperature(); + float2_2u16(temperature,cmd.dataout,cmd.datain);cmd.status=0; + } if (!strcmp( cmd.cmd, "rtpd")){ do16=temp[cmd.con-1][cmd.devnr-1].get_T();cmd.dataout=do16;cmd.status=0;} if (!strcmp( cmd.cmd, "gtid")){ do8=temp[cmd.con-1][cmd.devnr-1].getId();cmd.dataout=do8;cmd.status=0;} if (!strcmp( cmd.cmd, "rtcr")){ do16=temp[cmd.con-1][cmd.devnr-1].get_TcritSP();cmd.dataout=do16;cmd.status=0;} if (!strcmp( cmd.cmd, "stcr")){ temp[cmd.con-1][cmd.devnr-1].set_TcritSP(cmd.datain);cmd.dataout=cmd.datain;cmd.status=0;} if (!strcmp( cmd.cmd, "ghrv")) {do16=temp[cmd.con-1][cmd.devnr-1].getHdrVersion();cmd.dataout=do16; cmd.status=0;} if (!strcmp( cmd.cmd, "gscv")) {do16=temp[cmd.con-1][cmd.devnr-1].getSrcVersion();cmd.dataout=do16; cmd.status=0;} + if (!strcmp( cmd.cmd, "gtmp")) {do16=temp[cmd.con-1][cmd.devnr-1].getSrcVersion();cmd.dataout=do16; cmd.status=0;} if (!strcmp( cmd.cmd, "ini1")) { temp[cmd.con-1][cmd.devnr-1].init1();cmd.dataout=cmd.datain;cmd.status=0;} if (!strcmp( cmd.cmd, "ini2")) { temp[cmd.con-1][cmd.devnr-1].init2();cmd.dataout=cmd.datain;cmd.status=0;} break; @@ -211,8 +234,13 @@ cmd.status=2; // generate internal CAL if (!strcmp( cmd.cmd, "acal")){toggle_cal(hwl,cmd.ch );cmd.status=0;} + // set calline lvl + if (!strcmp( cmd.cmd, "scll")){set_cal_line(hwl,cmd.ch, cmd.datain );cmd.status=0;} // heartbeat - if (!strcmp( cmd.cmd, "t_hb")) { heartbeat=!heartbeat;cmd.status=0;} + if (!strcmp( cmd.cmd, "t_hb")) { if ( cmd.datain ==0 ) heartbeat=false; + if ( cmd.datain ==1 ) heartbeat=true; + if ( cmd.datain ==2) heartbeat=!heartbeat;cmd.status=0; + } //get main version if (!strcmp( cmd.cmd, "gmpv")) {do16=gv.getHdrVersion();cmd.dataout=do16; cmd.status=0;} // get module serial nr