Esempio n. 1
0
void
relay_off(void)
{
#if ! METERING_ENERGY_PERSISTENT
#if RELAY_POWER_SAVING
  DISABLE_RELAY_PWM();
  SET_RELAY_PWM(0x00);
#else
  PORTB &= ~(1 << PB3);
#endif

  relay_state = 0;
  relay_leds();
  metering_reset();
#endif
}
Esempio n. 2
0
void
relay_on(void)
{
#if ! METERING_ENERGY_PERSISTENT
  if (!relay_state)
    {
#if RELAY_POWER_SAVING
	  ENABLE_RELAY_PWM();
	  //set PWM to 100% duty cycle
      SET_RELAY_PWM(RELAY_PWM_START);
      //sleep RELAY_OPERATE_TIME
      _delay_ms(RELAY_OPERATE_TIME);
      //set PWM to 50% duty cycle
      SET_RELAY_PWM(RELAY_PWM_HOLD);
#else
      PORTB |= (1 << PB3);
#endif
      relay_state = 1;
      relay_leds();
      metering_reset();
    }
#endif
}
Esempio n. 3
0
void
metering_stop(void)
{
  DISABLE_METERING_INTERRUPT(); /* Disable external capture interrupt. */
  metering_reset();
}