Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
-12 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 145

PIC: Смена приоритетов прерываний на лету

11.02.2020, 22:22. Показов 2658. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Вопрос ни столько к PIC-ам, а так, к "общей теории программируемости"
(то-бишь к алгоритмам), не стоит расхваливать какой-либо "выдающийся" камень.

Дано:
Два датчика, находящихся например на концах эл.двигателей
(типа "холлы", рассказывают нам про обороты обеих моторов).
Оба датчика подключены к камню, оба обслуживаются в прерываниях.
Приоритет какого-либо прерывания - НЕочевиден (оба важны).

Рано или поздно, один датчик "в аккурат" почти догонит второй. При этом его прерывание
окажется "в тени" другого. Такое прерывание нужно "пометить" как испорченное, его данные
не верны. В общем-то ничего страшного, разок-другой можно и пропустить такое прерывание,
воспользоваться предыдующим значением. Но вот количество этих "затенений" может быть ...дцать
(а может и ...дсот раз), и теоретически оставаться бесконечно долго (ну вдруг моторы "зависли"
на одинаковых оборотах), а это уже "Косяк" !

Что приходит на ум:

1). По простому: Запускать прерывания по очереди. Но тогда придётся дожидаться некоторое
время окончания запущенного прерывания.

2). По сложному: Запускать оба прерывания. Если какое-то окажется некоторое кол-во раз подряд
"испорченным" (ведём такой счётчик), то вырубать "самое счасливое" прерывание, пока не получим
свежие данные от нужного INT-а.

Есть у кого какие наработки на данную тему ?

Заранее спс…
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.02.2020, 22:22
Ответы с готовыми решениями:

Изменение приоритетов прерываний в Atmega328p
Столкнулся с проблемой которая требует чтобы текущий обработчик прерывания отработал без прерывания своей работы более высокоприоритетным...

PIC: Точное задание интервала прерываний
Добрый день. Имеем такую (рабочую) программу: LIST p=12f629 ; Тип контроллера __CONFIG 1194h ; Конфигурация. ; 4МГц,...

Смена приоритетов процессов
Сделал возможность менять приоритет выполнения процессов и добавил пере записывание таблицы, что бы было видно поменялся приоритет или нет....

35
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
14.02.2020, 12:21
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от GaFBich Посмотреть сообщение
ГСМ с обратки
ему не надо учитывать. это учитывает ECU мотора, уже в комплекте. Просто ТС изобретает велосипед, вместо того, чтобы, например, использовать OBDII на любом носителе (CAN, KLine) чтобы не компостировать мозг, а просто иметь сразу моментальный расход топлива прямо в цифре .
0
-12 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 145
14.02.2020, 13:22  [ТС]
за несколько тактов счетчик времени (конкурирующего импульса) уходит вперед
Разве я это не пояснял ?
усиленно навинчивая ей интересность
Ну так не навинчивайтесь.
Нарисуйте временную диаграмму сигналов
Разве в "Олимпийской" задаче это не "нарисовано" ?
ГСМ с обратки
Во-во, прежде чем задавать вопрос-то ...
ТС изобретает велосипед
Скорость например троса, Вы мне штоль в OBD/CAN/KLine засунете.
Да и трогать её нельзя (прямым текстом задано).

Даже прошивть "снаружи" прибамбас нельзя
(а то вдруг "умный" тракторист попадётся, прошьёт ещё "под себя").
0
-12 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 145
17.02.2020, 09:40  [ТС]
Интересно, а можно программно вызвать захват на CCP ?
Не прибегая к импульсу на выводе GPIO (хотя и такое не мешает остальной схеме).
(Камень 12F683, если что)
0
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
17.02.2020, 21:29
Цитата Сообщение от Gazzi Посмотреть сообщение
Интересно, а можно программно вызвать захват на CCP ?
ну... например, можно соединить две внешние ноги (допустим, через резистор). И управлять ногой (симулянтом), как в режиме I2C - не состоянием push/pull, а состоянием вход/выход, при активном состоянии 0. При этом, в режиме "доминантном" у вас на выходе будет ноль, а в "рецессивном" (когда нога переключается на вход, скажем, с подтяжкой вверх) - будет слабая единица, которая не повлияет на внешнюю схему, если таковая подключена.
В итоге вы можете подавать "сигнал извне".
0
-12 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 145
18.02.2020, 06:45  [ТС]
соединить две внешние ноги
За каким ... ?

Свободных ног нет, есть только "долгие" ноги (входы), например "Зажигание", "Сброс".
Вот таку ногу и можно "через" резистор.
(А ваще неприятно, что нельзя "программный Каптур" устроить ...)
0
18.02.2020, 11:38

Не по теме:

Цитата Сообщение от Gazzi Посмотреть сообщение
А ваще неприятно, что нельзя "программный Каптур" устроить
Вы сами себя ограничили простейшим МК с небольшим числом выводов так что не нужно удивляться что многое не получается сделать.

0
-12 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 145
18.02.2020, 12:08  [ТС]
ограничили простейшим МК с небольшим числом выводов
1). Получилось ровно столько ног, сколько и было надо.
2). Зачем ??? Для Программного Каптура нужны 2-е ноги ???
3). Что, есть восьминогий с PWM-ом и двумя CCP-ами ?
0
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
18.02.2020, 13:45
Цитата Сообщение от Gazzi Посмотреть сообщение
). Зачем ??? Для Программного Каптура нужны 2-е ноги ???
встречный вопрос - а зачем вам программный capture?
0
-12 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 145
18.02.2020, 14:37  [ТС]
зачем вам программный capture?
Текущий момент (почти текущий) 16-разр. счёчика фиксайдить одной командой
bcf GPIO2, 0
для обеих датчиков (да можно и больше двух)
0
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
18.02.2020, 15:13
Цитата Сообщение от Gazzi Посмотреть сообщение
фиксайдить
Цитата Сообщение от Gazzi Посмотреть сообщение
Каптура
Цитата Сообщение от Gazzi Посмотреть сообщение
двумя CCP-ами

Не по теме:

с трудом понимаю смысл текста. Давайте или перейдем на английский - тогда термины станут применимыми.


ну просто если вам надо ловить "количество" сработок счетчика, пытаясь программно повлиять на прерывание - вы можете сокращать на единицу верхний/нижный предел счета (смотря куда считает счетчик). Либо просто наращивать внутренний программный счетчик и прибавлять его значение к значению счетчика в момент его замера (чтения).
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
Эксперт по электронике
6824 / 3249 / 337
Регистрация: 28.10.2011
Сообщений: 12,696
Записей в блоге: 7
20.02.2020, 21:53
Цитата Сообщение от Gazzi Посмотреть сообщение
Или бывают камни с раздельными TMR-ами.
Бывают камни больше чем с 10 таймерами (некоторые из них 32-ух битные), но вы по какой-то причине ограничили себя самым простым МК.
Кликните здесь для просмотра всего текста
Миниатюры
PIC: Смена приоритетов прерываний на лету  
0
-12 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 145
20.02.2020, 23:02  [ТС]
Что толку от "более чем 10-ти таймеров", если нету своего таймера на один захват.
Опять лишние телодвижения, выяснять "истинное" время для каждого фронта.
А если каждый захват ещё и со своим предделителем требуется,
а если время ожидания для двух сигналов сильно разное (например отсутствие сигнала на первом
датчике станет понятно через 60 мс, а отсутствие на втором только через 250 мс, что пусть быстрый
датчик ждёт, пока медленный про...зднётся, (или таймер не переполнится) ?

А сколько ног на сием камне (с более чем 10-ти таймеров), они там за каким нужны-то,
если на всё/про всё 6-ти лап хватает ? Остальные то куда - про запас чтоль законсервировать.
(Опять, щас дойдём до "Купи Малину" советовать)

(некоторые из них 32-ух битные)
Что, так трудно ещё байты "привинтить" к штатному TMR-у, что прям надо на 10-таймеровый переходить.

вы по какой-то причине ограничили себя самым простым МК
Так ежели она и на нём решаема, нафига мне этот тюнинг ...
Из того, в чём я "порылся" - хлама полна кибитка, а "взять нечего".
0
Эксперт по электронике
6824 / 3249 / 337
Регистрация: 28.10.2011
Сообщений: 12,696
Записей в блоге: 7
20.02.2020, 23:27
Цитата Сообщение от Gazzi Посмотреть сообщение
Что толку от "более чем 10-ти таймеров", если нету своего таймера на один захват.
У МК на картинке многие таймеры поддерживают как простой захват так и ШИМ захват (используются 2 канала, каждый измеряет длительность своего полупериода). Данные можно забирать с помощью DMA, т. е. даже прерывания от таймеров не нужны.
Точность будет +/- такт частоты таймера. Но это в современных МК... Посмотрите если интересно. http://we.easyelectronics.ru/S... ast-1.html

Цитата Сообщение от Gazzi Посмотреть сообщение
А если каждый захват ещё и со своим предделителем требуется,
У каждого таймера свой предделитель с коэффициентом деления 1...65536.
Цитата Сообщение от Gazzi Посмотреть сообщение
а если время ожидания для двух сигналов сильно разное (например отсутствие сигнала на первом
датчике станет понятно через 60 мс, а отсутствие на втором только через 250 мс,
Отдельные таймеры на каждый датчик решают это проблему.

Цитата Сообщение от Gazzi Посмотреть сообщение
А сколько ног на сием камне (с более чем 10-ти таймеров)
100 выводов. Таймеров 14 (см скрин).

Цитата Сообщение от Gazzi Посмотреть сообщение
они там за каким нужны-то, если на всё/про всё 6-ти лап хватает ?
Запомните, в малоногих МК меньше всего начинки.
Иногда нужно перейти на МК с больчим числом выводов не ради них, а из-за наличия нужной периферии.

Цитата Сообщение от Gazzi Посмотреть сообщение
(Опять, щас дойдём до "Купи Малину" советовать)
Нет, для вашей задачи подойдет 20-ти ногий МК стоимостью 20 рублей (0.3$).

Цитата Сообщение от Gazzi Посмотреть сообщение
Что, так трудно ещё байты "привинтить" к штатному TMR-у, что прям надо на 10-таймеровый переходить.
Ну так привинтите.
У вас задача, которую проще и эффективнее решить аппаратно.

Цитата Сообщение от Gazzi Посмотреть сообщение
Так ежели она и на нём решаема, нафига мне этот тюнинг
Если задача уже решена и все работает зачем эта тема?
Вы сами себе создаете трудности используя простейшие МК. Его нужно выбирать под задачу.

Цитата Сообщение от Gazzi Посмотреть сообщение
Из того, в чём я "порылся" - хлама полна кибитка, а "взять нечего".
Купить подходящий МК за 20 рублей не вариант?
0
-12 / 0 / 0
Регистрация: 28.09.2017
Сообщений: 145
21.02.2020, 22:17  [ТС]
Ну тогда надо искать не CCP, а некий измерительный таймер (SMT называется), причём два.
И ещё один PWM (самостоятельный).
(Как ни странно, но такое есть в восьми ногах: PIC12F1612 называется).

Но тогда интересно, а зачем мелкочипные оставили "на борту" два классических CCP ?
Они-ж всё-равно не умеют два канала нормально "хапать", и тем более ШИМ-ить одновременно.
Это что такая "поддержка сверху-вниз" ?

Теперь ещё-бы научится правильно отключать эти 99% избыточного "хлама", а то точно пара 190-х АКБ
у тракториста за ночь сядет.

Иногда нужно перейти на МК с больчим числом выводов не ради них, а из-за наличия нужной периферии.
Ну вот мне ещё надо-бы I2C, что продолжать дальше искать, тогда уже от 14-лап.
А вот ещё мне делить/умножать надо, что тогда Math-модуль искать, ну так точно до ста ног можно
"допрыгаться". (Да меня быбы/роботы/монтажницы прибьют под лестницей).

Программирование сейчас сводится только к менеджменту камней?
Что, шас уже не модно достать из "пыльных шпаргалок" самописные I2С и DIV/MUL-ы из "90-х годов".
Те точно работать будут, на любых камнях. Иль порассуждать, кто/как с одного сраного ядра одновременно
два "блатных" прерывания снимает, да ещё при этом "ручной" ШИМ не забывает, каки/таки флаги
ставит/сваливает, и в скольких тактах опосля события это получается.
Кстати, а двухядрёные пики еще не придумали ? (Пора уже, как/так, от жизни отставать).

задача, которую проще и эффективнее решить аппаратно
Да фиг её знает, что лучше (наверное как всегда посередине). В теории любую задачу эффективнее
"готовыми ключами" свинчивать.

Если задача уже решена и все работает
Ну чуть-чуть стрелка "замирает" иногда, а так ничо, работает.
Тока мне кажется это я один только и вижу, чувакам-"приёмщикам" ваще всё по...,
но кто-та их научил через ч/метр Ч3-54 - 600.000 (или миллион) импульсов суммировать, знают собаки,
прибамбас должен на 100,0 км переключиться на последнем импульсике (в 2018-м году они этого
не умели).

Ладно, проект "спихнул", осталось гонорар получить..., (но отмечать пошёл щас)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.02.2020, 22:17
Помогаю со студенческими работами здесь

Смена анкоров на лету
Добрые форумчане! поможите: 1. Вопрос такой: на продвигаемую страницу закупаются ссылки с анкорами "установка триколор" и...

Смена камеры на лету Xamarin C#
Столкнулся с проблемой в XamarinForms для ОС Android, приложение работающее с камерой для скана штрих кодов. Не получается на лету изменять...

Смена baudrate UART на лету.
Вопрос - можно ли менять baudrate UART "на лету"? Пробовал сначала инициализировать UART на определенную скорость, потом отправлять байт,...

Смена языка интерфейса "на лету".
Добрый день. Для смены языка интерфейса программы "на лету" нашел следующий код: (взято с...

Смена стилей "на лету" (ResourceDictionary)
Форумчане не подскажете как править app.xaml в коде? Мне нужно удалить Dictionary1.xaml и записать Dictionary2.xaml это возможно? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
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
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru