コード例 #1
0
ファイル: pressure.c プロジェクト: TLoebner/apbteam
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;
	  }
      }
}
コード例 #2
0
ファイル: PWM.c プロジェクト: juajack/Invernadero
void StopPWM(){
    CCP2CON=0x00;
    T1OSCEN=OFF;
    IO_CLR(PWMport,PWMpin);
}