ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
4 мая
1514462 Топик полностью
Бoмж (26.04.2025 15:10, просмотров: 158) ответил Бoмж на Чепуха, при одновременном (синхронном) поступлении двух сигналов в таком случае будет считать только первый счётчик и вот почему:
Я предложил бы сделать так: 
void TIMER2_IRQHandler(void)
{
static uint32_t tm2_cr0 = 0;
static uint32_t tm2_cr1 = 0;
uint8_t ir = LPC_TIM2->IR;

// Обработка канала 0 (CR0)
if (ir & 0b 0001 0000)
{
uint32_t cr0 = LPC_TIM2->CR0;

if ((cr0 - tm2_cr0) >= FIN_MIN_PERIOD)
{
tm2_cr0 = cr0;
vars.fcntr[0]++;
}
}

// Обработка канала 1 (CR1)
if (ir & 0b 0010 0000)
{
uint32_t cr1 = LPC_TIM2->CR1;

if ((cr1 - tm2_cr1) >= FIN_MIN_PERIOD)
{
tm2_cr1 = cr1;
vars.fcntr[1]++;
}
}

LPC_TIM2->IR = ir; // Очистка флага
}
memento mori