Вопрос по программированию для Time Arduino
Можете ли вы запрограммировать скетч так, чтобы, если время находится в диапазоне от 1 минуты до 10 минут, он сам сбрасывался? Сброс я нашел уже, это если что я не знаю.
@Xavier de Aguirre, 👍-1
Обсуждение1 ответ
▲ 2
Вы можете использовать прерывания таймера. Например:
#define F_CPU 16000000UL
#include <avr/delay.h>
#include <avr/io.h>
#include <string.h>
#include <avr/interrupt.h>
...
ISR(TIMER1_COMPA_vect)
{
// делать что-то каждую секунду, когда вызывается прерывание.
}
void setup()
{
/*следующий код установит регистр таймера для генерации прерывания
при достижении 15624, при тактовой частоте 16 МГц и предделителе 1024. Это означает, что каждую секунду генерируется прерывание
*/
cli(); // отключаем глобальные прерывания
TCCR1A = 0; // установить весь регистр TCCR1A в 0
TCCR1B = 0; // то же самое для TCCR1B
// установить сравнение регистра совпадения с желаемым счетчиком таймера:
OCR1A = 15624;
// включить режим CTC:
TCCR1B |= (1 << WGM12);
// Установите биты CS10 и CS12 для предделителя 1024:
TCCR1B |= (1 << CS10);
TCCR1B |= (1 << CS12);
// включить прерывание сравнения таймера:
TIMSK1 |= (1 << OCIE1A);
sei(); // разрешить глобальные прерывания
}
Код работает на Arduino Uno. Вы должны рассчитать значение OCR1A для вашей частоты.
,
@23ars
Смотрите также:
- Почему мои часы реального времени показывают неверное время с моего ПК?
- Несколько неблокирующих таймеров обратного отсчета?
- Получение кода FFT arduino для работы более 9 часов с использованием micros()
- Как повторить код
- Рассчитать часовой пояс по координатам GPS
- Как справиться с rollover millis()?
- Печать string and integer LCD
- Как получить текущее время и дату в Arduino без внешнего источника?
Вы пытаетесь перезагрузить плату каждую минуту? Потому что, когда он увидит, что время чуть больше 1 минуты, он сбросится. Это то, что вы имели ввиду?, @bpinhosilva
Вы боретесь с операторами if()?, @benathon