Ejemplo n.º 1
0
int main(int argc, char** argv) {
        //DDPCONbits.JTAGEN = 0; // Disable JTAG
        mPORTGSetPinsDigitalIn(0x00FF);
	mPORTBSetPinsAnalogIn(0x00FF);             //Enable all analog

	SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE);
	CloseADC10();
	SetChanADC10(INITCH);
	OpenADC10(CONFIG1, CONFIG2, CONFIG3, CFGPORT, CFGSCAN);
	ConfigIntADC10(CFGINT);
	EnableADC10();

   	//Initialize the DB_UTILS IO channel
	DBINIT();

	// Display the introduction
	DBPRINTF("Welcome to the Analog Input Test.\n");
	DBPRINTF("The build date and time is (" __DATE__ "," __TIME__ ")\n");

	while (1){
		 //Get damper value from PIC analog input
		int i = 0;
		for(i;i<1;i++){
			int analog = ReadADC10(i);
			DBPRINTF("Hammer %d = %d", i, analog);
			DBPRINTF("\n");
		}
                int digital = mPORTGReadBits(BIT_0);
                DBPRINTF("digital: %X \n \n", digital );
	}
	return 0;
}
Ejemplo n.º 2
0
// Perform homing cycle to locate and set machine zero. Only '$H' executes this command.
// NOTE: There should be no motions in the buffer and Grbl must be in an idle state before
// executing the homing cycle. This prevents incorrect buffered plans after homing.
void MotionGoHome(void)
{
    plan_init();
    uint16_t limitStatus;
    uint16_t stepCount;
  sys.state = STATE_HOMING; // Set system state variable
 // LIMIT_PCMSK &= ~LIMIT_MASK; // Disable hard limits pin change register for cycle duration

    xLimitDetected = FALSE;
    yLimitDetected = FALSE;

    BSP_SetStepSize(X_AXIS, QUARTER);
    BSP_SetStepSize(Y_AXIS, QUARTER);
    BSP_SetStepSize(Z_AXIS, QUARTER);
    settings.steps_per_mm[X_AXIS] = X_STEPS_MM(QUARTER_STEP);
    settings.steps_per_mm[Y_AXIS] = Y_STEPS_MM(QUARTER_STEP);
    settings.steps_per_mm[Z_AXIS] = Z_STEPS_MM(QUARTER_STEP);
    // Find out if X or Y axis are at limit
    limitStatus = mPORTCReadBits(xLimitInput.pin||yLimitInput.pin);

    if(limitStatus)
    {
        if(limitStatus & xLimitInput.pin)     // If Xat Limit
        {
           stepCount = 0;
           BSP_Timer3Start(100);
           OpenOC2(XS_PWM_ENA,  (ReadPeriod3()>>1), ReadPeriod3()>>1);
           BSP_AxisEnable(X_AXIS, NEGATIVE);
           while((mPORTCReadBits(xLimitInput.pin)))
           {
            stepCount++;
            steps_X = 0x1;
            if(stepCount >= 20)
                mPORTGToggleBits(xAxis.directionPin.pin);
           }
           BSP_AxisDisable(X_AXIS);
           if(mPORTGReadBits(xAxis.directionPin.pin) == POSITIVE)
               gcode.position[X_AXIS] = 215.000;
           else
               gcode.position[X_AXIS] =0;
        }
        if(limitStatus & yLimitInput.pin)     // If Xat Limit
        {
           stepCount = 0;
           BSP_Timer2Start(100);
           OpenOC1(XS_PWM_ENA,  (ReadPeriod2()>>1), ReadPeriod2()>>1);
           BSP_AxisEnable(Y_AXIS, NEGATIVE);
           while((mPORTCReadBits(yLimitInput.pin)))
           {
            stepCount++;
            steps_Y = 0x1;
            if(stepCount >= 20)
                mPORTEToggleBits(yAxis.directionPin.pin);
           }
           if(mPORTEReadBits(xAxis.directionPin.pin) == POSITIVE)
               gcode.position[Y_AXIS] = 215.000;
           else
               gcode.position[Y_AXIS] =0;
        }
Ejemplo n.º 3
0
void sampleButtons()
{
	//BTN1
	samples[0] <<= 1;
	if(mPORTGReadBits(BIT_6))
		samples[0] |= 0x01;
	
	//BTN2
	samples[1] <<= 1;
	if(mPORTGReadBits(BIT_7))
		samples[1] |= 0x01;

	//BTN3	
	samples[2] <<= 1;
	if(mPORTDReadBits(BIT_13))
		samples[2] |= 0x01;
	
	//BTN_ROTARY		bit 4
	samples[3] <<= 1;
	if(mPORTFReadBits(BIT_4))
		samples[3] |= 0x01;
}	
void __ISR(_TIMER_3_VECTOR, ipl2) _InterruptHandler_TMR3(void)
{

    // if(current_block->direction_bits[Y_AXIS])
    //   PORTSetBits(xAxis.directionPin.port, xAxis.directionPin.pin);
    // else
    //     PORTClearBits(yAxis.directionPin.port, yAxis.directionPin.pin);
    if(steps_X)
    {
        if(!(mPORTGReadBits(xAxis.enablePin.pin)))
            steps_X--;
    }
    else if (current_block != Null)
    {
        if(current_block->steps_x)
        {
            if(!(mPORTGReadBits(xAxis.enablePin.pin)))
                current_block->steps_x--;
        }
        else
        {
            //CloseOC2();
            BSP_AxisDisable(X_AXIS);
            BSP_Timer3Stop();
        }
    }
    else
    {
        //CloseOC2();
        BSP_AxisDisable(X_AXIS);
        BSP_Timer3Stop();
    }
     
    // clear the interrupt flag
    mT3ClearIntFlag();
}