ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
23 апреля
885984 Топик полностью
avrdude (02.12.2018 22:39, просмотров: 1) ответил Nikolay_Po на Перенесите мигалку из прерывания переполнения в прерывание одного из фронтов. И проверьте, как срабатывает.
перенес мигалку из оверфлоу в капчуре двумя способами, но к сожалению не срабатывет, на осциле ничего не вижу ////прерывание захвата ICP1 ISR(TIMER1_CAPT_vect) { switch(zamer_T) { case 0: rising_1 = ICR1; // Запоминаем значение счётчика OVF_counter = 0; // Обнуляем количество переполнений счётчика zamer_T = 1; // Переходим к следующему вычислению RELAY_PORT |= 1 << RELAY_PIN; //relay on /////////////////////////////////////////////////////////////////////// break; case 1: rising_2 = ICR1; // Запоминаем значение счётчика // Приводим все переменные к одному типу и вычисляем период импульса T = (unsigned long)rising_2 - (unsigned long)rising_1 + ((unsigned long)OVF_counter * 65536UL); zamer_T = 0; zamer_1 = 2; // Переходим к следующему вычислению периода и частоты RELAY_PORT &= ~(1 << RELAY_PIN); //relay off //////////////////////////////////////////////////////////////////////// break; } } ////прерывание захвата ICP1 ISR(TIMER1_CAPT_vect) { switch(zamer_T) { case 0: rising_1 = ICR1; // Запоминаем значение счётчика OVF_counter = 0; // Обнуляем количество переполнений счётчика zamer_T = 1; // Переходим к следующему вычислению RELAY_PORT &= ~(1 << RELAY_PIN); //relay off //////////////////////////////////////////////////////////////////////// RELAY_PORT |= 1 << RELAY_PIN; //relay on /////////////////////////////////////////////////////////////////////// RELAY_PORT &= ~(1 << RELAY_PIN); //relay off //////////////////////////////////////////////////////////////////////// break; case 1: rising_2 = ICR1; // Запоминаем значение счётчика // Приводим все переменные к одному типу и вычисляем период импульса T = (unsigned long)rising_2 - (unsigned long)rising_1 + ((unsigned long)OVF_counter * 65536UL); zamer_T = 0; zamer_1 = 2; // Переходим к следующему вычислению периода и частоты RELAY_PORT &= ~(1 << RELAY_PIN); //relay off //////////////////////////////////////////////////////////////////////// break; } }