void pressure_update (void) { if (pressure.wait) { pressure.wait--; } else { switch (pressure.state) { case PRESSURE_INITIAL: if (pressure.low) { /* Open circuit. */ IO_SET (OUTPUT_PNEUM_OPEN); pressure.state++; pressure.wait = PRESSURE_OPEN_WAIT; } break; case PRESSURE_IDLE: if (pressure_get () < pressure.low) { /* Start pump. */ mimot_motor_output_set (1, 0x3ff); pressure.state++; pressure.wait = PRESSURE_START_WAIT; } else pressure.wait = PRESSURE_INTERVAL; break; case PRESSURE_STARTING: /* Started, close circuit. */ IO_CLR (OUTPUT_PNEUM_OPEN); pressure.state++; break; case PRESSURE_PUMPING: /* Pump until high. */ if (pressure_get () > pressure.high) { /* Done. Stop. Open circuit. */ mimot_motor_free (1, 0); IO_SET (OUTPUT_PNEUM_OPEN); pressure.state = PRESSURE_IDLE; pressure.wait = PRESSURE_REST; } else pressure.wait = PRESSURE_INTERVAL; break; } } }
void StopPWM(){ CCP2CON=0x00; T1OSCEN=OFF; IO_CLR(PWMport,PWMpin); }