test program to test / develop the SOLID slow control

Dependencies:   AD5384 SWSPI S25FL216K S_SCTRL_SMlib T_adt7320 adc_ad9249 sscm_comm mbed

main.cpp

Committer:
wbeaumont
Date:
2014-10-08
Revision:
3:8b181fe62a39
Parent:
2:51bbbc3fc8c2

File content as of revision 3:8b181fe62a39:

#include "mbed.h"
#include "mbed.h"
#include "SWSPI.h"
#include "SWSPI_BI.h"
#include "S25FL216K.h"
#include "AD5384.h"
#include "AD9249.h"
#include "adt7320.h"
#include "S_SCTRL_SM1_PinDef.h" 
#include "S_SCTRL_SM1_hwfunct.h" 

#define VERSION "1.41"

#define DEBUGPF(x) printf((x));
// pin function         pin id 
// SPI 1 


S25FL216K flash(F_MOSI, F_MISO, F_SCLK,F_CS); 
Serial pc(USBTX,USBRX);


char c='.';
void callback() {
    // Note: you need to actually read from the serial to clear the RX interrupt  
    c = pc.getc();
    printf("%c:",c );    
 }


//++++++++++++++++++++++
  int main()   {   
    bool testADC=false;
    bool testDAC=true;  
    bool testTEMP=false;//true;
       pc.attach(&callback);// handles the input on the RS232 interface  
    HWlines  hwl ;
    assignports( &hwl );
    setdefault(hwl );
    
    SWSPI spi(hwl.mosi[0],hwl.miso[0],hwl.sclk[0]); // mosi, miso, sclk
    SWSPI spi2(hwl.mosi[1],hwl.miso[1],hwl.sclk[1]); // mosi, miso, sclk
    SWSPI_BI spi_adc(hwl.msio[0],hwl.direction[0],hwl.stio_mo[0] ,hwl.sclk[0]); // msio, dir , sclk 
    SWSPI_BI spi_adc2(hwl.msio[1],hwl.direction[1],hwl.stio_mo[1],hwl.sclk[1]); // msio, dir , sclk 
  
    
      AD9249 adc[2][2]={AD9249( &spi_adc,hwl.csb1[0]), AD9249( &spi_adc,hwl.csb2[0]),
                        AD9249( &spi_adc2,hwl.csb1[1]),  AD9249  ( &spi_adc2,hwl.csb2[1])};
     
      AD5384 dac[2][1]={AD5384(&spi,hwl.dac_cs[0],hwl.dac_rst[0]), AD5384(&spi2,hwl.dac_cs[1],hwl.dac_rst[1]) };
      adt7320 temp[2][3]= { adt7320(&spi, hwl.t_cs[0]),adt7320(&spi, hwl.tc_cs1[0]),adt7320(&spi, hwl.tc_cs2[0]),
                            adt7320(&spi2, hwl.t_cs[1]),adt7320(&spi2, hwl.tc_cs1[1]),adt7320(&spi2, hwl.tc_cs2[1]) };
      //float humi;
      
      
      
      DEBUGPF("start");
      printf(" version  %s compiled %s %s \n\r" , VERSION , __DATE__, __TIME__ );
      printf(" boardserialnr %d \n\r", get_serialnr(&hwl));
      u8 consel1=0;
      u8 consel2=1;
      u8 conls=0, conle=0;  // connector select loop start , connector select loop stop
      // cc == connector counter
            if( consel1==1 && consel2== 0) { conls=0; conle=1;} // only first connector connected 
      else  if( consel1==0 && consel2== 1) { conls=1; conle=2;} // only second  connector connected 
      else  if( consel1==1 && consel2== 1) { conls=0; conle=2;} // 
      else                                 { conls=0; conle=0;} // no connectors connected 
      unsigned char id, grade ;
      
      
     /* for (u8 cc= conls; cc < conle ; cc++) {
        adc[cc][0].getDevInfo(id,grade);printf(" %d %d ",id, grade);
        adc[cc][1].getDevInfo(id,grade);printf(" %d %d ",id, grade);
        
      }*/
      // init parts
      for (u8 cc= conls; cc < conle ; cc++) {
          if( testDAC) { dac[cc][0].init1();
        }
      }
      
      u32 count =0;
      while(1)   {
        for (u8 cc= conls; cc < conle ; cc++) {
            u16 rb,rb2; 
            if( testADC) {     
                adc[cc][0].getDevId(id);
                adc[cc][0].getGrade(grade);
                //adc[cc][0].getDevInfo(id,grade,rb);
                printf("id %02X grade %02X",id, grade );
                printf("\n\r");
                adc[cc][0].setPattern1(0x1235);
                adc[cc][0].setPattern2(0xA5FF);
                adc[cc][0].readPattern1(rb);       
                adc[cc][0].readPattern2(rb2);
                printf("pattern1 %04X  pattern2 %04X",rb,rb2);
                printf("\n\r");
             }
            if( testDAC ) {   
                u16 dataread,dr2;
                u8 ch = count%39;
                
                float value=2.742; // count%16383;
                u16 gain=(count)%16383;//0x1235; 
               //dataread=dac[cc].set_volt(ch,value);
                dr2=dac[cc][0].set_dac(ch,gain);
                wait(0.001);
                dataread=dac[cc][0].get_dac(ch);
                printf("ch %02X dac %04X ",ch,dr2);  
                printf("rb %04X ",dataread);
                dataread=dac[cc][0].get_offset(ch);
                dr2=dac[cc][0].get_gain(ch);
                printf("gain %04X ",dr2);  
                printf("offset %04X",dataread);
                dataread=dac[cc][0].get_ctrl(); 
                printf(" cntrl %04X\n\r",dataread);
            }
            if( testTEMP) {
                u16 dataread ;
                u8 id;
                id=temp[cc][0].getId();
                dataread=temp[cc][0].get_TcritSP();
                printf( "temp chip ID %02X , Tcrit %04X \n\r", id, dataread);
            }
        }
        wait(.25);count++;
        /*
        flash.write(0,&c,1);
        
        humi=ain1.read();
        printf("humid %f \n ",humi);   
        */
      }
  }