Перейти к содержанию
    

pic16f627 проблемы со стартом TMR0

Хорошо, с этим разберусь. А вот как избегать ложных срабатываний в случае генерации прерываний? При программном опросе я просто несколько раз читал порт, причём игнорируя вход, который просто не должен работать в этом цикле (датчик другого цилиндра). А в случае с прерываниями всё равно будет оно генерироваться, хоть тресни. Понятно, что внутри прерывания придётся отсеивать ложный вызов, но как-то не очень это правильно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А быть может, STM32F030F4 или STM32F103C8 на плате BluePill ? Там есть независимый захват с разных входов

Изменено пользователем EdgeAligned

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

52 минуты назад, yoric сказал:

как избегать ложных срабатываний в случае генерации прерываний?

Можно так — в прерывании по защёлке блокируете (закорачиваете) этот вход (для этого на схеме уже есть резисторы) и разблокируете другой, затем прибавляете к CCPR угол, перенастраиваете модуль на компаратор, меняете флаги, далее идёт прерывание по компаратору, включаете нужный транзистор, прибавляете к CCPR нужную длину импульса затвора, меняете флаги, далее снова прерывание по компаратору, выключаете этот транзистор, перенастраиваете модуль на защёлку, она соответственно будет уже от второго входа, меняете флаги, выходите.

Если же Вы имеете ввиду, что входные импульсы могут быть вообще в любой момент, то это решается ФАПЧ, т.е. в конце не перенастраиваете модуль на защёлку, а прибавляете к CCPR остаток полупериода и вычитаете интервал "окно ФАПЧ", по прерыванию перенастраиваете модуль на защёлку, т.е. пропускаете почти весь полупериод и лишь в конце начинаете ловить сигнал — если очередная измеренная длина полупериода выходит за пределы накопленного среднего, выбрасываете её, если нет, то добавляете её к среднему и постепенно уменьшаете окно до определённого минимума (это "режим захвата"), а если выбросы повторяются более N раз подряд, постепенно увеличиваете окно (это "режим поиска"), т.е. в любом случае сидеть в прерывании и устранять дребезг — плохая идея.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 минуту назад, EdgeAligned сказал:

А быть может, STM32F030F4 или STM32F103C8 на плате BluePill ? Там есть независимый захват с разных входов

Сейчас стоит задача утилизировать эти PIC. У меня три штуки готовых коммутаторов, и у народа есть такие же.

13 минут назад, Plain сказал:

Можно так — в прерывании по защёлке блокируете (закорачиваете) этот вход (для этого на схеме уже есть резисторы) и ра.............

Это неслабое усложнение получается, с переделкой схемы, которая у многих загерметизирована.

14 минут назад, Plain сказал:

Если же Вы имеете ввиду, что входные импульсы могут быть вообще в любой момент,

Импульсы помех могут быть в любой момент..

15 минут назад, Plain сказал:

сидеть в прерывании и устранять дребезг — плохая идея.

И я про что.

Вообще-то, программый скан вполне справляется, времени полно.

Скан датчиков, по первому фронту строба пускается TMR1 для измерения периода (50-4.5мс), по второму фронту пускается TMR0 с динамическим вычисленным значением предделителя, между стробами вычисляются задержки, кои вычисления укладываются в 1.5мс. В симуляторе всё прекрасно работает, а на деле TMR1 стартует, а прерывание не вызывает. Во всяком случае до его запуска доходит. Проверял вставлением тестовой ПП зацикливания. Вычитал в инете, что симуляторы не обеспечивают корректность работы именно с прерываниями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 часов назад, yoric сказал:

усложнение получается, с переделкой схемы, которая у многих загерметизирована

Про это надо было сразу сказать, что всё хуже некуда.

В таком случае, есть вариант с модулем аналоговых компараторов, CIS=1, CM=010, Vref настроить на половину питания, TRISA закорачивать нерабочий вход — в прерывании от CMIF не сохранять контекст, а передёрнуть RB3, сбросить CMIF и выйти, т.е. сымитировать защёлку, далее по вышеописанному алгоритму ФАПЧ, т.е. подавлять дребезг и помехи узкополосным фильтром.

Теоретически, дребезг здесь можно было бы без усилий обрабатывать приёмом на RX, поскольку UART безработный, т.е. в прерывании, в RCREG была бы запись всего дребезга в подробностях — но Вы ведь говорите, что там всё в помехах, хотя не понятно, откуда им взяться, кроме как плохие соединители.

И кстати, зачем здесь вообще эта возня с двумя входами, одного ведь достаточно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 часа назад, Plain сказал:

есть вариант с модулем аналоговых компараторов, CIS=1, CM=010, Vref настроить на половину питания, TRISA закорачивать нерабочий вход — в прерывании от CMIF не сохранять контекст, а передёрнуть RB3, сбросить CMIF и выйти, т.е. сымитировать защёлку, далее по вышеописанному алгоритму ФАПЧ, т.е. подавлять дребезг и помехи узкополосным фильтром.

Ух ты как повезло с распределением входов))

 

2 часа назад, Plain сказал:

там всё в помехах, хотя не понятно, откуда им взяться, кроме как плохие соединители.

Искра на одном цилиндре приходится где-то на полупериоде другого, импульсный реле-регулятор, стартер - да мало ли чего можно придумать.

 

2 часа назад, Plain сказал:

кстати, зачем здесь вообще эта возня с двумя входами, одного ведь достаточно.

По двум удобнее, и надёжнее, при выходе из строя одного можно по другому работать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, yoric сказал:

при выходе из строя одного можно по другому работать

Так у Вас сейчас нет такой отбраковки, а вот ФАПЧ не заметит исчезновение одной из фаз, практически ничего дополнительно делать не нужно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...