Например TDA7294

Форум РадиоКот • Просмотр темы - Вопросы начинающих PIC ASM
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Пт сен 27, 2024 21:13:24

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 718 ]     ... , , , 19, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Вт авг 01, 2023 21:51:00 
Говорящий с текстолитом
Аватар пользователя

Карма: 1
Рейтинг сообщений: 83
Зарегистрирован: Сб янв 19, 2008 23:57:27
Сообщений: 1589
Откуда: Нью-Сибирск
Рейтинг сообщения: 0
А если работают два таймера, и оба могут сработать одновременно, или почти одновременно? pic16f648 TMR1 TMR2 в режиме таймеров, то есть считают до конца (TMR1 до FFFF, TMR2 до совпадения с PR2). Оба закончили в один момент. 1) Инициируется прерывание. В обработчике всё равно определится, что один пойдёт первым.
Сброс GIE
Определение сработавшего таймера, например TMRx
ОБработка TMRx
Взвод GIE
Что будет со вторым? TMR1 продолжает от нуля, (или TMR2 дальше PR2 шпарит), флаг прерывания поднят, снова тут же прерывание? Или надо сразу в одной процедуре оба обрабатывать? А если второе чуть позже, можно ли потерять прерывание?

2) Или влетели мы в прерывание по одному таймеру, и не запрещать GIE, обработка прервётся другим, а потом вернётся к первой?

3) Или влетели мы в прерывание по одному таймеру, запрет GIE, обрабатываем, и тут сработал второй. Взвод GIE, второе прерывание, а таймер-то ушагал уже.
Так? Или что не так?
В общем, как быть, если есть риск одновременного или близкого срабатывания таймеров по прерыванию?

_________________
gentoo kicad 7


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Ср авг 02, 2023 04:19:28 
Друг Кота
Аватар пользователя

Карма: 137
Рейтинг сообщений: 2802
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 22572
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Кто вас научил дергать GIE в прерывании? Вы понимаете смысл этого? :facepalm:
Ну и в чем смысл всех этих игрищ с парой таймеров?
Лучше опишите конечную задачу, а не фантазируйте.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Ср авг 02, 2023 07:44:21 
Друг Кота
Аватар пользователя

Карма: 94
Рейтинг сообщений: 1399
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14392
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
У каждого семейства МК свои плюсы/минусы и ограничения.
У стандартных среднемладших и стек не слишком велик и работа с прерываниями довольно сложна.
Однако есть и "улучшенная среднемладшая" и 18я серии - там заметно полегче.
Да и иных семейств МК в достатке.
Выбираем то, что соответствует конкретной задаче или корректируем саму задачу под имеющийся МК.
Добавляем в сзему внешние микросхемы/МК со специфическими свойствами, дабы облегчить работу основного МК.
Это и есть ТВОРЧЕСТВО.
8)


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Ср авг 02, 2023 11:59:32 
Говорящий с текстолитом
Аватар пользователя

Карма: 1
Рейтинг сообщений: 83
Зарегистрирован: Сб янв 19, 2008 23:57:27
Сообщений: 1589
Откуда: Нью-Сибирск
Рейтинг сообщения: 0
Кто вас научил дергать GIE в прерывании? Вы понимаете смысл этого?
А как, чтобы другие прерывания не помешали? Персональные биты сбрасывать? Так общим проще. Потом включить. Вроде так рекомендуется. Или даже обязывается.

Ну и в чем смысл всех этих игрищ с парой таймеров?
Лучше опишите конечную задачу, а не фантазируйте.

Изображение
Это мотор внутреннего сгорания, зажигание с индуктивным накоплением, обороты 0-6000, tзад (опережение зажигания, УОЗ) от 0 на минимальных оборотах до какого-то значения, зависит от оборотов (периода). tвкл - время накопления (включена катушка зажигания), тоже зависит от оборотов. Ну и выдержка tож=T-tвкл-tзад.
Искра по окончанию tвкл, может быть вплоть до заднего восходящего фронта импульса датчиков.

Период измеряется одним таймером мониторингом, по переполнению на мин оборотах (для определения точки, ниже которой не трогать УОЗ) прерывание.
tож tвкл tзад откладываются другим таймером по прерыванию. И вот ввиду плавания всех этих значений прерывания могут пересечься, и даже однозначно пересекутся.

_________________
gentoo kicad 7


Вернуться наверх
 
Материалы вебинара «Пленочные конденсаторы Hongfa для источников питания и силовой электроники»

Опубликованы материалы вебинара, посвященного пленочным конденсаторам компании Hongfa, на котором была представлена текущая линейка и модельный ряд продукции этого направления, включая новые, недавно вышедшие серии. На вебинаре были приведены актуальные примеры применения пленочных конденсаторов Hongfa в источниках питания, зарядных станциях для электротранспорта, преобразователях частоты, фотоэлектрических преобразователях и ветрогенераторах.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Ср авг 02, 2023 12:25:16 
Друг Кота
Аватар пользователя

Карма: 137
Рейтинг сообщений: 2802
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 22572
Откуда: Московская область, Фрязино
Рейтинг сообщения: 2
А как, чтобы другие прерывания не помешали? Персональные биты сбрасывать? Так общим проще. Потом включить. Вроде так рекомендуется. Или даже обязывается.

Лютый бред. :facepalm:
Вы вообще не понимаете как работает контроллер прерываний МК.
Абисняю.
При взведении любого флага и наличии разрешения этого флага, а так же групповых разрешений PEIE и GIE возникает генерация прерывания. Поскольку вектор прерываний в обсуждаемой архитектуре ОДИН (0х0004), программа уходит на этот единый адрес и глобальное разрешение GIE АВТОМАТИЧЕСКИ ЗАПРЕЩАЕТСЯ. То есть ваши потуги с этим битом в части его выключения абсолютно бессмысленны.
Далее на входе в обработчик должен находится код сохранения контекста ядра (WREG и STATUS, а так же опционально PCLATH), а вслед за ним (при работе с более чем одним источником прерываний) СЕМАФОР обработчика, который ПОСЛЕДОВАТЕЛЬНО опрашивает все возможные используемые флаги прерываний, а при определенных случаях еще и разрешения по этим флагам, и перенаправляет код в обработчик по конкретному флагу, где этот флаг и сбрасывается тем или иным методом. На выходе из общего обработчика контекст восстанавливается и выход в основной код ОБЯЗАН производится инструкцией retfie, которая в отличии от похожей на неё инструкции return, ОДНОВРЕМЕННО с возвратом в основной код РАЗРЕШАЕТ ГЛОБАЛЬНЫЕ ПРЕРЫВАНИЯ, то есть попросту устанавливает бит GIE в единицу.
Если бит GIE установить руками перед выходом из прерываний, то если какой то из флагов останется взведенным, немедленно будет сгенерировано ВЛОЖЕННОЕ прерывание, а поскольку стандартное сохранение контекста поддерживает лишь один уровень, то контекст будет испорчен и программа станет неработоспособна в целом.
Период измеряется одним таймером мониторингом, по переполнению на мин оборотах (для определения точки, ниже которой не трогать УОЗ) прерывание.
tож tвкл tзад откладываются другим таймером по прерыванию. И вот ввиду плавания всех этих значений прерывания могут пересечься, и даже однозначно пересекутся.

Херня какая то...
Период измеряют посредством TMR1 в режиме ЗАХВАТА. То есть это аппаратный процесс и ему болт положить на прерывания и задержки, если только код успевает считывать данные захвата между этими захватами. Реальное время измерений всегда будет равно разности нового и прежнего значения захвата.
Если события прерываний будут сгенерированы одновременно от разных источников, то последовательность их обработки зависит от порядка опроса флагов в СЕМАФОРЕ обработчика. При завершении обработки текущего обрабатываемого флага код выйдет из обработчика и, поскольку необработанные флаги остались взведенными, немедленно зайдет снова в прерывание и обработает следующий флаг по порядку семафора. И так до тех пор, пока все флаги не будут обработаны.
Сократить время задержки на все это мероприятие в обсуждаемой платформе ПРИНЦИПИАЛЬНО НЕВОЗМОЖНО.
Если такая необходимость есть, нужно сменить платформу на ту, которая имеет приоритетную архитектуру контроллера прерываний МК, либо имеет нативную вложенность прерываний (например как NVIC в ARM-ах).


Последний раз редактировалось КРАМ Ср авг 02, 2023 13:06:13, всего редактировалось 1 раз.

Вернуться наверх
 
Помехоподавляющие пленочные конденсаторы Hongfa для бытовых и промышленных сетей

Компания Hongfa - один из лидеров азиатского рынка пленочных конденсаторов с полным циклом производства. Она выпускает пять серий помехоподавляющих конденсаторов этого типа как для бытовой, так и для трехфазной промышленной сети, а также для автомобильного применения. Продукция компании по ассортименту, параметрам и количеству серий конденсаторов ЭМП не уступает другим крупным производителям этого сегмента и может легко заменить ассортимент ушедших из РФ брендов.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Ср авг 02, 2023 13:04:49 
Говорящий с текстолитом
Аватар пользователя

Карма: 1
Рейтинг сообщений: 83
Зарегистрирован: Сб янв 19, 2008 23:57:27
Сообщений: 1589
Откуда: Нью-Сибирск
Рейтинг сообщения: 0
Вы вообще не понимаете как работает контроллер прерываний МК.
Абисняю.
Абиснили. Спасибо. Но факт сброса GIE подтвердился, и когда я начну писать непосредственно код, я эти тонкости просеку. Надеюсь.

Период измеряют посредством TMR1 в режиме ЗАХВАТА.
Почему только TMR1? Почему не TMR2?

Если события прерываний будут сгенерированы одновременно от разных источников, то последовательность их обработки зависит от порядка опроса флагов в СЕМАФОРЕ обработчика. При завершении обработки текущего обрабатываемого флага код выйдет из обработчика и, поскольку необработанные флаги остались взведенными, немедленно зайдет снова в прерывание и обработает следующий флаг по порядку семафора. И так до тех пор, пока все флаги не будут обработаны.
Вот это и есть ответ на изначально заданный вопрос про потерю прерываний. Ещё раз спасибо. Только непонятно, зачем Вам понадобились подробности задачи?

_________________
gentoo kicad 7


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Ср авг 02, 2023 13:09:57 
Друг Кота
Аватар пользователя

Карма: 137
Рейтинг сообщений: 2802
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 22572
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Почему только TMR1? Почему не TMR2?

Патамушта захват (он 16-битный) есть только на базе TMR1. А на базе TMR2 есть только 10-битный ШИМ.
Откройте наконец даташит на МК и ознакомьтесь с его содержимым.
зачем Вам понадобились подробности задачи?

Затем, чтобы вы задали мне вопрос про TMR2... :wink: :tea:
Следите за логикой разговора... :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Ср авг 02, 2023 13:14:21 
Друг Кота
Аватар пользователя

Карма: 94
Рейтинг сообщений: 1399
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14392
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Говорят же - задачи можно решать разными способами.
Можно на аппаратные средства нажимать, а можно и на программные - зависит от параметров времени исполнения и прочего.
Как вариант - на таймере "тикалка", а контроль значений (состояния ввода/вывода) программный через интервал "тикалки".
Да много чего еще...
8)
Теоретически у стандартной среднемладшей можно вложенные прерывания сделать - но то будет такая садомазохистская конструкция, что по времени исполнения и количеству команд явно проиграет программному опросу для тех же задач.
:?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Ср авг 02, 2023 13:17:19 
Друг Кота
Аватар пользователя

Карма: 137
Рейтинг сообщений: 2802
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 22572
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Теоретически

Вот именно поэтому НЕВОЗМОЖНО ПРИНЦИПИАЛЬНО. Ибо то, что бессмысленно, можно считать невозможным.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Ср авг 02, 2023 13:21:39 
Друг Кота
Аватар пользователя

Карма: 94
Рейтинг сообщений: 1399
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14392
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Скорее из-за нерациональных затрат ресурсов и времени МК.
Вряд-ли МК с задачами реального времени понравится громоздкая конструкция. Да и для других задач тоже время надо.
Весь смысл то прерывания в скоростной реакции на событие.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Ср авг 02, 2023 14:53:59 
Говорящий с текстолитом
Аватар пользователя

Карма: 1
Рейтинг сообщений: 83
Зарегистрирован: Сб янв 19, 2008 23:57:27
Сообщений: 1589
Откуда: Нью-Сибирск
Рейтинг сообщения: 0
Почему только TMR1? Почему не TMR2?

Патамушта захват (он 16-битный) есть только на базе TMR1. А на базе TMR2 есть только 10-битный ШИМ.
Я неполностью описал задачу. Много гитик. Опрос фронтов программный, вроде в этом МК один внешний вход прерываний, а датчика два, да и разводка уже сделана не так. Да и 8 бит достаточно, с пред- и постделителями.

Откройте наконец даташит на МК и ознакомьтесь с его содержимым.
Знакомлюсь помаленьку, всё сразу не упомнишь.

_________________
gentoo kicad 7


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Ср авг 02, 2023 17:25:36 
Друг Кота
Аватар пользователя

Карма: 94
Рейтинг сообщений: 1399
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14392
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Датчики в виде мехконтактов с "дребезгом"?
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Ср авг 02, 2023 18:58:42 
Говорящий с текстолитом
Аватар пользователя

Карма: 1
Рейтинг сообщений: 83
Зарегистрирован: Сб янв 19, 2008 23:57:27
Сообщений: 1589
Откуда: Нью-Сибирск
Рейтинг сообщения: 0
Дребезг вполне программно давится. Тем более что тут входы вроде с триггерами Шмитта. Но у меня оптодатчики))

_________________
gentoo kicad 7


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Ср авг 02, 2023 20:06:48 
Друг Кота
Аватар пользователя

Карма: 94
Рейтинг сообщений: 1399
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 14392
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
ну тогда вообще никаких вопросов.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Сб авг 05, 2023 20:41:08 
Говорящий с текстолитом
Аватар пользователя

Карма: 1
Рейтинг сообщений: 83
Зарегистрирован: Сб янв 19, 2008 23:57:27
Сообщений: 1589
Откуда: Нью-Сибирск
Рейтинг сообщения: 0
А можно ли из простой подпрограммы вместо return возвращаться по retfie, чтоб заранее сброшенный GIE автоматом взводился? Вроде не вижу препятствий.

_________________
gentoo kicad 7


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Сб авг 05, 2023 20:54:18 
Друг Кота
Аватар пользователя

Карма: 137
Рейтинг сообщений: 2802
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 22572
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
А можно ли

Зачем? :dont_know:
Вы хотите сэкономить одну инструкцию?
Весь смысл retfie в одновременности возврата и установки флага, чтобы обеспечить корректность обработчика прерываний.
А так, да можете писать все что угодно в коде.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Вс авг 06, 2023 07:37:32 
Говорящий с текстолитом
Аватар пользователя

Карма: 1
Рейтинг сообщений: 83
Зарегистрирован: Сб янв 19, 2008 23:57:27
Сообщений: 1589
Откуда: Нью-Сибирск
Рейтинг сообщения: 0
Вы хотите сэкономить одну инструкцию?
А почему бы и нет? Копейка рупь бережёт.

_________________
gentoo kicad 7


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Вс авг 06, 2023 07:44:18 
Друг Кота
Аватар пользователя

Карма: 137
Рейтинг сообщений: 2802
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 22572
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Копейка рупь бережёт.

Даже не буду учитывать, что выключение прерываний в коде основного цикла - это крайне редкое мероприятие, экономить ОДИН машинный цикл на выходе из такой функции просто гомерически смешно. Вы сначала научитель писать адекватный алгоритм, в котором нет избыточного кода, а потом будете экономить 100 нс непонятно на чем. :facepalm:
Ваши планы пока выглядят как клоунада.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Вс авг 06, 2023 07:53:35 
Говорящий с текстолитом
Аватар пользователя

Карма: 1
Рейтинг сообщений: 83
Зарегистрирован: Сб янв 19, 2008 23:57:27
Сообщений: 1589
Откуда: Нью-Сибирск
Рейтинг сообщения: 0
Повеселить людей тоже неплохо. Совмещая с образованием. Но кроме Вас, вроде, никто не смеётся. Надо прибавить усилий))

_________________
gentoo kicad 7


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы начинающих PIC ASM
СообщениеДобавлено: Вс авг 06, 2023 08:12:48 
Друг Кота
Аватар пользователя

Карма: 137
Рейтинг сообщений: 2802
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 22572
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Остальные просто не успели прочесть...
:)))
Однако по существу добавлю.
Дело в том, что прерывания в МК применяют для реализации задач реального времени. А это значит, что следить нужно за минимальным временем РЕАКЦИИ НА ПРЕРЫВАНИЯ (СОБЫТИЯ). Запрет прерываний с основном цикле увеличивает это самое время. Но иногда необходим для обеспечения атомарности некоторых операций.
В этом смысле замена двух инструкций на одну выглядит как УХУДШЕНИЕ ситуации. Патамушта отдельное разрешение прерываний будет БЫСТРЕЕ на один машинный цикл возвращать коду возможность реагировать на события. Ибо retfie выполняется ДВА машинных цикла.
Экономить на основном цикле бессмысленно, потому как он и так никогда не загружен на 100%. Более того, он, как правило, не загружен даже на треть.
Такшта ваши глупости - они такие глупости... :)))


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 718 ]     ... , , , 19, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y