volatile bool led_state = false;
void hal_system_begin(void){
// Configurar Timer-2 no modo CTC (Clear Timer on Compare Match)
TCCR2A = 0;
TCCR2B = 0;
TCNT2 = 0;
TIMSK2 = 0;
// Definir OCR2A para 249
OCR2A = 124;
// Configurar o modo CTC e o prescaler para 128
TCCR2A |= (1 << WGM21);
TCCR2B |= (1 << CS22) | (1 << CS20);
// Habilitar a interrupção por comparação com OCR2A
TIMSK2 |= (1 << OCIE2A);
sei();
}
ISR(TIMER2_COMPA_vect){
static uint16_t counter = 0;
counter++;
if (counter == 1000) {
counter = 0;
led_state = !led_state;
}
}
void setup() {
pinMode(13, OUTPUT);
hal_system_begin();
}
void loop() {
cli();
digitalWrite(13, led_state);
sei();
delay(10);
}