⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kiu00.ptp

📁 power test program for on & check, can be programed power supply
💻 PTP
📖 第 1 页 / 共 2 页
字号:
    SUPPLY_NAME,SUPPLY_SETTING;
  WRITE ID=MESFILE'VOLTAGE WAS %F%V. %NL%'VVAL1;
  WRITE ID=MESFILE'TESTING ABORTED. %NL% %035%%NL%';

  PWROK:
  CLEAR MUX;
  CLEAR SCAN;
  LET UUT_POWER_STATUS = 'ON';
  LOG; /*  re-enable logging */
  CALL CNTRL_C(CONTROL='ON'); /* enable control C processing */

END SUBROUTINE PWRUP;

SUBROUTINE PWRDN();	/* POWER DOWN ROUTINE */

/** This Subroutine is used to turn UUT Power off. **/
/** Make sure Logic, Mux, and Scanners are all cleared. **/
  CLEAR LGC; CLEAR MUX; CLEAR SCAN;
  
/** If power is already off, then don't execute this subroutine! **/
  IF UUT_POWER_STATUS = 'OFF' THEN RETURN;

  PWRD:

  CALL CNTRL_C(CONTROL='OFF'); /* disable control C processing */


  CHECK_ID2:

  /** If the target tester does not have Alliance supplies,
      then skip the Alliance power down sequence...**/

  IF POWER_TYPE <> 0 THEN [
    WRITE ID=MESFILE 'Tester does not have Alliance User Supplies!%NL%';
    WRITE ID=MESFILE 'Skipping Alliance Power-Down Code!%NL%';
    BRANCH ALLIANCE_POWER_OFF;
  ];

  /*** PROGRAM ALLIANCE POWER SUPPLIES TO ZERO VOLTS ***/

  PS_OFF:

  SET PS SEQUENCE = 2;

  ALLIANCE_POWER_OFF:
  
  /** Now that Power is turned off - Discharge any 
      capacitive voltages on the power nodes... **/

  CALL DISCHARGE_POWER();


  OPEN_A_RELAYS:
  /** If the target tester does not have Alliance supplies,
      then skip the Open Alliance power Relay sequence...**/

  IF POWER_TYPE <> 0 THEN [
    WRITE ID=MESFILE 'Tester does not have Alliance User Supplies!%NL%';
    WRITE ID=MESFILE 'Skipping Alliance Disconnect Code!%NL%';
    BRANCH PWRDN_MSG;
  ];

  /* Disconnect the Alliance power supply relays. Please make
     sure UUT voltages are discharged before executing the
     following test programming statements. UUT power voltages
     can be discharged by calling the DISCHARGE_POWER subroutine. */

  PS_OPEN:
  /** Disconnect Alliance Supplies...**/
  SET PS SEQUENCE = 3;

  PWRDN_MSG:
  WRITE'POWER REMOVED FROM PC BOARD.%NL%%NL%';
  SET PIO(0) HRLY(OPEN 3);	/* GND RLY */

  LET UUT_POWER_STATUS = 'OFF';
  CALL CNTRL_C(CONTROL='ON'); /* enable control C processing */

END SUBROUTINE PWRDN;


SUBROUTINE DISCHARGE_POWER();
 
  /*****************************************************************/
  /** THIS SUBROUTINE DISCHARGES ANY CAPACITIVE VOLTAGES THAT MAY **/
  /** BE ON THE UUT POWER NODES AFTER THE POWER SUPPLIES HAVE     **/
  /** BEEN TURNED OFF AND PRIOR TO OPENING OF THE POWER SUPPLY    **/
  /** RELAYS. NOTE: THIS DISCHARGE ROUTINE REQUIRES THE           **/
  /** TESTSTATION OR 228X TESTER TO BE CONFIGURED WITH THE ICA    **/
  /** ANALOG HARDWARE!                                            **/
  /*****************************************************************/
 
  /** DECLARE LOCAL VARIABLES USED DURING THIS SUBROUTINE **/
 
  DECLARE CNT;
  DECLARE VVAL3;
  DECLARE PASS_NUMBER;
  DECLARE ALREADY_DISCHARGED;
  DECLARE MIN_DISCH_V;
  DECLARE MAX_DISCH_V;
  DECLARE DISCH_THR;
  
  DECLARE POWER_NODE_1 = 0;  /* DISCHARGE VARIABLE 1 */
  DECLARE POWER_NODE_2 = 0;  /* DISCHARGE VARIABLE 2 */
 
  END_DP_DEC:
 
  WRITE '%033%:M** DISCHARGING UUT POWER NODES%033%:N%NL%';
  
  /** MAKE SURE INSTRUMENT MUX AND PIN SCANNER ARE NOT CONNECTED **/
  CLEAR MUX;
  CLEAR SCAN;
   
  DISCH_INIT:
   
  /* DISABLE LOGGING DURING POWER DISCHARGE */
  NOLOG;
  USE NOFSUB;
  
  /** INITIALIZE VARIABLES THAT WILL BE USED DURING DISCHARGE LOOP **/
   
  LET PASS_NUMBER=1;       /* USED TO LOOP THROUGH DISCHARGE ROUTINE */
  LET ALREADY_DISCHARGED=1;/* USED TO INDICATE VOLTAGE IS DISCHARGED */
  LET MIN_DISCH_V=40M;     /* MIN DISCHARGE VOLTAGE IS 40 MILLIVOLTS */
  LET MAX_DISCH_V=60;      /* MAX DISCHARGE VOLTAGE IS 60 VOLTS */
   
  /** CONNECT VOLTAGE METER **/
  SET MUX AT(CHA=DCMVHI:CHB=DCMVLO);
 
 /*****************************************************************/
 /** THIS IS THE START OF THE DISCHARGE LOOP. DURING THE FIRST   **/
 /** PASS THE VOLTAGE IS MEASURED ON THE POWER NODES. DURING THE **/
 /** SECOND PASS, THE 82 OHM RESISTOR IS USED TO DISCHARGE ANY   **/
 /** NODES THAT EXCEED THE VOLTAGE DISCHARGE THRESHOLD LEVEL.    **/
 /** DURING THE THIRD, AND FINAL, PASS, THE STM 10 OHM RESISTOR  **/
 /** IS USED TO DISCHARGE ANY NODES THAT REMAIN ABOVE THE        **/
 /** DISCHARGE THRESHOLD VOLTAGE. MEASURED VOLTAGES GREATER THAN **/
 /** 60V CANNOT BE DISCHARGED USING THE STM RESISTORS - THEY     **/
 /** MUST BE DISCHARGED USING A PROPERLY RATED EXTERNAL RESISTOR **/
 /** IN THE TEST FIXTURE!                                        **/
 /*****************************************************************/

 NEXT_DISCHARGE_PASS:
 
 /* USE 1 VOLT THRESHOLD FOR 1ST AND 40MV FOR OTHER PASSES */
 IF PASS_NUMBER=2 THEN LET DISCH_THR=1;
 IF PASS_NUMBER>2 THEN LET DISCH_THR=MIN_DISCH_V; 
 
 DIS_PN_1:
 
  /* SKIP IF ALREADY DISCHARGED */
  IF POWER_NODE_1 = ALREADY_DISCHARGED THEN BRANCH DIS_PN_1_END;
 
  IF PASS_NUMBER = 1 THEN
    [
    SET SCAN AT(CHA=4:CHB=3);   /* CONNECT SCANNER */
    MEAS DCV DCM INTO VVAL3 MAX=60; /* MEASURE VOLTAGE */
    IF ABS(VVAL3) < MIN_DISCH_V THEN POWER_NODE_1 = ALREADY_DISCHARGED;
    ELSE
      [
      IF ABS(VVAL3) > 60 THEN
        [
        WRITE ID=MESFILE 'WARNING:VOLTAGE ACROSS POWER AND GROUND NODES%NL%';
        WRITE ID=MESFILE 'WAS %F% VOLTS. VOLTAGES > 60V%NL%' VVAL3;
        WRITE ID=MESFILE 'MUST BE DISCHARGED USING A FIXTURE RESISTOR!%NL%';
        WRITE ID=MESFILE 'NODES:VCC_1_8V1 / GND%NL%%NL%';
        POWER_NODE_1 = ALREADY_DISCHARGED; /* DON'T TRY TO DISCHARGE */
        ];
      ]; /* End of ELSE */
    ]; /* End of IF PASS_NUMBER = 1 */
    
  DIS_PN_1_B:
  IF PASS_NUMBER > 1 THEN
    [
    LET CNT = 0; /* Initialize Measurement Count Variable */
    CLEAR STM;
    SET SCAN AT(CHA=4:CHB=3);   /* CONNECT SCANNER */
 
    /* USE 82 OHM RESISTOR ON 2nd PASS, 10 OHM ON 3rd PASS */
    IF PASS_NUMBER = 2 THEN SET STM RLY(1,2,18,20);
    IF PASS_NUMBER > 2 THEN SET STM RLY(1,2,21,23);
     
  MV_PN_1:
    MEAS DCV DCM INTO VVAL3 LO=-DISCH_THR HI=DISCH_THR DLY=10M MAX=50 FAIL()
      [
      LET CNT=CNT+1;
      IF CNT<50 THEN BRANCH MV_PN_1; /* LOOP UNTIL BELOW THRESHOLD */
      ];
 
    IF ABS(VVAL3) < MIN_DISCH_V THEN POWER_NODE_1 = ALREADY_DISCHARGED;
    ELSE
      [
      IF PASS_NUMBER = 3 THEN
        [
        WRITE ID=MESFILE 'FAILED TO DISCHARGE VOLTAGE BETWEEN%NL%';
        WRITE ID=MESFILE 'POWER AND GROUND NODES%NL%';
        WRITE ID=MESFILE 'MEASURED VOLTAGE WAS %F%%NL%%NL%' VVAL3;
	WRITE ID=MESFILE 'NODES:VCC_1_8V1 / GND%NL%%NL%';
        BITSET (FAIL,8);
        ];
      ]; /* End ELSE */
    ]; /* End of IF PASS_NUMBER > 1 */
  DIS_PN_1_END:
  
 DIS_PN_2:
 
  /* SKIP IF ALREADY DISCHARGED */
  IF POWER_NODE_2 = ALREADY_DISCHARGED THEN BRANCH DIS_PN_2_END;
 
  IF PASS_NUMBER = 1 THEN
    [
    SET SCAN AT(CHA=5:CHB=3);   /* CONNECT SCANNER */
    MEAS DCV DCM INTO VVAL3 MAX=60; /* MEASURE VOLTAGE */
    IF ABS(VVAL3) < MIN_DISCH_V THEN POWER_NODE_2 = ALREADY_DISCHARGED;
    ELSE
      [
      IF ABS(VVAL3) > 60 THEN
        [
        WRITE ID=MESFILE 'WARNING:VOLTAGE ACROSS POWER AND GROUND NODES%NL%';
        WRITE ID=MESFILE 'WAS %F% VOLTS. VOLTAGES > 60V%NL%' VVAL3;
        WRITE ID=MESFILE 'MUST BE DISCHARGED USING A FIXTURE RESISTOR!%NL%';
        WRITE ID=MESFILE 'NODES:VCC_PVRAM_VREFA1 / GND%NL%%NL%';
        POWER_NODE_2 = ALREADY_DISCHARGED; /* DON'T TRY TO DISCHARGE */
        ];
      ]; /* End of ELSE */
    ]; /* End of IF PASS_NUMBER = 1 */
    
  DIS_PN_2_B:
  IF PASS_NUMBER > 1 THEN
    [
    LET CNT = 0; /* Initialize Measurement Count Variable */
    CLEAR STM;
    SET SCAN AT(CHA=5:CHB=3);   /* CONNECT SCANNER */
 
    /* USE 82 OHM RESISTOR ON 2nd PASS, 10 OHM ON 3rd PASS */
    IF PASS_NUMBER = 2 THEN SET STM RLY(1,2,18,20);
    IF PASS_NUMBER > 2 THEN SET STM RLY(1,2,21,23);
     
  MV_PN_2:
    MEAS DCV DCM INTO VVAL3 LO=-DISCH_THR HI=DISCH_THR DLY=10M MAX=50 FAIL()
      [
      LET CNT=CNT+1;
      IF CNT<50 THEN BRANCH MV_PN_2; /* LOOP UNTIL BELOW THRESHOLD */
      ];
 
    IF ABS(VVAL3) < MIN_DISCH_V THEN POWER_NODE_2 = ALREADY_DISCHARGED;
    ELSE
      [
      IF PASS_NUMBER = 3 THEN
        [
        WRITE ID=MESFILE 'FAILED TO DISCHARGE VOLTAGE BETWEEN%NL%';
        WRITE ID=MESFILE 'POWER AND GROUND NODES%NL%';
        WRITE ID=MESFILE 'MEASURED VOLTAGE WAS %F%%NL%%NL%' VVAL3;
	WRITE ID=MESFILE 'NODES:VCC_PVRAM_VREFA1 / GND%NL%%NL%';
        BITSET (FAIL,8);
        ];
      ]; /* End ELSE */
    ]; /* End of IF PASS_NUMBER > 1 */
  DIS_PN_2_END:
  
  
  DONE_POWER_PASS_NUMBER:
  
  /** INCREMENT PASS COUNTER - QUIT AFTER 3 PASSES **/ 
  
   PASS_NUMBER = PASS_NUMBER + 1;
   IF PASS_NUMBER < 4 THEN BRANCH NEXT_DISCHARGE_PASS;
  
   DONE_POWER_DISCHARGE:
  
   CLEAR MUX;
   CLEAR STM;
   CLEAR SCAN;
  
   /** ENABLE DATA LOGGING **/
   LOG;

END SUBROUTINE DISCHARGE_POWER;


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -