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 }
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 }
void metering_stop(void) { DISABLE_METERING_INTERRUPT(); /* Disable external capture interrupt. */ metering_reset(); }