А не возбраняется ли, не будет каких негативных последствий, если код, выполняемый в прерывании, дополнительно вызывать извне, в ходе обычного выполнения? Даже если пересекутся, вроде ничего страшного не вижу навскидку.
Для этого обработчик должен быть выполнен как колбэк. То есть изолирован от проверки и сброса флагов, а так же от выхода по retfie вместо return.
Что это за обработчик, без проверки и сброса флагов? Что он там обработает? Это получится просто ПП, по адресу вектора прерывания. Думаю, как совместить с функцией прерывания, чтобы часть её кода (не весь) отрабатывал и в прерывании, и снаружи. Можно доп. проверки использовать.
А если вручную сбросить GIE и принудительно уйти на код в прерывании, потом восстановить GIE?
Опубликованы материалы вебинара, посвященного пленочным конденсаторам компании Hongfa, на котором была представлена текущая линейка и модельный ряд продукции этого направления, включая новые, недавно вышедшие серии.
На вебинаре были приведены актуальные примеры применения пленочных конденсаторов Hongfa в источниках питания, зарядных станциях для электротранспорта, преобразователях частоты, фотоэлектрических преобразователях и ветрогенераторах.
Что это за обработчик, без проверки и сброса флагов?
Любезный, у меня есть к вам предложение не гнуть пальцы и не умничать, изрекая всякую смешную хрень. Я достаточно определенно озвучил новый для вас термин - колбэк. Это отдельная функция вызываемая из прерывания (в данном случае из прерывания, само понятие шире). Таким образом, в колбэке нет никаких флагов и retfie. Он обычная функция без передачи аргументов и возврата значения - в лингвистике Си void Func(void).
Компания Hongfa - один из лидеров азиатского рынка пленочных конденсаторов с полным циклом производства. Она выпускает пять серий помехоподавляющих конденсаторов этого типа как для бытовой, так и для трехфазной промышленной сети, а также для автомобильного применения. Продукция компании по ассортименту, параметрам и количеству серий конденсаторов ЭМП не уступает другим крупным производителям этого сегмента и может легко заменить ассортимент ушедших из РФ брендов.
А зачем микрочипы про АЦП (10 разряд 12f675) пишут про время выбора, подготовки и проч? Не пойму, что ему надо обеспечить, если о готовности сигнализирует бит запуска GO/DONE? Выбрал из таблицы делитель тактового сигнала, и все дела?
yor, изините, но читаю и вижу, что у вас какое-то постоянное искание "коня в вакууме". Просто включите свою логику и блюдите логику процесса. Всё! А то получается типа: "Подскажите, мне достать деньги из кошелька за покупку до оплаты в кассу или в момент оплаты и что если не хватит мелочи, менять купюру? Какие при этом могут быть проблемы?" Чего-то смахивает на желание просто поболтать, а не думать.
yor писал(а):
если код, выполняемый в прерывании, дополнительно вызывать извне, в ходе обычного выполнения
Да пожалуйста, только войдите туда (как в П/П) с неким признаком.
yor писал(а):
Можно доп. проверки использовать.
Да. И выход из этой П/П в некоем месте предполагаемого выхода, по проверке признака. Если признака нет, то значит идёт выполнение прерывания. А ещё есть варианты рекурсивных кусков программ. Там вы без пространственного воображения процесса вообще заманаетесь. Могу только посоветовать вам рисовать себе подробное графическое представление течения процесса и попытаться пройтись по нему рассуждая в разных возможных вариантах. Уверяю, что тогда множество вопросов отпадёт само собой.
При выборе интервала между преобразоапниями нужно помнить, что кроме времени преобразования требуется время на захват сигнала - эквизишн тайм. Это время на заряд конденсатора УВХ. Оно зависит от емкости этого конденсатора в конкретном МК, от сопротивления открытого ключа УВХ в конкретном МК, и от внутреннего сопротивления источника сигнала подаваемого на вход АЦП. На эту тему в даташите в главе АЦП есть целый раздел.
yor, изините, но читаю и вижу, что у вас какое-то постоянное искание "коня в вакууме". Просто включите свою логику и блюдите логику процесса. Всё!
Нет уж, это вы тут меня извините)) Я новичок-новатор, и вижу слишком много возможностей, так лучше спросить, чем потратив время, в тупик упереться. Мотает, да, включаю стабилизатор.
Заголовок сообщения: Re: Вопросы начинающих PIC ASM
Добавлено: Сб авг 10, 2024 15:16:45
Друг Кота
Карма: 6
Рейтинг сообщений: 17
Зарегистрирован: Вс сен 17, 2017 17:44:21 Сообщений: 4465 Откуда: 51.7727, 55.0988. Высота над морем 107 м. До границы 161 км.
Рейтинг сообщения:0
... вижу слишком много возможностей, так лучше спросить, чем потратив время, в тупик упереться
Сорри, но ковыряетесь в (видимо никем акромя вас незамеченном ) малосущественном и мало принципиальном, главное вы упускаете. Посмею повториться - учитесь развивать последовательную логику, тогда и "тупиков" не будет. Потом помнить про написанное в даташите, отделяя справочную информацию от необходимой. Ну и как один из основных принципов составления логики программы - наверное всёже в прерываниях не следует делать ничего без чего в данном случае можно там обойтись (т.е. мин. "телодвижений" для фиксации события), перенеся всё "лишнее" оттуда в основную программу. А не наоборот, перегружая обработчик прерывания, да ещё так, что основная программа оттуда может чегонить почерпнуть. Т.е. это есть грубейшая ошибка. Ну и напоследок позволю совет - прекращайте заниматься "новаторством", а учитесь правильно строить путь необходимого вам процесса. И опять напомню - т.к. у вас явно с пространственным представлением не очень, вам показано строить графическое представление хода программы. И для ассемблерного написания оной достаточно подробный. Как бонус ошибки будут исключены по определению. При этом вы себе и время сэкономите (тема уже за месяц перевалила) и спрашивать будет практически почти нечего. Но путь и каким советам следовать выбирать вам. Удачи. Засим
А чтобы проверить в железе, приходится с нуля делать генератор сигналов, подходящего не нашлось, чем и занимаюсь. Засим откланиваюсь, замечания учту))
Насчёт графического представления тоже подходящего нет, драконы там всякие, и прочее. Больше следить приходится за офррмлением, чем за сутью. Обхожусь текстовым.
The TMR1H:TTMR1L register pair and the TMR1IF bit should be cleared before enabling interrupts.
Это нужно перед включением TMR1IE или и перед GIE и PEIE? "Before enabling interrupts" - насколько перед, за несколько команд ДО, в том числе перед CALL, удовлетворит требованиям?
То есть принципиальным тут является очистка таймера, не сбросить флаг перед разрешением прерываний - это не будет работать, по логике вещей. Именно CLRF или можно записать свои значения? Потому что тут же при записи в работающий таймер:
Код:
; All interrupts are disabled CLRF TMR1L ; Clear Low byte, Ensures no rollover into TMR1H MOVLW HI_BYTE ; Value to load into TMR1H MOVWF TMR1H, F ; Write High byte MOVLW LO_BYTE ; Value to load into TMR1L MOVWF TMR1H, F ; Write Low byte ; Re-enable the Interrupt (if required) CONTINUE ; Continue with your code
Не производится сброс регистров перед разрешением прерывания.
В каком случае нельзя остановить таймер, чтобы на ходу в него писать?
Добавлено after 10 minutes 5 seconds: И обязательно перевключать бит разрешения прерываний после прерывания? Если я его не трогаю, а останавливаю таймер, сбрасываю бит сигнализации прерывания, перезаписываю и опять запускаю таймер?
Добавлено after 1 hour 8 minutes 41 second: Что не так при запуске таймера? Запуск из прерывания, GIE сам при выходе взведётся. По даташиту
С тоской вспоминаю старую советскую документацию, где всё чётко стройно однозначно и доходчиво(( А не вот эти вот шатания-мотания, эрраты и прочие домыслы. Справедливости ради заметить, что тогда техника проще была, конечно.
Заголовок сообщения: Re: Вопросы начинающих PIC ASM
Добавлено: Сб авг 17, 2024 08:21:00
Друг Кота
Карма: 6
Рейтинг сообщений: 17
Зарегистрирован: Вс сен 17, 2017 17:44:21 Сообщений: 4465 Откуда: 51.7727, 55.0988. Высота над морем 107 м. До границы 161 км.
Рейтинг сообщения:0
С тоской вспоминаю старую советскую документацию, где всё чётко стройно однозначно и доходчиво(( А не вот эти вот шатания-мотания, эрраты и прочие домыслы. Справедливости ради заметить, что тогда техника проще была, конечно.
"Новатор" заныл, мозгов не хватает осилить документацию на древние PIC. С тоской вспоминает паспорта на комплектующие времен СССР.
По какой причине может не работать в железе, когда в полном объёме работает в симуляторе? Никаких АЦП тут нет. Только вычисления и ногодрыг по таймерам. И в железе не совсем не работает, а только на участке вычислений задержки.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения