//Fills the histogram-related register list
        private void GetRegisters(uint requested_channel)
        {
            uint fpga = requested_channel / 16;

            for (int i = 0; i < base_controls.Length; i++)
            {
                Mu2e_Register.FindAddr(Convert.ToUInt16(base_controls[i] + (fpga * 0x400)), ref febClient.arrReg, out histo_controls[i]); //Histogram control registers
                //histo_controls[i].addr += Convert.ToUInt16(fpga * histo_controls[i].fpga_offset_mult); //Apply the offset to the histo_controls
            }
        }
예제 #2
0
 //Fills the histogram-related register list
 private void GetRegisters()
 {
     for (int i = 0; i < base_addrs.Length; i++)
     {
         Mu2e_Register.FindAddr(base_addrs[i], ref febClient.arrReg, out histo_controls[i]); //Histogram controls
     }
     for (int k = 0; k < write_addrs.Length; k++)
     {
         Mu2e_Register.FindAddr(write_addrs[k], ref febClient.arrReg, out write_regs[k]); //write registers
     }
 }
예제 #3
0
        //public bool SoftwareTrig()
        //{
        //    SW.WriteLine("trig");
        //    timeout = 0;
        //    while ((SR.ReadLine() != "trig") && (timeout < max_timeout)) { System.Threading.Thread.Sleep(1); timeout++; }
        //    if (timeout < max_timeout) { return true; } else { return false; }
        //}

        public bool CheckStatus(out uint spill_state, out uint spill_num, out uint trig_num)
        {
            Mu2e_Register.FindAddr(0x76, ref arrReg, out Mu2e_Register reg_spill_state);
            Mu2e_Register.FindAddr(0x68, ref arrReg, out Mu2e_Register reg_spill_num);
            Mu2e_Register.FindAddr(0x67, ref arrReg, out Mu2e_Register reg_trig_count);

            Mu2e_Register.ReadReg(ref reg_spill_state, ref client);
            Mu2e_Register.ReadReg(ref reg_spill_num, ref client);
            Mu2e_Register.ReadReg(ref reg_trig_count, ref client);

            spill_state = reg_spill_state.val;
            spill_num   = reg_spill_num.val;
            trig_num    = reg_trig_count.val;
            return(true);
        }
예제 #4
0
        public bool ReadCMB_SN(int FPGAnum, int CMB_num, out string CMB_ROM)
        {
            CMB_ROM = "";
            try
            {
                if (_ClientOpen)
                {
                    Mu2e_Register CMB_set;  //addr25
                    Mu2e_Register.FindAddr(0x25, ref this.arrReg, out CMB_set);
                    Mu2e_Register CMB_cmnd; //addr24
                    Mu2e_Register.FindAddr(0x24, ref this.arrReg, out CMB_cmnd);
                    Mu2e_Register CMB_read; //addr26
                    Mu2e_Register.FindAddr(0x26, ref this.arrReg, out CMB_read);

                    try
                    {
                        if (FPGAnum < 4)
                        {
                            CMB_set.fpga_index  = Convert.ToUInt16(FPGAnum);
                            CMB_cmnd.fpga_index = Convert.ToUInt16(FPGAnum);
                            CMB_read.fpga_index = Convert.ToUInt16(FPGAnum);
                        }
                    }
                    catch { }

                    switch (CMB_num)
                    {
                    case 0:
                        Mu2e_Register.WriteReg(1, ref CMB_set, ref this.client);
                        break;

                    case 1:
                        Mu2e_Register.WriteReg(2, ref CMB_set, ref this.client);
                        break;

                    case 2:
                        Mu2e_Register.WriteReg(4, ref CMB_set, ref this.client);
                        break;

                    case 3:
                        Mu2e_Register.WriteReg(8, ref CMB_set, ref this.client);
                        break;

                    default:
                        Mu2e_Register.WriteReg(1, ref CMB_set, ref this.client);
                        break;
                    }
                    Mu2e_Register.WriteReg(0x200, ref CMB_cmnd, ref this.client);

                    SendStr("rdi 26");
                    string t  = "";
                    int    rt = 0;
                    ReadStr(out t, out rt);
                    CMB_ROM = t;
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch { return(false); }
        }