Код: Выделить всё
void TIM6_DAC_IRQHandler(void)
{
/* USER CODE BEGIN TIM6_DAC_IRQn 0 */
/* USER CODE END TIM6_DAC_IRQn 0 */
HAL_TIM_IRQHandler(&htim6);
/* USER CODE BEGIN TIM6_DAC_IRQn 1 */
static uint16_t tim6_countersec=3293; //счетчик секунд
static uint32_t tim6_counterbit=0; //счетчик загрузки bit
/********************определяем пилот-тон***********************************************************/
if (TapeInMode>=TAPE_IN_STOP){
//tim6_counterbit=0; //счетчик загрузки bit
return;}
if (TapeInMode==TAPE_IN_LEAD){
TIM6->ARR = 2168*2;//начальное значение таймера
if (tim6_countersec > 0) {
tim6_countersec--;
if (HAL_GPIO_ReadPin(T_IN_GPIO_Port, T_IN_Pin) == GPIO_PIN_SET){
tim6_counterbit++;
};
}
else{
#if Debug_TIM
SEGGER_RTT_printf(0,"\nTAPE_IN_LEAD END tim6_counterbit=%u\n", tim6_counterbit);
#endif
tim6_countersec = 3223;//Время воспроизведения пилот тона 2 сек.
tim6_counterbit=0; //счетчик загрузки bit
TapeInMode=TAPE_IN_STOP;
return;}}
/* USER CODE END TIM6_DAC_IRQn 1 */
}
Добавлено after 3 minutes 53 seconds:Попробовал сделать в обработчике прерываний для TIM6 подсчет импульсов пилот-тона.
Получается в условии 2 сек крутится проверка на установку PIN_SET в единицу и счетчик.
Протестировал получается 1614..1610 когда как. Я так понимаю это 3223/2 в точности должно быть 1646
Как выявить синхро сигналы?
P.S.
Так как пока нет обвязки для входного сигнала со звуковой карты я запустил PWM (800Гц %50) от логического анализатора.
Хочу продолжить тестирование подав сигнал от ПК через звуковую карту (ПК будет воспроизводить waw с записью выгрузки, я перекомпилировал tap --> waw, нет железа под рукой (zx-spectrum, все в эмуляции

))