Files
wheel_rfm69_counter/avr_code/interrupts.c
T
2026-08-31 22:43:51 -04:00

55 lines
967 B
C

#include "interrupts.h"
void init_pins() {
// Set reed switch interrupt pin
SET_PIN_IN(DDRD, DDD3);
SET_PIN_LOW(PORTD, PD3);
}
void set_up_reed_interrupt() {
// Falling edge interrupt
EICRA |= (1 << ISC11);
EICRA &= ~(1 << ISC10);
// Enable INT1 interrupt
EIMSK |= (1 << INT1);
}
void set_up_minute_interrupt() {
EICRA |= (1 << ISC01);
EICRA &= ~(1 << ISC00);
// Enable INT1 interrupt
EIMSK |= (1 << INT0);
}
void wdt_isr_enable() {
cli();
wdt_reset();
WDTCSR |= (1 << WDCE) | (1 << WDE);
WDTCSR = (1 << WDP2) | (1 << WDP0); // WDP[3:0] = 0b101 (2 seconds)
WDTCSR |= (1 << WDIE); // Enable WDT Interrupt mode
sei();
}
void wdt_isr_disable() {
cli();
WDTCSR |= (1 << WDCE) | (1 << WDE);
WDTCSR = 0x00;
sei();
}
//
//void set_debounce_timer_interrupt() {
// TCCR0A = 0;
// TCCR0B = (1 << CS01) | (1 << CS00);
// TIMSK0 = (1 << TOIE0);
// TCNT0 = 0;
//}