yoric 0 Вторник в 16:06 Опубликовано Вторник в 16:06 · Жалоба Хорошо, с этим разберусь. А вот как избегать ложных срабатываний в случае генерации прерываний? При программном опросе я просто несколько раз читал порт, причём игнорируя вход, который просто не должен работать в этом цикле (датчик другого цилиндра). А в случае с прерываниями всё равно будет оно генерироваться, хоть тресни. Понятно, что внутри прерывания придётся отсеивать ложный вызов, но как-то не очень это правильно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 82 Вторник в 16:46 Опубликовано Вторник в 16:46 (изменено) · Жалоба А быть может, STM32F030F4 или STM32F103C8 на плате BluePill ? Там есть независимый захват с разных входов Изменено Вторник в 16:47 пользователем EdgeAligned Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 201 Вторник в 17:06 Опубликовано Вторник в 17:06 · Жалоба 52 минуты назад, yoric сказал: как избегать ложных срабатываний в случае генерации прерываний? Можно так — в прерывании по защёлке блокируете (закорачиваете) этот вход (для этого на схеме уже есть резисторы) и разблокируете другой, затем прибавляете к CCPR угол, перенастраиваете модуль на компаратор, меняете флаги, далее идёт прерывание по компаратору, включаете нужный транзистор, прибавляете к CCPR нужную длину импульса затвора, меняете флаги, далее снова прерывание по компаратору, выключаете этот транзистор, перенастраиваете модуль на защёлку, она соответственно будет уже от второго входа, меняете флаги, выходите. Если же Вы имеете ввиду, что входные импульсы могут быть вообще в любой момент, то это решается ФАПЧ, т.е. в конце не перенастраиваете модуль на защёлку, а прибавляете к CCPR остаток полупериода и вычитаете интервал "окно ФАПЧ", по прерыванию перенастраиваете модуль на защёлку, т.е. пропускаете почти весь полупериод и лишь в конце начинаете ловить сигнал — если очередная измеренная длина полупериода выходит за пределы накопленного среднего, выбрасываете её, если нет, то добавляете её к среднему и постепенно уменьшаете окно до определённого минимума (это "режим захвата"), а если выбросы повторяются более N раз подряд, постепенно увеличиваете окно (это "режим поиска"), т.е. в любом случае сидеть в прерывании и устранять дребезг — плохая идея. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yoric 0 Вторник в 17:33 Опубликовано Вторник в 17:33 · Жалоба 21 минуту назад, EdgeAligned сказал: А быть может, STM32F030F4 или STM32F103C8 на плате BluePill ? Там есть независимый захват с разных входов Сейчас стоит задача утилизировать эти PIC. У меня три штуки готовых коммутаторов, и у народа есть такие же. 13 минут назад, Plain сказал: Можно так — в прерывании по защёлке блокируете (закорачиваете) этот вход (для этого на схеме уже есть резисторы) и ра............. Это неслабое усложнение получается, с переделкой схемы, которая у многих загерметизирована. 14 минут назад, Plain сказал: Если же Вы имеете ввиду, что входные импульсы могут быть вообще в любой момент, Импульсы помех могут быть в любой момент.. 15 минут назад, Plain сказал: сидеть в прерывании и устранять дребезг — плохая идея. И я про что. Вообще-то, программый скан вполне справляется, времени полно. Скан датчиков, по первому фронту строба пускается TMR1 для измерения периода (50-4.5мс), по второму фронту пускается TMR0 с динамическим вычисленным значением предделителя, между стробами вычисляются задержки, кои вычисления укладываются в 1.5мс. В симуляторе всё прекрасно работает, а на деле TMR1 стартует, а прерывание не вызывает. Во всяком случае до его запуска доходит. Проверял вставлением тестовой ПП зацикливания. Вычитал в инете, что симуляторы не обеспечивают корректность работы именно с прерываниями. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 201 23 часа назад Опубликовано 23 часа назад · Жалоба 14 часов назад, yoric сказал: усложнение получается, с переделкой схемы, которая у многих загерметизирована Про это надо было сразу сказать, что всё хуже некуда. В таком случае, есть вариант с модулем аналоговых компараторов, CIS=1, CM=010, Vref настроить на половину питания, TRISA закорачивать нерабочий вход — в прерывании от CMIF не сохранять контекст, а передёрнуть RB3, сбросить CMIF и выйти, т.е. сымитировать защёлку, далее по вышеописанному алгоритму ФАПЧ, т.е. подавлять дребезг и помехи узкополосным фильтром. Теоретически, дребезг здесь можно было бы без усилий обрабатывать приёмом на RX, поскольку UART безработный, т.е. в прерывании, в RCREG была бы запись всего дребезга в подробностях — но Вы ведь говорите, что там всё в помехах, хотя не понятно, откуда им взяться, кроме как плохие соединители. И кстати, зачем здесь вообще эта возня с двумя входами, одного ведь достаточно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yoric 0 20 часов назад Опубликовано 20 часов назад · Жалоба 2 часа назад, Plain сказал: есть вариант с модулем аналоговых компараторов, CIS=1, CM=010, Vref настроить на половину питания, TRISA закорачивать нерабочий вход — в прерывании от CMIF не сохранять контекст, а передёрнуть RB3, сбросить CMIF и выйти, т.е. сымитировать защёлку, далее по вышеописанному алгоритму ФАПЧ, т.е. подавлять дребезг и помехи узкополосным фильтром. Ух ты как повезло с распределением входов)) 2 часа назад, Plain сказал: там всё в помехах, хотя не понятно, откуда им взяться, кроме как плохие соединители. Искра на одном цилиндре приходится где-то на полупериоде другого, импульсный реле-регулятор, стартер - да мало ли чего можно придумать. 2 часа назад, Plain сказал: кстати, зачем здесь вообще эта возня с двумя входами, одного ведь достаточно. По двум удобнее, и надёжнее, при выходе из строя одного можно по другому работать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 201 20 часов назад Опубликовано 20 часов назад · Жалоба 4 минуты назад, yoric сказал: при выходе из строя одного можно по другому работать Так у Вас сейчас нет такой отбраковки, а вот ФАПЧ не заметит исчезновение одной из фаз, практически ничего дополнительно делать не нужно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться