SOLID SM1 slow control module test program
Dependencies: S_SCTRL_SMlib mbed
main.cpp
- Committer:
- wbeaumont
- Date:
- 2014-09-07
- Revision:
- 0:263895dd3670
- Child:
- 1:39fce38f6e13
File content as of revision 0:263895dd3670:
#include "mbed.h" #include "S_SCTRL_SM1_PinDef.h" #define VERSION "1.28" #define RELDATE "6 Sept 2014" #define ORGANISATION "(C) Universiteit Antwerpen" #define AUTHOR "wim.beaumont@uantwerpen.be" Serial pc(USBTX,USBRX); // devices // SPI BI pins DigitalInOut msio(ADC_STIO); DigitalOut sclk(SCLK); DigitalOut direction(DIRECTION); DigitalOut stio_mo(STIO_MO); DigitalOut csb1_1(ADC1_CSN); DigitalOut csb2_1(ADC2_CSN); // SPI pins DigitalOut mosi(MOSI); DigitalIn miso(MISO); // DigitalOut sclk(PTC16); reuse sclk DigitalOut t_cs(TEMP_CSN); DigitalOut tc_cs1(TEMP_CABLE_CSN1); DigitalOut tc_cs2(TEMP_CABLE_CSN2); DigitalOut dac_cs(DAC_DCEN); DigitalOut dac_rst(DAC_RSTN); // SPI BI 2 DigitalInOut msio2(ADC_2_STIO); DigitalOut sclk2(SCLK_2); DigitalOut direction2(DIRECTION2); DigitalOut stio_mo2(STIO2_MO); DigitalOut csb1_2(ADC1_2_CSN); DigitalOut csb2_2(ADC2_2_CSN); //SPI 2 DigitalOut mosi2(MOSI_2); DigitalIn miso2(MISO_2); DigitalOut t2_cs(TEMP_2_CSN); DigitalOut t2c_cs1(TEMP_2_CABLE_CSN1); DigitalOut t2c_cs2(TEMP_2_CABLE_CSN2); DigitalOut dac2_cs(DAC_2_DCEN); DigitalOut dac2_rst(DAC_2_RSTN); //cal DigitalOut cal13(CAL_TRIG_1AND3); DigitalOut cal24(CAL_TRIG_2AND4); DigitalOut calint(SEL_CAL_INT); DigitalOut calint2(SEL_2_CAL_INT); DigitalOut calext(SEL_CAL_EXT); DigitalOut calgenext(GEN_EXT_CAL); DigitalOut ledred(LEDRED); DigitalOut ledgreen(LEDGREEN); AnalogIn ain1(ADC1), ain2(ADC2); char c='.'; void callback() { // Note: you need to actually read from the serial to clear the RX interrupt c = pc.getc(); //printf("%c:",c ); } void printhelp(){ printf("program to test IO lines for the Solid Slow control \n\r"); printf("version : %s\n\r%s %s \n\rAuthor %s\n\r",VERSION, ORGANISATION,RELDATE,AUTHOR ); printf("in terminal push t to see the commands\n\r"); printf("the assigned output will toggle, z will stop toggling outputs \n\r"); printf("inputs will be read each cycle, also the bi directional inputs \n\r"); printf("no protection for the directions signals (c,d,m,l) so use with care\n\r"); printf("startup values:\n\r\tmsio(2) input\n\r\tdirection(2) set to input\n\r\tstio_mo to input (adc output)\n\r"); printf("version 1.0 no io (miso only input) \n\r"); } void printcommands(int consel, DigitalOut* caldir) { int localcaldir=caldir->read(); printf("T means toggle output\n\r"); printf("connector 1 or connector 2 signal generation \n\r"); printf("a: T sclk\tb: T direction\n\r"); printf("c: T stio_mo\td: T csb1_1\n\r"); printf("e: T csb2_1\tf: T mosi\n\r"); printf("g: T t_cs\ti: T tc_cs1\n\r"); printf("h: help\n\r"); printf("j: T tc_cs2\tk: T dac_cs\n\r"); printf("l: T dac_rst\tm: T cal_13\n\r"); printf("n: T cal_24\to: T genextcal\n\r"); printf("\n\rcommon\n\r"); printf("q: sel int cal\tr: sel ext cal\n\r"); printf("s: setdefault direction, cal int \n\r"); printf("t: this table\n\r"); printf("v: version"); printf("x: sel con1\ty: sel con2\n\r"); printf("z: stop toggling\n\r"); printf("con sel=%d cal dir=%d\n\r",consel, localcaldir); } // select intern or extern cal 0 = intern, 1 is extern void setcalsource( int external) { calext=0; calint=0; calint2=0; //disable all if ( external==1 ) calext=1; else {calint=1;calint2=1; } } // set tje default , save values void setdefault( ) { msio.input(); msio2.input(); direction=LDIR_IN;direction2=LDIR_IN; stio_mo=RDIR_IN;stio_mo2=RDIR_IN; setcalsource(0); //intern } int main(){ pc.attach(&callback);// handles the input on the RS232 interface DigitalOut* dout = 0; // active signal ledred=1;ledgreen=1; int consel=1; setdefault(); printhelp(); while (true) { if( consel ==1) switch( c) { case 'a' : dout=&sclk; break; case 'b' : dout=&direction; break; case 'c' : dout=&stio_mo; break; case 'd' : dout=&csb1_1; break; case 'e' : dout=&csb2_1; break; case 'f' : dout=&mosi; break; case 'g' : dout=&t_cs; break; case 'i' : dout=&tc_cs1; break; case 'j' : dout=&tc_cs2; break; case 'k' : dout=&dac_cs; break; case 'l' : dout=&dac_rst; break; case 'm' : dout=&cal13; break; case 'n' : dout=&cal24; break; case 'o' : dout=&calgenext; break; default : break; } if( consel ==2) switch( c) { case 'a' : dout=&sclk2; break; case 'b' : dout=&direction2; break; case 'c' : dout=&stio_mo2; break; case 'd' : dout=&csb1_2; break; case 'e' : dout=&csb2_2; break; case 'f' : dout=&mosi2; break; case 'g' : dout=&t2_cs; break; case 'i' : dout=&t2c_cs1; break; case 'j' : dout=&t2c_cs2; break; case 'k' : dout=&dac2_cs; break; case 'l' : dout=&dac2_rst; break; case 'm' : dout=&cal13; break; case 'n' : dout=&cal24; break; case 'o' : dout=&calgenext; break; default : break; } //common switch( c) { case 'h' : printhelp();wait(5); case 'q' : setcalsource(0); break; case 'r' : setcalsource(1); break; case 's' : setdefault(); break; case 't' : printcommands(consel, &calint); wait(5);break; case 'v' : printf ("version %s comiled at %s %s\n\r" , VERSION,__DATE__,__TIME__); wait(2); break; case 'x' : consel=1;break; case 'y' : consel=2;break; case 'z' : dout=NULL; break; default : break; }; c='.';// reset input to default if ( dout != NULL ) { *dout = !(*dout); // toggle pin ; //ledgreen!=ledgreen; } //ledred!=ledred; printf( "miso1:%d msio1:%d miso2:%d msio:%d adc1:%f adc2:%f\n\r", miso.read(),msio.read(), miso2.read(),miso2.read(),ain1.read(),ain2.read() ); wait(0.5f); } }