|
-12 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 145
|
|
PIC: Смена приоритетов прерываний на лету11.02.2020, 22:22. Показов 2658. Ответов 35
Метки нет (Все метки)
Добрый день.
Вопрос ни столько к PIC-ам, а так, к "общей теории программируемости" (то-бишь к алгоритмам), не стоит расхваливать какой-либо "выдающийся" камень. Дано: Два датчика, находящихся например на концах эл.двигателей (типа "холлы", рассказывают нам про обороты обеих моторов). Оба датчика подключены к камню, оба обслуживаются в прерываниях. Приоритет какого-либо прерывания - НЕочевиден (оба важны). Рано или поздно, один датчик "в аккурат" почти догонит второй. При этом его прерывание окажется "в тени" другого. Такое прерывание нужно "пометить" как испорченное, его данные не верны. В общем-то ничего страшного, разок-другой можно и пропустить такое прерывание, воспользоваться предыдующим значением. Но вот количество этих "затенений" может быть ...дцать (а может и ...дсот раз), и теоретически оставаться бесконечно долго (ну вдруг моторы "зависли" на одинаковых оборотах), а это уже "Косяк" ! Что приходит на ум: 1). По простому: Запускать прерывания по очереди. Но тогда придётся дожидаться некоторое время окончания запущенного прерывания. 2). По сложному: Запускать оба прерывания. Если какое-то окажется некоторое кол-во раз подряд "испорченным" (ведём такой счётчик), то вырубать "самое счасливое" прерывание, пока не получим свежие данные от нужного INT-а. Есть у кого какие наработки на данную тему ? Заранее спс…
0
|
|
| 11.02.2020, 22:22 | |
|
Ответы с готовыми решениями:
35
Изменение приоритетов прерываний в Atmega328p PIC: Точное задание интервала прерываний Смена приоритетов процессов |
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 14.02.2020, 12:21 | ||
.
0
|
||
|
-12 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 145
|
||||||
| 14.02.2020, 13:22 [ТС] | ||||||
Да и трогать её нельзя (прямым текстом задано). Даже прошивть "снаружи" прибамбас нельзя (а то вдруг "умный" тракторист попадётся, прошьёт ещё "под себя").
0
|
||||||
|
-12 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 145
|
|
| 17.02.2020, 09:40 [ТС] | |
|
Интересно, а можно программно вызвать захват на CCP ?
Не прибегая к импульсу на выводе GPIO (хотя и такое не мешает остальной схеме). (Камень 12F683, если что)
0
|
|
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||
| 17.02.2020, 21:29 | ||
|
В итоге вы можете подавать "сигнал извне".
0
|
||
|
-12 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 145
|
||
| 18.02.2020, 06:45 [ТС] | ||
Свободных ног нет, есть только "долгие" ноги (входы), например "Зажигание", "Сброс". Вот таку ногу и можно "через" резистор. (А ваще неприятно, что нельзя "программный Каптур" устроить ...)
0
|
||
| 18.02.2020, 11:38 | |
|
0
|
|
|
-12 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 145
|
||
| 18.02.2020, 12:08 [ТС] | ||
2). Зачем ??? Для Программного Каптура нужны 2-е ноги ??? 3). Что, есть восьминогий с PWM-ом и двумя CCP-ами ?
0
|
||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 18.02.2020, 13:45 | |
|
0
|
|
|
-12 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 145
|
||
| 18.02.2020, 14:37 [ТС] | ||
bcf GPIO2, 0 для обеих датчиков (да можно и больше двух)
0
|
||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
||||
| 18.02.2020, 15:13 | ||||
|
Не по теме: с трудом понимаю смысл текста. Давайте или перейдем на английский - тогда термины станут применимыми. ну просто если вам надо ловить "количество" сработок счетчика, пытаясь программно повлиять на прерывание - вы можете сокращать на единицу верхний/нижный предел счета (смотря куда считает счетчик). Либо просто наращивать внутренний программный счетчик и прибавлять его значение к значению счетчика в момент его замера (чтения).
0
|
||||
|
-12 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 145
|
||||
| 18.02.2020, 15:57 [ТС] | ||||
(Конечно-же желательно с макс. точностью).
мне достаточно одного. И от него (одного) мне нужны моментальные значения, тогда, когда мне это надо. --- Это всё прекрасно работает на "доисторическом" пике, это всё уже стоит в "подопытном" тазике, это не глючит/не тупит и т.д (электронный спидометр, это ладно, но тазик с суточными моточасами, однако...). Просто мне добавили проблемму: Чертовски капризный ДРТ, с которого ещё и импульсы инкрементить надо. Плюс к этому сделать прибамбас который будет "на все случаи" жизни (все заявленные датчики должен обслуживать), пока к нему не прикрутят соответствующее табло - это "никакой" прибор. Дальше его надо прошить под конкретный шильдик (отличается только константами), и последний "регулировщик" должен туда "вшить" поправочную таблицу. --- Во мляха/буха, и вправду есть: PIC16F183xx !!!
0
|
||||
|
-12 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 145
|
|
| 20.02.2020, 18:51 [ТС] | |
|
Интересно, а если даже и два отдельных CCP будут работать.
Они всё равно будут один и тот же таймер (TMR1) использовать ? Или бывают камни с раздельными TMR-ами.
0
|
|
|
-12 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 145
|
|||
| 20.02.2020, 23:02 [ТС] | |||
|
Что толку от "более чем 10-ти таймеров", если нету своего таймера на один захват.
Опять лишние телодвижения, выяснять "истинное" время для каждого фронта. А если каждый захват ещё и со своим предделителем требуется, а если время ожидания для двух сигналов сильно разное (например отсутствие сигнала на первом датчике станет понятно через 60 мс, а отсутствие на втором только через 250 мс, что пусть быстрый датчик ждёт, пока медленный про...зднётся, (или таймер не переполнится) ? А сколько ног на сием камне (с более чем 10-ти таймеров), они там за каким нужны-то, если на всё/про всё 6-ти лап хватает ? Остальные то куда - про запас чтоль законсервировать. (Опять, щас дойдём до "Купи Малину" советовать)
Из того, в чём я "порылся" - хлама полна кибитка, а "взять нечего".
0
|
|||
|
|
||||||||||
| 20.02.2020, 23:27 | ||||||||||
|
Точность будет +/- такт частоты таймера. Но это в современных МК... Посмотрите если интересно. http://we.easyelectronics.ru/S... ast-1.html Иногда нужно перейти на МК с больчим числом выводов не ради них, а из-за наличия нужной периферии. ![]() ![]() У вас задача, которую проще и эффективнее решить аппаратно. Вы сами себе создаете трудности используя простейшие МК. Его нужно выбирать под задачу.
0
|
||||||||||
|
-12 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 145
|
||||
| 21.02.2020, 22:17 [ТС] | ||||
|
Ну тогда надо искать не CCP, а некий измерительный таймер (SMT называется), причём два.
И ещё один PWM (самостоятельный). (Как ни странно, но такое есть в восьми ногах: PIC12F1612 называется). Но тогда интересно, а зачем мелкочипные оставили "на борту" два классических CCP ? Они-ж всё-равно не умеют два канала нормально "хапать", и тем более ШИМ-ить одновременно. Это что такая "поддержка сверху-вниз" ? Теперь ещё-бы научится правильно отключать эти 99% избыточного "хлама", а то точно пара 190-х АКБ у тракториста за ночь сядет.
А вот ещё мне делить/умножать надо, что тогда Math-модуль искать, ну так точно до ста ног можно "допрыгаться". (Да меня быбы/роботы/монтажницы прибьют под лестницей). Программирование сейчас сводится только к менеджменту камней? Что, шас уже не модно достать из "пыльных шпаргалок" самописные I2С и DIV/MUL-ы из "90-х годов". Те точно работать будут, на любых камнях. Иль порассуждать, кто/как с одного сраного ядра одновременно два "блатных" прерывания снимает, да ещё при этом "ручной" ШИМ не забывает, каки/таки флаги ставит/сваливает, и в скольких тактах опосля события это получается. Кстати, а двухядрёные пики еще не придумали ? (Пора уже, как/так, от жизни отставать).
"готовыми ключами" свинчивать.
Тока мне кажется это я один только и вижу, чувакам-"приёмщикам" ваще всё по..., но кто-та их научил через ч/метр Ч3-54 - 600.000 (или миллион) импульсов суммировать, знают собаки, прибамбас должен на 100,0 км переключиться на последнем импульсике (в 2018-м году они этого не умели). Ладно, проект "спихнул", осталось гонорар получить..., (но отмечать пошёл щас)
0
|
||||
| 21.02.2020, 22:17 | |
|
Помогаю со студенческими работами здесь
36
Смена анкоров на лету Смена камеры на лету Xamarin C# Смена baudrate UART на лету. Смена языка интерфейса "на лету". Смена стилей "на лету" (ResourceDictionary) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
|
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит значение перечислений.
/ / Событие "НачалоВыбора" реквизита на форме. . .
|