void UserInit(void){
	//setPrintStream(&USBPutArray);
	setPrintLevelInfoPrint();
	println_I("\n\nStarting PIC initialization");
	//DelayMs(1000);
	hardwareInit();
	println_I("Hardware Init done");

	ReleaseAVRReset();



	CheckRev();

	LoadEEstore();

	LoadDefaultValues();

	CartesianControllerInit();

	InitPID();

	UpdateAVRLED();


	lockServos();
	setPrintLevelInfoPrint();

	BOOL brown = getEEBrownOutDetect();
	setCoProcBrownOutMode(brown);
	setBrownOutDetect(brown);


	println_I("###Starting PIC In Debug Mode###\n");// All printfDEBUG functions do not need to be removed from code if debug is disabled
	DelayMs(1000);
	//setPrintLevelErrorPrint();
	println_E("Error level printing");
	println_W("Warning level printing");
	println_I("Info level printing");
}
void UserInit(void) {
    //setPrintStream(&USBPutArray);
    clearPrint();
    setPrintLevelInfoPrint();
    println_I("Start PIC");
    //DelayMs(1000);
    hardwareInit();
    //println_I("Hardware Init done");

    InitializeDyIODataTableManager();

    CheckRev();

    LoadEEstore();


    

    UpdateAVRLED();


    lockServos();
    setPrintLevelInfoPrint();

    boolean brown = getEEBrownOutDetect() ? true:false;
    setBrownOutDetect(brown);

    //Data table needs to be synced before the PID can init properly
    SyncDataTable();
    InitPID();

    
    //println_I("###Starting PIC In Debug Mode###\n"); // All printfDEBUG functions do not need to be removed from code if debug is disabled
    //DelayMs(1000);
    setPrintLevelWarningPrint();
    //println_E("Error level printing");
    //println_W("Warning level printing");
    //println_I("Info level printing");
}
Example #3
0
void Collector::Idle(){
	switch (CS) {
	case ST::READY:
		break;
	case ST::SERVOS_LOCK:
		lockServos();
		stopFloor();
		if (AllPurposeTimer->HasPeriodPassed(servoLockTime)) {
			CS = ST::FLOOR_OPEN;
		}
		break;
	case ST::FLOOR_OPEN:
		openFloor();
		if (isFloorOpen()) {
			CS = ST::FLOOR_WAIT;
			AllPurposeTimer->Reset();
		}
		break;
	case ST::FLOOR_WAIT:
		stopFloor();
		if (AllPurposeTimer->HasPeriodPassed(floorWaitTime)) {
			CS = ST::FLOOR_CLOSE;
		}
		break;
	case ST::FLOOR_CLOSE:
		closeFloor();
		if (isFloorClosed()) {
			CS = ST::SERVOS_UNLOCK;
			AllPurposeTimer->Reset();
		}
		break;
	case ST::SERVOS_UNLOCK:
		unlockServos();
		stopFloor();
		if (AllPurposeTimer->HasPeriodPassed(servoUnlockTime)) {
			CS = ST::READY;
		}
		break;
	}
	
	if (lockingServos) {
		ServoLockRight->Set(1);
		ServoLockLeft->Set(0);
	}
	else {
		ServoLockRight->Set(0);
		ServoLockLeft->Set(1);
	}
	if (closingFloor) {
		if (isFloorClosed()) {
			FloorDrive->Set(Relay::kOff);
			closingFloor = false;
		}
		else FloorDrive->Set(Relay::kReverse);
	}
	else if (openingFloor) {
		if (BottomFloorOpenSwitch->Get()) {
			openingFloor = false;
			FloorDrive->Set(Relay::kOff);
		}
		else FloorDrive->Set(Relay::kForward);
	}
	else {
		FloorDrive->Set(Relay::kOff);
	}
}