/***************************************************************************** * 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; }
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); }
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); }