А не возбраняется ли, не будет каких негативных последствий, если код, выполняемый в прерывании, дополнительно вызывать извне, в ходе обычного выполнения? Даже если пересекутся, вроде ничего страшного не вижу навскидку.
Для этого обработчик должен быть выполнен как колбэк. То есть изолирован от проверки и сброса флагов, а так же от выхода по retfie вместо return.
Что это за обработчик, без проверки и сброса флагов? Что он там обработает? Это получится просто ПП, по адресу вектора прерывания. Думаю, как совместить с функцией прерывания, чтобы часть её кода (не весь) отрабатывал и в прерывании, и снаружи. Можно доп. проверки использовать.
А если вручную сбросить GIE и принудительно уйти на код в прерывании, потом восстановить GIE?
Что это за обработчик, без проверки и сброса флагов?
Любезный, у меня есть к вам предложение не гнуть пальцы и не умничать, изрекая всякую смешную хрень. Я достаточно определенно озвучил новый для вас термин - колбэк. Это отдельная функция вызываемая из прерывания (в данном случае из прерывания, само понятие шире). Таким образом, в колбэке нет никаких флагов и retfie. Он обычная функция без передачи аргументов и возврата значения - в лингвистике Си void Func(void).
А зачем микрочипы про АЦП (10 разряд 12f675) пишут про время выбора, подготовки и проч? Не пойму, что ему надо обеспечить, если о готовности сигнализирует бит запуска GO/DONE? Выбрал из таблицы делитель тактового сигнала, и все дела?
yor, изините, но читаю и вижу, что у вас какое-то постоянное искание "коня в вакууме". Просто включите свою логику и блюдите логику процесса. Всё! А то получается типа: "Подскажите, мне достать деньги из кошелька за покупку до оплаты в кассу или в момент оплаты и что если не хватит мелочи, менять купюру? Какие при этом могут быть проблемы?" Чего-то смахивает на желание просто поболтать, а не думать.
yor писал(а):
если код, выполняемый в прерывании, дополнительно вызывать извне, в ходе обычного выполнения
Да пожалуйста, только войдите туда (как в П/П) с неким признаком.
yor писал(а):
Можно доп. проверки использовать.
Да. И выход из этой П/П в некоем месте предполагаемого выхода, по проверке признака. Если признака нет, то значит идёт выполнение прерывания. А ещё есть варианты рекурсивных кусков программ. Там вы без пространственного воображения процесса вообще заманаетесь. Могу только посоветовать вам рисовать себе подробное графическое представление течения процесса и попытаться пройтись по нему рассуждая в разных возможных вариантах. Уверяю, что тогда множество вопросов отпадёт само собой.
При выборе интервала между преобразоапниями нужно помнить, что кроме времени преобразования требуется время на захват сигнала - эквизишн тайм. Это время на заряд конденсатора УВХ. Оно зависит от емкости этого конденсатора в конкретном МК, от сопротивления открытого ключа УВХ в конкретном МК, и от внутреннего сопротивления источника сигнала подаваемого на вход АЦП. На эту тему в даташите в главе АЦП есть целый раздел.
yor, изините, но читаю и вижу, что у вас какое-то постоянное искание "коня в вакууме". Просто включите свою логику и блюдите логику процесса. Всё!
Нет уж, это вы тут меня извините)) Я новичок-новатор, и вижу слишком много возможностей, так лучше спросить, чем потратив время, в тупик упереться. Мотает, да, включаю стабилизатор.
Заголовок сообщения: Re: Вопросы начинающих PIC ASM
Добавлено: Сб авг 10, 2024 15:16:45
Друг Кота
Карма: 2
Рейтинг сообщений: 21
Зарегистрирован: Вс сен 17, 2017 17:44:21 Сообщений: 4812 Откуда: 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
Друг Кота
Карма: 2
Рейтинг сообщений: 21
Зарегистрирован: Вс сен 17, 2017 17:44:21 Сообщений: 4812 Откуда: 51.7727, 55.0988. Высота над морем 107 м. До границы 161 км.
Рейтинг сообщения:0
С тоской вспоминаю старую советскую документацию, где всё чётко стройно однозначно и доходчиво(( А не вот эти вот шатания-мотания, эрраты и прочие домыслы. Справедливости ради заметить, что тогда техника проще была, конечно.
"Новатор" заныл, мозгов не хватает осилить документацию на древние PIC. С тоской вспоминает паспорта на комплектующие времен СССР.
По какой причине может не работать в железе, когда в полном объёме работает в симуляторе? Никаких АЦП тут нет. Только вычисления и ногодрыг по таймерам. И в железе не совсем не работает, а только на участке вычислений задержки.
Заголовок сообщения: Re: Вопросы начинающих PIC ASM
Добавлено: Пт фев 07, 2025 20:08:33
Потрогал лапой паяльник
Карма: 8
Рейтинг сообщений: 54
Зарегистрирован: Вс мар 03, 2019 08:18:34 Сообщений: 363 Откуда: Волгоград
Рейтинг сообщения:0 Медали: 2
До этого с pic дело не имел, но тут чета решил, скачал микролаб-х с помощью впн, накидал проект а он мне на ангельском , что-то вроде у вас какой-то лицензии нема . какую иде использовать бывают ломаные подскажите?
Для практики самому для себя под ассемблером и старого mplab 8.92 достаточно... Другое дело чего посовременнее и для "работы на фирму" - но то ужшш пущай фирма обеспечивает.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения