Точная задержка между двумя короткими импульсами

я тут недавно баловался, продолжение темы
И снова таймеры - импульс по счетчику - Песочница. Раздел для новичков - Arduino.ru
столкнулся с аналогичным поведением

	//TCCR1A |= 1 << COM1A1; // 10 - сброс вывода OC1A (PB1 pin 9 Nano) при совпадении с A // почему то не работает, отключает пин сразу при запуске таймера
	TCCR1A |= 1 << COM1A0; // 01 - изменение состояния вывода OC1A (PB1 pin 9 Nano) на противоположное при совпадении с A

не знаю как объяснить, пришлось сделать переключение состояние пина

/*
 Name:		NanoTimers01.ino
 Created:	09.11.2022 13:03:46
 Author:	Andrey
*/

static constexpr unsigned char pin_input_step = 5; // T1 PD5 pin 5 Nano
static constexpr unsigned char pin_mixer = 9; // OC1A PB1 pin 9 Nano

/*ISR(TIMER1_COMPA_vect) { // прерывание Таймер1 по совпадению
	digitalWrite(pin_mixer, !digitalRead(pin_mixer));
}*/

/*(target time) = (timer resolution) * (# timer counts + 1)
(# timer counts + 1) = (target time) / (timer resolution) -> 16000000/1024
(# timer counts + 1) = (1 s) / (6.4e-5 s)
(# timer counts + 1) = 15625
(# timer counts) = 15625 - 1 = 15624*/

/*void startTimer1comp1sec(void) { // ежесекундный вызов прерывания по совпадению счетчика
	cli(); // отключить глобальные прерывания
	TCCR1A = 0b00000000; // очищаем все настройки таймера
	TCCR1B = 0b00000000; // очищаем все настройки таймера
	TCCR1B |= 1 << CS12; // clk_io/1024 (делитель частоты)
	TCCR1B |= 1 << CS10; // clk_io/1024 (делитель частоты)
	TIMSK1 |= (1 << TOIE1); // включить прерывание Timer1 overflow
	TCCR1B |= (1 << WGM12); // включение в CTC режим
	TIMSK1 |= (1 << OCIE1A);  // включение прерываний по совпадению
	OCR1A = 15624; // установка регистра совпадения
	sei();  // включить глобальные прерывания
}*/

/*void startTimer1compext(void) { // вызов прерывания по совпадению счетчика от внешних импульсов
	cli(); // отключить глобальные прерывания
	TCCR1A = 0b00000000; // очищаем все настройки таймера
	TCCR1B = 0b00000000; // очищаем все настройки таймера
	TCCR1B |= 1 << CS12; // 110 - внешний источник на выводе T1 (T1 PD5 pin 5 Nano) по спаду сигнала
	TCCR1B |= 1 << CS11; // 110 - внешний источник на выводе T1 (11 ножка) по спаду сигнала
	TIMSK1 |= (1 << TOIE1); // включить прерывание Timer1 overflow
	TCCR1B |= (1 << WGM12); // включение в CTC режим // сброс при совпадении
	TIMSK1 |= (1 << OCIE1A);  // включение прерываний по совпадению
	OCR1A = 5; // установка регистра совпадения
	sei();  // включить глобальные прерывания
}*/

/*void startTimer1compOutOCR1Atrig(void) { // изменение полярности выходного пина по совпадению счетчика от внешних импульсов
	cli(); // отключить глобальные прерывания
	TCCR1A = 0b00000000; // очищаем все настройки таймера
	TCCR1B = 0b00000000; // очищаем все настройки таймера
	TCCR1A |= 1 << COM1A0; // 01 - изменение состояния вывода OC1A (PB1 pin 9 Nano) на противоположное при совпадении с A
	TCCR1B |= 1 << CS12; // 110 - внешний источник на выводе T1 (T1 PD5 pin 5 Nano) по спаду сигнала
	TCCR1B |= 1 << CS11; // 110 - внешний источник на выводе T1 (11 ножка) по спаду сигнала
	TCCR1B |= (1 << WGM12); // включение в CTC режим // сброс при совпадении
	OCR1A = 5; // установка регистра совпадения
	sei();  // включить глобальные прерывания
}*/

void startTimer1singleONcomp(void) { // разовое включение выходного пина по совпадению счетчика входных импульсов
	cli(); // отключить глобальные прерывания
	TCCR1A = 0x00; // очищаем все настройки таймера
	TCCR1B = 0x00; // очищаем все настройки таймера
	TCNT1 = (unsigned short)0; // сброс счетчика
	TCCR1A |= 1 << COM1A1; // 11 - включение вывода OC1A (PB1 pin 9 Nano) при совпадении с A
	TCCR1A |= 1 << COM1A0; // 11 - включение вывода OC1A (PB1 pin 9 Nano) при совпадении с A
	TCCR1B |= 1 << CS12; // 110 - внешний источник на выводе T1 (T1 PD5 pin 5 Nano) по спаду сигнала
	TCCR1B |= 1 << CS11; // 110 - внешний источник на выводе T1 (11 ножка) по спаду сигнала
	TCCR1B |= (1 << WGM12); // включение в CTC режим // сброс при совпадении
	OCR1A = (unsigned short)10; // установка регистра совпадения
	sei();  // включить глобальные прерывания
}

void startTimer1pin1secOFF(void) { // отключение пина через секунду
	cli(); // отключить глобальные прерывания
	TCCR1A = 0x00; // очищаем все настройки таймера
	TCCR1B = 0x00; // очищаем все настройки таймера
	TCNT1 = (unsigned short)0; // сброс счетчика
	//TCCR1A |= 1 << COM1A1; // 10 - сброс вывода OC1A (PB1 pin 9 Nano) при совпадении с A // почему то не работает, отключает пин сразу при запуске таймера
	TCCR1A |= 1 << COM1A0; // 01 - изменение состояния вывода OC1A (PB1 pin 9 Nano) на противоположное при совпадении с A
	TCCR1B |= 1 << CS12; // 101 - clk_io/1024 (делитель частоты)
	TCCR1B |= 1 << CS10; // 101 - clk_io/1024 (делитель частоты)
	TCCR1B |= (1 << WGM12); // включение в CTC режим // сброс при совпадении
	OCR1A = (unsigned short)15624; // установка регистра совпадения
	sei();  // включить глобальные прерывания
}

void initPins(void) {
	pinMode(LED_BUILTIN, OUTPUT);
	digitalWrite(LED_BUILTIN, LOW);
	pinMode(pin_input_step, INPUT_PULLUP);
	pinMode(pin_mixer, OUTPUT);
	digitalWrite(pin_mixer, LOW);
}

// the setup function runs once when you press reset or power the board
void setup() {
	initPins();
	//startTimer1comp1sec();
	//startTimer1compext();
	//startTimer1compOutOCR1Atrig();
	startTimer1singleONcomp();
	//startTimer1pin1secOFF();
}

// the loop function runs over and over again until power down or reset
void loop() {
	static unsigned char mixerState = 0;
	if (!(mixerState)) {
		if (digitalRead(pin_mixer)) {
			startTimer1pin1secOFF();
			mixerState = 1;
		}
	} else if (!digitalRead(pin_mixer)) {
		mixerState = 0;
		startTimer1singleONcomp();
	}
}