void test_i2c(void) { initI2c(I2C_BUS_DEVICE); writeConfig(BUTTONS3_ADDR, 0xCF); writeOutputs(BUTTONS3_ADDR, 0x00); delay(500); writeOutputs(BUTTONS3_ADDR, 0x30); }
/** * @name processAutomatic(EngineData *inp) * @param inp pointer to EngineData structure * processes the whole sequence from reading inputs to writing outputs */ void TruthTableEngine::processAutomatic(EngineData *inp) { readInputs(inp); // read inputs preProcess(inp); // pre process into testbyte process(inp); // search for valid combination postProcess(inp); // copy result to output array writeOutputs(inp); // write digital pins based on active levels }
void act(void *args){ rt_task_set_periodic(NULL,TM_NOW,PLCperiod); while(!stopped){ rt_sem_p(&executionDone,0); /* * Write outputs status */ writeOutputs(actuators); rt_sem_v(&writeDone); rt_task_wait_period(NULL); } }
void PWMController::run() { //std::cout << "PWMController started" << std::endl; while(1) { // pollData(); // calculateOutputs(); // writeOutputs(); // std::this_thread::sleep_for(std::chrono::milliseconds(PWMLOOPTIME)); //} while (!isKilled()) { pollData(); calculateOutputs(); writeOutputs(false); std::this_thread::sleep_for(std::chrono::milliseconds(PWMLOOPTIME)); } stop(); std::cout << "KILLED" << std::endl; while (isKilled()) { pollData(); writeOutputs(true); std::this_thread::sleep_for(std::chrono::milliseconds(PWMLOOPTIME)); } _imuController->reset(); _xRotationController.reset(); _yRotationController.reset(); _zRotationController.reset(); _depthController.reset(); _xRotationController.start(); _yRotationController.start(); _zRotationController.start(); _depthController.start(); _pwm->enable(); std::cout << "ACTIVE" << std::endl; } }
void loop () { readInputs (); cycle (); writeOutputs (); }