#arduino #interrupt #arduino-uno #arduino-ide
Вопрос:
У меня есть игра в пинг-понг, и я пытаюсь добавить к ней 60-секундный таймер. Таким образом, если раунд не будет завершен в течение 60 секунд, он завершится автоматически.
Цель состоит в том, чтобы считать без использования миллиса()
Я пытался реализовать это, но, похоже, это не сработало.
Поэтому я попытался распечатать секунды на последовательном мониторе, и он просто постоянно показывает 0000000000000000000000000
В чем здесь проблема?
volatile uint16_t counter = 0;
volatile uint16_t seconds = 0;
void setup()
{
//timer1 for overflow interrupt
noInterrupts();
TCCR1A = 0; //initialize timer1
TCCR1B = 0;
TCCR1B |= 0b00000100; //256 prescaler
TIMSK1 |= 0b00000001; //enable overflow interrupt
interrupts();
}
ISR(TIMER1_OVF_vect) //timer overflow ISR: update counter
{
counter ;
if (counter == 62500)
{
counter = 0;
seconds ;
}
}
void loop()
{
Serial.print(seconds);
game = update();
lcd.clear();
render();
Я включил части кода, которые непосредственно связаны с проблемой.
Помощь была бы очень признательна!