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");
}
void ReleaseAVRReset(void){
	AVR_RST_IO=1;
	UpdateAVRLED();
	DelayMs(30);
	println_I("Release AVR in reset");
}