Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Пока в прерывание попадете,
Вызывать в прерывании readSensor() вообще не хорошая идея да и вообще не инлайн функции… Это может занять офигенно большое время плюс фиг его знает, что там в этой фукнции еще вызывается.
void setup() {
TCCR2A |= (1 << WGM20)|(1 << WGM21); // Установка режима Fast PWM (WGM20 и WGM21)
TCCR2B |= (1 << CS21); // Установка предделителя на 8 (CS21)
TIMSK2 |= (1 << TOIE2)|(1 << OCIE2A); // Разрешение прерываний по переполнению (TOIE) и по совпадению (OCR2A)
OCR2A = 1; // Начальное значение по совпадению
sei();
}TCCR2A = 0b00000011; // waveform generation mode (fast PWM)
TCCR2B = 0b00000100; // prescaler (*100 => 64, ~970 Hz)
TIMSK2 = 0b00000011; // interrupts (0 => compare B; 1 => compare A; 1 => overflow)
OCR2A = 1; // compare
Чтение сенсора в прерывании наверное не самая лучшая идея ведь сенсор может быть тормознутым.
Arduino и прерывания таймера