Exemple #1
0
def main():
    ps = PowerSupply()
    setting = {"volt": 12.0, "curr": 30.0, "ovp": 13.0, "ocp": 40.0}
    try:
        #ps.selectChannel(node=5, ch=1)
        #ps.set(setting)
        #ps.activateOutput()
        ps.selectChannel(node=POWERADDR, ch=1)
        ps.set(setting)
        ps.activateOutput()
    except Exception:
        ps.deactivateOutput()
        ps.reset()
        raise Exception

    chamber1 = Chamber(DEVICE_LIST[0], chamber_id=0)
    chamber2 = Chamber(DEVICE_LIST[1], chamber_id=1)

    f1 = fsm.StateMachine(chamber1)
    f1.run()
    f2 = fsm.StateMachine(chamber2)
    f2.run()

    f1.en_queue(ChamberStates.INIT)
    f1.en_queue(ChamberStates.WORK)
    f1.en_queue(ChamberStates.EXIT)

    f2.en_queue(ChamberStates.INIT)
    f2.en_queue(ChamberStates.WORK)
    f2.en_queue(ChamberStates.EXIT)
Exemple #2
0
 def __init__(self, adapter_sn, chamber_id):
     self.i2c_adapter = Adapter()
     self.i2c_adapter.open(serialnumber=adapter_sn)
     self.chamber_id = chamber_id
     self.channel_list = []
     for i in range(chamber_id * 8, chamber_id * 8 + 8):
         my_channel = channel_open(ch_id=i, device=self.i2c_adapter)
         f = fsm.StateMachine(my_channel)
         f.run()
         self.channel_list.append(f)
     self.finish = False
     super(Chamber, self).__init__()
Exemple #3
0
def main():
    # one cycle for charge and discharge, to debug the channel board.

    # set power supply
    ps = PowerSupply()
    setting = {"volt": 12.5, "curr": 20.0, "ovp": 13.9, "ocp": 30.0}
    try:
        ps.selectChannel(node=6, ch=1)
        ps.set(setting)
        ps.activateOutput()
    except Exception:
        ps.deactivateOutput()
        ps.reset()
        raise Exception

    # set I2C adapter
    i2c_adapter = Adapter()
    i2c_adapter.open(portnum=0)  # assume only one adapter is connected

    import argparse

    parser = argparse.ArgumentParser(description="channel.py")
    parser.add_argument('channel', action='store', help='channel to burnin')
    args = parser.parse_args()

    my_channel = channel_open(ch_id=int(args.channel) - 1, device=i2c_adapter)
    f = fsm.StateMachine(my_channel)
    f.run()

    # start one cycle
    f.en_queue(ChannelStates.run)
    time.sleep(1)  # wait for the process to run, refresh the status.
    # wait for this cycle to finish
    while ((f.status.value != ChannelStates.IDLE)
           and (f.status.value != ChannelStates.EXIT)):
        # check if the channel has finished burnin
        time.sleep(5)
    if (f.status.value == ChannelStates.EXIT):
        logging.info("Finish.")
    else:
        logging.info("One cycle finish.")
    f.quit()

    ps.deactivateOutput()
Exemple #4
0
        if (state == DUTStates.charging):
            logging.debug("dut" + str(self.dutid) + " in charging")
        elif (state == DUTStates.discharging):
            logging.debug("dut" + str(self.dutid) + " in discharging")
        else:
            logging.debug("unknow dut state, exit...")
            self.queue.put(DUTStates.EXIT)

    def error(self):
        logging.debug("dut" + str(self.dutid) + " error...")

    def exit(self):
        logging.debug("dut" + str(self.dutid) + " exit...")


if __name__ == "__main__":
    process = []
    for i in range(8):
        dut = DUT(i)
        f = fsm.StateMachine(dut)
        f.run()
        process.append(f)
    for f in process:
        f.en_queue(DUTStates.INIT)
        f.en_queue(DUTStates.charging)
        f.en_queue(DUTStates.discharging)
        while (f.status.value != DUTStates.discharging):
            print f.status.value
            pass
        f.en_queue(DUTStates.EXIT)
Exemple #5
0
    import argparse

    parser = argparse.ArgumentParser(description="chamber.py")
    parser.add_argument('chamber_id', action='store', help='chamber to burnin')
    args = parser.parse_args()
    if (args.chamber_id == 0):
        device = DEVICE_LIST[0]
        ps_node = 5
    else:
        device = DEVICE_LIST[1]
        ps_node = 6

    ps = PowerSupply()
    setting = {"volt": 12.0, "curr": 15.0, "ovp": 13.0, "ocp": 20.0}

    try:
        ps.selectChannel(node=ps_node, ch=1)
        ps.activateOutput()
    except Exception:
        ps.deactivateOutput()
        raise Exception

    chamber = Chamber(device, chamber_id=int(args.chamber_id))
    f = fsm.StateMachine(chamber)
    f.run()

    f.en_queue(ChamberStates.INIT)
    f.en_queue(ChamberStates.WORK)
    f.en_queue(ChamberStates.EXIT)