Пример #1
0
int main(){

	/*Set directory for CIN configuration files*/ 
	char fpga_config_dir[]="/home/swilkins/Repos/lbl-fastccds/CIN_1kFSCCD_BINARY/";

	/*Set CIN FPGA configuration file*/   
	char fpga_configfile[]="top_frame_fpga-v1019j.bit";

	/*Set CIN configuration file*/ 
  char cin_config_dir[] = "/home/swilkins/Repos/lbl-fastccds/CameraConfigFiles/";

	char cin_configfile_waveform[] = "2013_Nov_30-200MHz_CCD_timing.txt";

	/*Create Path to files*/
	char cin_fpga_config[1024];
	char cin_waveform_config[1024];
	sprintf(cin_fpga_config,"%s%s", fpga_config_dir,fpga_configfile);
	sprintf(cin_waveform_config,"%s%s", cin_config_dir,cin_configfile_waveform);

	/*Set control ports*/	
	struct cin_port cp[2];
	
	cin_ctl_init_port(&cp[0], 0, CIN_CTL_SVR_PORT, CIN_CTL_CLI_PORT);
	cin_ctl_init_port(&cp[1], 0, CIN_CTL_SVR_FRMW_PORT, CIN_CTL_CLI_FRMW_PORT);

  fprintf(stderr, "Powering OFF CIN ............................");
	cin_ctl_pwr(&cp[0], 0);
	sleep(2);
  fprintf(stderr, " DONE\n");  

  fprintf(stderr, "Powering ON CIN .............................");
	cin_ctl_pwr(&cp[0], 1);
	sleep(2);
  fprintf(stderr, " DONE\n");

  fprintf(stderr, "Powering ON CIN Front Panel .................");
	cin_ctl_fp_pwr(&cp[0], 1);
	sleep(2);
  fprintf(stderr, " DONE\n");

  //fprintf(stderr, "\n");
  //cin_ctl_fpga_status_t fpga_status;
  //cin_ctl_get_cfg_fpga_status(&cp[0], &fpga_status);
  //cin_ctl_display_fpga_status(stderr, &fpga_status);
  //fprintf(stderr, "\n");
  //uint16_t dcm;
  //cin_ctl_get_dcm_status(&cp[0], &dcm);
  //cin_ctl_display_dcm_status(stderr, &dcm);
  //fprintf(stderr, "\n");

  int tries = 5;
  while(tries){
    fprintf(stderr, "Loading Firmware ............................");
		if(cin_ctl_load_firmware(&cp[0],&cp[1],cin_fpga_config)){
      fprintf(stderr, "FAILED.\n");
    } else {
      break;
    }
    tries--;
  }
  
  if(tries){  
    fprintf(stderr, " DONE\n");
  }

  fprintf(stderr, "Setting fabric IP address ...................");
  cin_ctl_set_fabric_address(&cp[0], "10.23.5.127");
  fprintf(stderr, " DONE\n");

  //fprintf(stderr, "\n");
  //cin_ctl_get_cfg_fpga_status(&cp[0], &fpga_status);
  //cin_ctl_display_fpga_status(stderr, &fpga_status);
  //cin_ctl_get_dcm_status(&cp[0], &dcm);
  //cin_ctl_display_dcm_status(stderr, &dcm);
  //fprintf(stderr, "\n");

  // This appears to be broken
  //int fclk;
	//cin_ctl_get_fclk(&cp[0], &fclk);			

  cin_ctl_pwr_mon_t pwr_values;
  int pwr;
  cin_ctl_get_power_status(&cp[0], 1, &pwr, &pwr_values);
  fprintf(stderr, "\n");
  cin_ctl_display_pwr(stderr, &pwr_values);
  fprintf(stderr, "\n");

/************************* FCCD Configuration **************************/	

  fprintf(stderr, "Loading FPGA Clock Configuration ............");
  cin_ctl_load_config(&cp[0],cin_waveform_config);		//Load FCCD clock configuration
  fprintf(stderr, " DONE\n");

	//sleep(3);
	
	//cin_load_config(&cp[0],cin_fcric_config);		//Load CIN fcric Configuration
	//sleep(3);
	
	//cin_load_config(&cp[0],cin_bias_config);		//Load FCCD bias Configuration
	//sleep(3);

/**********************************************************************/		

  cin_ctl_close_port(&cp[0]);
  cin_ctl_close_port(&cp[1]);

  fprintf(stderr, "\n\n");
	return 0;				
}
Пример #2
0
void FastCCD::getCameraStatus(void){

  cin_ctl_id_t id;
  int cin_status = 0;
  cin_ctl_pwr_mon_t pwr_value;
  int pwr = 0;
  int full = 0;

  cin_status |= cin_ctl_get_id(&cin_ctl_port, &id);
  if(!cin_status){
    setIntegerParam(FastCCDBoardID, id.board_id);
    setIntegerParam(FastCCDSerialNum, id.serial_no);
    setIntegerParam(FastCCDFPGAVersion, id.fpga_ver);
    setParamStatus(FastCCDBoardID, asynSuccess);
    setParamStatus(FastCCDSerialNum, asynSuccess);
    setParamStatus(FastCCDFPGAVersion, asynSuccess);
  } else {
    setParamStatus(FastCCDBoardID, asynDisconnected);
    setParamStatus(FastCCDSerialNum, asynDisconnected);
    setParamStatus(FastCCDFPGAVersion, asynDisconnected);
  }

  cin_status = cin_ctl_get_power_status(&cin_ctl_port, full, &pwr, &pwr_value);
  if(!cin_status){
    // Power Status
    if(pwr){
      setIntegerParam(FastCCDPower, 1);
      if(pwr == 2){
        setIntegerParam(FastCCDFPPower, 1);
      } else {
        setIntegerParam(FastCCDFPPower, 0);
      }
     
      // Voltage Values

      setDoubleParam(FastCCDVBus12V0, pwr_value.bus_12v0.v);
      setDoubleParam(FastCCDIBus12V0, pwr_value.bus_12v0.i);
      setParamStatus(FastCCDVBus12V0, asynSuccess);
      setParamStatus(FastCCDIBus12V0, asynSuccess);

      if(full){

        setDoubleParam(FastCCDVMgmt3v3, pwr_value.mgmt_3v3.v);
        setDoubleParam(FastCCDVMgmt2v5, pwr_value.mgmt_2v5.v);
        setDoubleParam(FastCCDVMgmt1v2, pwr_value.mgmt_1v2.v);
        setDoubleParam(FastCCDVEnet1v0, pwr_value.enet_1v0.v);
        setDoubleParam(FastCCDVS3E3v3,  pwr_value.s3e_3v3.v);
        setDoubleParam(FastCCDVGen3v3,  pwr_value.gen_3v3.v);
        setDoubleParam(FastCCDVGen2v5,  pwr_value.gen_2v5.v);
        setDoubleParam(FastCCDV60v9,    pwr_value.v6_0v9.v);
        setDoubleParam(FastCCDV61v0,    pwr_value.v6_1v0.v);
        setDoubleParam(FastCCDV62v5,    pwr_value.v6_2v5.v);
        setParamStatus(FastCCDVMgmt3v3, asynSuccess);
        setParamStatus(FastCCDVMgmt2v5, asynSuccess);
        setParamStatus(FastCCDVMgmt1v2, asynSuccess);
        setParamStatus(FastCCDVEnet1v0, asynSuccess);
        setParamStatus(FastCCDVS3E3v3,  asynSuccess);
        setParamStatus(FastCCDVGen3v3,  asynSuccess);
        setParamStatus(FastCCDVGen2v5,  asynSuccess);
        setParamStatus(FastCCDV60v9,    asynSuccess);
        setParamStatus(FastCCDV61v0,    asynSuccess);
        setParamStatus(FastCCDV62v5,    asynSuccess);
        
        // Current Values

        setDoubleParam(FastCCDIMgmt3v3, pwr_value.mgmt_3v3.i);
        setDoubleParam(FastCCDIMgmt2v5, pwr_value.mgmt_2v5.i);
        setDoubleParam(FastCCDIMgmt1v2, pwr_value.mgmt_1v2.i);
        setDoubleParam(FastCCDIEnet1v0, pwr_value.enet_1v0.i);
        setDoubleParam(FastCCDIS3E3v3,  pwr_value.s3e_3v3.i);
        setDoubleParam(FastCCDIGen3v3,  pwr_value.gen_3v3.i);
        setDoubleParam(FastCCDIGen2v5,  pwr_value.gen_2v5.i);
        setDoubleParam(FastCCDI60v9,    pwr_value.v6_0v9.i);
        setDoubleParam(FastCCDI61v0,    pwr_value.v6_1v0.i);
        setDoubleParam(FastCCDI62v5,    pwr_value.v6_2v5.i);
        setParamStatus(FastCCDIMgmt3v3, asynSuccess);
        setParamStatus(FastCCDIMgmt2v5, asynSuccess);
        setParamStatus(FastCCDIMgmt1v2, asynSuccess);
        setParamStatus(FastCCDIEnet1v0, asynSuccess);
        setParamStatus(FastCCDIS3E3v3,  asynSuccess);
        setParamStatus(FastCCDIGen3v3,  asynSuccess);
        setParamStatus(FastCCDIGen2v5,  asynSuccess);
        setParamStatus(FastCCDI60v9,    asynSuccess);
        setParamStatus(FastCCDI61v0,    asynSuccess);
        setParamStatus(FastCCDI62v5,    asynSuccess);

      }

      setDoubleParam(FastCCDVFp,      pwr_value.fp.v);
      setDoubleParam(FastCCDIFp,      pwr_value.fp.i);
      setParamStatus(FastCCDVFp,      asynSuccess);
      setParamStatus(FastCCDIFp,      asynSuccess);


    } else {
      setIntegerParam(FastCCDPower, 0);
      setIntegerParam(FastCCDFPPower, 0);
    }

    setParamStatus(FastCCDPower, asynSuccess);
    setParamStatus(FastCCDFPPower, asynSuccess);
  }

  if(cin_status || !pwr){

    setParamStatus(FastCCDVBus12V0, asynDisconnected);
    setParamStatus(FastCCDIBus12V0, asynDisconnected);
    setParamStatus(FastCCDVFp,      asynDisconnected);
    setParamStatus(FastCCDIFp,      asynDisconnected);

  }

  if(!full || cin_status || !pwr){
      
    // Voltage Values
    
    setParamStatus(FastCCDVMgmt3v3, asynDisconnected);
    setParamStatus(FastCCDVMgmt2v5, asynDisconnected);
    setParamStatus(FastCCDVMgmt1v2, asynDisconnected);
    setParamStatus(FastCCDVEnet1v0, asynDisconnected);
    setParamStatus(FastCCDVS3E3v3,  asynDisconnected);
    setParamStatus(FastCCDVGen3v3,  asynDisconnected);
    setParamStatus(FastCCDVGen2v5,  asynDisconnected);
    setParamStatus(FastCCDV60v9,    asynDisconnected);
    setParamStatus(FastCCDV61v0,    asynDisconnected);
    setParamStatus(FastCCDV62v5,    asynDisconnected);

    // Current Values

    setParamStatus(FastCCDIMgmt3v3, asynDisconnected);
    setParamStatus(FastCCDIMgmt2v5, asynDisconnected);
    setParamStatus(FastCCDIMgmt1v2, asynDisconnected);
    setParamStatus(FastCCDIEnet1v0, asynDisconnected);
    setParamStatus(FastCCDIS3E3v3,  asynDisconnected);
    setParamStatus(FastCCDIGen3v3,  asynDisconnected);
    setParamStatus(FastCCDIGen2v5,  asynDisconnected);
    setParamStatus(FastCCDI60v9,    asynDisconnected);
    setParamStatus(FastCCDI61v0,    asynDisconnected);
    setParamStatus(FastCCDI62v5,    asynDisconnected);

  }

  // Status

  uint16_t fpga_status, dcm_status;
  
  cin_status = cin_ctl_get_cfg_fpga_status(&cin_ctl_port, &fpga_status);
  if(!cin_status){
    setUIntDigitalParam(FastCCDFPGAStatus, fpga_status, 0xFFFF);
    setParamStatus(FastCCDFPGAStatus, asynSuccess);
  } else {
    setParamStatus(FastCCDFPGAStatus, asynDisconnected);
  }
  
  cin_status = cin_ctl_get_dcm_status(&cin_ctl_port, &dcm_status);
    if(!cin_status){
    setUIntDigitalParam(FastCCDDCMStatus, dcm_status, 0xFFFF);
    setParamStatus(FastCCDDCMStatus, asynSuccess);
  } else {
    setParamStatus(FastCCDDCMStatus, asynDisconnected);
  }

  /* Are we powered up and configured? */

  if(fpga_status & CIN_CTL_FPGA_STS_CFG){

    // Clock and Bias status
  
    int _val;
    cin_status = cin_ctl_get_camera_pwr(&cin_ctl_port, &_val);
    if(!cin_status){
      setIntegerParam(FastCCDCameraPower, _val);
      setParamStatus(FastCCDCameraPower, asynSuccess);
    } else {
      setParamStatus(FastCCDCameraPower, asynDisconnected);
    }

    cin_status = cin_ctl_get_clocks(&cin_ctl_port, &_val);
    if(!cin_status){
      setIntegerParam(FastCCDClocks, _val);
      setParamStatus(FastCCDClocks, asynSuccess);
    } else {
      setParamStatus(FastCCDClocks, asynDisconnected);
    }
 
    cin_status = cin_ctl_get_bias(&cin_ctl_port, &_val);
    if(!cin_status){
      setIntegerParam(FastCCDBias, _val);
      setParamStatus(FastCCDBias, asynSuccess);
    } else {
      setParamStatus(FastCCDBias, asynDisconnected);
    }

    // Get Mux Settings
    
    int mux;
    cin_status = cin_ctl_get_mux(&cin_ctl_port, &mux);
    if(!cin_status){
      setIntegerParam(FastCCDMux1, (mux & 0x000F));
      setIntegerParam(FastCCDMux2, (mux & 0x00F0) >> 4);
      setParamStatus(FastCCDMux1, asynSuccess);
      setParamStatus(FastCCDMux2, asynSuccess);
    } else {