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
}
示例#3
0
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);
	}
}
示例#4
0
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;
	}
}
示例#5
0
void loop () {
	readInputs ();
	cycle ();
	writeOutputs ();
}