예제 #1
0
/*****************************************************************************
 * Name :
 * Input:
 * Output:
 * Description :
 *	Comments :
 *****************************************************************************/
bool TestStep(u8 testCaseNbr)
{
    bool result = false;

    // nastavim 1 output na vystup
    OUT1_DDR = OUT_group1_BASE |OUT_group1_mask[testCaseNbr];
    OUT2_DDR = OUT_group2_BASE |OUT_group2_mask[testCaseNbr];

    //nastavim 1 na jednom vystupu
    OUT1_ODR = OUT_group1_BASE |OUT_group1_mask[testCaseNbr];
    OUT2_ODR = OUT_group2_BASE |OUT_group2_mask[testCaseNbr];

    SetTimeoutTime(10);
    while (!IsTimeoutExpired());
    // test pruchodnosti - jeden vstup(maskovany podle zvoleneho vystupu musi byt nastaveny
    if (! ((IN1_IDR & IN_group1_BASE &  IN_group1_mask[testCaseNbr]) ||
            (IN2_IDR & IN_group2_BASE &  IN_group2_mask[testCaseNbr]))) {
        return false; //- neprochazi
    }
    // test zkratu na zadnem vstupu (ostatnich) nesmi byt 1 krome testovaneho
    if ((IN1_IDR & IN_group1_BASE &  ~IN_group1_mask[testCaseNbr]) ||
            (IN2_IDR & IN_group2_BASE &  ~IN_group2_mask[testCaseNbr])) {
        return false;// - zkrat
    }
    // test zkratu 2 - take na zadnem z ostatnich vystupu nesmi byt 1 ( v IN modu)
    if ((OUT1_IDR & OUT_group1_BASE_Mask &  ~OUT_group1_mask[testCaseNbr]) ||
            (OUT2_IDR & OUT_group2_BASE_Mask &  ~OUT_group2_mask[testCaseNbr])) {
        return false;// - zkrat
    }

    // test na nulovy stav - nastaveim 1 na vsechny vystupy krome testovaneho
    OUT1_DDR = OUT_group1_BASE_Mask; // vsechny vystupy jako vystupy
    OUT2_DDR = OUT_group2_BASE_Mask;

    OUT1_ODR = OUT_group1_BASE_Mask & ~OUT_group1_mask[testCaseNbr]; // nastav vsechny vystup krome jednoho
    OUT2_ODR = OUT_group2_BASE_Mask & ~OUT_group2_mask[testCaseNbr];

    SetTimeoutTime(10);
    while (!IsTimeoutExpired());
    // test pruchodnosti  a zkratu - testovany vstup musi byt 0
    if ( ((IN1_IDR & IN_group1_BASE &  IN_group1_mask[testCaseNbr]) ||
            (IN2_IDR & IN_group2_BASE &  IN_group2_mask[testCaseNbr]))) {
        return false;
    }
    return true;

}
예제 #2
0
bool
SyncChannel::WaitForNotify()
{
    PRIntervalTime timeout = (kNoTimeout == mTimeoutMs) ?
                             PR_INTERVAL_NO_TIMEOUT :
                             PR_MillisecondsToInterval(mTimeoutMs);
    // XXX could optimize away this syscall for "no timeout" case if desired
    PRIntervalTime waitStart = PR_IntervalNow();

    mMonitor.Wait(timeout);

    // if the timeout didn't expire, we know we received an event.
    // The converse is not true.
    return !IsTimeoutExpired(waitStart, timeout);
}
예제 #3
0
void main()
{
    u16 tmp;
    u8 tmp8, tmp8_A,i;
    bool result;

    //RC => fcp
    //CLK_Init(CLK_HSI);  // internal RC as a clock source
    CLK->CKDIVR = 0;
    disableInterrupts();
    GPIO_Init();
    TIM4_Init();


    enableInterrupts();
    OK = 0;
    FAIL = 0;

    do {

        if (START == 0) {

            //nastavim 1 vystup do 0
            OUT1_ODR = OUT_group1_BASE;
            OUT2_ODR = OUT_group2_BASE;

            SetTimeoutTime(10);
            while (!IsTimeoutExpired());

            // test zkratu na VCC - na zadnem vstupu nesmi byt 1
            if ((IN1_IDR & IN_group1_BASE ) ||
                    (IN2_IDR & IN_group2_BASE )) {
                FAIL = 1;// - neni klidovy stav
                OK = 1;
            } else	{

                result = true;
                for (i = 0; i < TEST_PAIRS; ++i) {

                    SetTimeoutTime(10);
                    while (!IsTimeoutExpired());

                    result  &= TestStep(i);

                }

                if (result) {
                    OK = 1;
                    FAIL = 0;
                }	else {
                    OK = 0;
                    FAIL = 1;
                }
            }
            //SetTimeoutTime(7000);
            //while (!IsTimeoutExpired());
            while (!START);
            OK = 0;
            FAIL = 0;
            SetTimeoutTime(2000);
            while (!IsTimeoutExpired());
        }



        /** LED Flashing **/
        if (GetLedState()) {
            LED_ON;
            //CAN_Write(&CAN_TxMsg);
        } else {
            LED_OFF;
        }

    } while (1);

}