Вопросы начинающих PIC ASM

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15546
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Вопросы начинающих PIC ASM

Сообщение BOB51 »

Вроде
Goto $
Или попроще
Stop
Goto stop
8)
yor
Говорящий с текстолитом
Сообщения: 1676
Зарегистрирован: Сб янв 19, 2008 23:57:27

Re: Вопросы начинающих PIC ASM

Сообщение yor »

А не возбраняется ли, не будет каких негативных последствий, если код, выполняемый в прерывании, дополнительно вызывать извне, в ходе обычного выполнения? Даже если пересекутся, вроде ничего страшного не вижу навскидку.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25128
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Вопросы начинающих PIC ASM

Сообщение КРАМ »

[uquote="yor",url="/forum/viewtopic.php?p=4612804#p4612804"]ничего страшного не вижу навскидку.[/uquote]
Для этого обработчик должен быть выполнен как колбэк. То есть изолирован от проверки и сброса флагов, а так же от выхода по retfie вместо return.
yor
Говорящий с текстолитом
Сообщения: 1676
Зарегистрирован: Сб янв 19, 2008 23:57:27

Re: Вопросы начинающих PIC ASM

Сообщение yor »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4612815#p4612815"]Для этого обработчик должен быть выполнен как колбэк. То есть изолирован от проверки и сброса флагов, а так же от выхода по retfie вместо return.[/uquote]Что это за обработчик, без проверки и сброса флагов? Что он там обработает? Это получится просто ПП, по адресу вектора прерывания. Думаю, как совместить с функцией прерывания, чтобы часть её кода (не весь) отрабатывал и в прерывании, и снаружи. Можно доп. проверки использовать.


А если вручную сбросить GIE и принудительно уйти на код в прерывании, потом восстановить GIE?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25128
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Вопросы начинающих PIC ASM

Сообщение КРАМ »

[uquote="yor",url="/forum/viewtopic.php?p=4612831#p4612831"]Что это за обработчик, без проверки и сброса флагов?[/uquote]
Любезный, у меня есть к вам предложение не гнуть пальцы и не умничать, изрекая всякую смешную хрень.
Я достаточно определенно озвучил новый для вас термин - колбэк.
Это отдельная функция вызываемая из прерывания (в данном случае из прерывания, само понятие шире).
Таким образом, в колбэке нет никаких флагов и retfie. Он обычная функция без передачи аргументов и возврата значения - в лингвистике Си void Func(void).
yor
Говорящий с текстолитом
Сообщения: 1676
Зарегистрирован: Сб янв 19, 2008 23:57:27

Re: Вопросы начинающих PIC ASM

Сообщение yor »

А зачем микрочипы про АЦП (10 разряд 12f675) пишут про время выбора, подготовки и проч? Не пойму, что ему надо обеспечить, если о готовности сигнализирует бит запуска GO/DONE? Выбрал из таблицы делитель тактового сигнала, и все дела?
Аватара пользователя
valentinovich
Держит паяльник хвостом
Сообщения: 999
Зарегистрирован: Ср окт 04, 2017 20:47:40

Re: Вопросы начинающих PIC ASM

Сообщение valentinovich »

yor, изините, но читаю и вижу, что у вас какое-то постоянное искание "коня в вакууме". Просто включите свою логику и блюдите логику процесса. Всё!
А то получается типа: "Подскажите, мне достать деньги из кошелька за покупку до оплаты в кассу или в момент оплаты и что если не хватит мелочи, менять купюру? Какие при этом могут быть проблемы?" :))
Чего-то смахивает на желание просто поболтать, а не думать. :(
yor писал(а):если код, выполняемый в прерывании, дополнительно вызывать извне, в ходе обычного выполнения
Да пожалуйста, только войдите туда (как в П/П) с неким признаком.
yor писал(а):Можно доп. проверки использовать.
Да. И выход из этой П/П в некоем месте предполагаемого выхода, по проверке признака. Если признака нет, то значит идёт выполнение прерывания.
А ещё есть варианты рекурсивных кусков программ. Там вы без пространственного воображения процесса вообще заманаетесь.
Могу только посоветовать вам рисовать себе подробное графическое представление течения процесса и попытаться пройтись по нему рассуждая в разных возможных вариантах. Уверяю, что тогда множество вопросов отпадёт само собой.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25128
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Вопросы начинающих PIC ASM

Сообщение КРАМ »

[uquote="yor",url="/forum/viewtopic.php?p=4612959#p4612959"]А зачем ....все дела?[/uquote]
При выборе интервала между преобразоапниями нужно помнить, что кроме времени преобразования требуется время на захват сигнала - эквизишн тайм. Это время на заряд конденсатора УВХ. Оно зависит от емкости этого конденсатора в конкретном МК, от сопротивления открытого ключа УВХ в конкретном МК, и от внутреннего сопротивления источника сигнала подаваемого на вход АЦП.
На эту тему в даташите в главе АЦП есть целый раздел.
yor
Говорящий с текстолитом
Сообщения: 1676
Зарегистрирован: Сб янв 19, 2008 23:57:27

Re: Вопросы начинающих PIC ASM

Сообщение yor »

[uquote="valentinovich",url="/forum/viewtopic.php?p=4613040#p4613040"]yor, изините, но читаю и вижу, что у вас какое-то постоянное искание "коня в вакууме". Просто включите свою логику и блюдите логику процесса. Всё![/uquote]Нет уж, это вы тут меня извините)) Я новичок-новатор, и вижу слишком много возможностей, так лучше спросить, чем потратив время, в тупик упереться. Мотает, да, включаю стабилизатор.
Аватара пользователя
Steppe
Друг Кота
Сообщения: 4812
Зарегистрирован: Вс сен 17, 2017 17:44:21
Откуда: 51.7727, 55.0988. Высота над морем 107 м. До границы 161 км.

Re: Вопросы начинающих PIC ASM

Сообщение Steppe »

[uquote="yor",url="/forum/viewtopic.php?p=4613073#p4613073"]Я новичок-новатор,[/uquote] Очень смешно
Аватара пользователя
valentinovich
Держит паяльник хвостом
Сообщения: 999
Зарегистрирован: Ср окт 04, 2017 20:47:40

Re: Вопросы начинающих PIC ASM

Сообщение valentinovich »

yor писал(а):Я новичок-новатор и вижу слишком много ...
Да уж. :( Но зато как круто завернул. :)
yor писал(а):... вижу слишком много возможностей, так лучше спросить, чем потратив время, в тупик упереться
Сорри, но ковыряетесь в (видимо никем акромя вас незамеченном :)) ) малосущественном и мало принципиальном, главное вы упускаете.
Посмею повториться - учитесь развивать последовательную логику, тогда и "тупиков" не будет.
Потом помнить про написанное в даташите, отделяя справочную информацию от необходимой.
Ну и как один из основных принципов составления логики программы - наверное всёже в прерываниях не следует делать ничего без чего в данном случае можно там обойтись (т.е. мин. "телодвижений" для фиксации события), перенеся всё "лишнее" оттуда в основную программу. А не наоборот, перегружая обработчик прерывания, да ещё так, :shock: что основная программа оттуда может чегонить почерпнуть. Т.е. это есть грубейшая ошибка.
Ну и напоследок позволю совет - прекращайте заниматься "новаторством", а учитесь правильно строить путь необходимого вам процесса. И опять напомню - т.к. у вас явно с пространственным представлением не очень, вам показано строить графическое представление хода программы. И для ассемблерного написания оной достаточно подробный. Как бонус ошибки будут исключены по определению. При этом вы себе и время сэкономите (тема уже за месяц перевалила) и спрашивать будет практически почти нечего.
Но путь и каким советам следовать выбирать вам. Удачи. Засим Изображение
yor
Говорящий с текстолитом
Сообщения: 1676
Зарегистрирован: Сб янв 19, 2008 23:57:27

Re: Вопросы начинающих PIC ASM

Сообщение yor »

Так-то я программу опережения зажигания давно уже написал (то есть, недавно), в симуляторе работает. Можете проверить)) Описание внутри.
pic-uoz-029.asm
(28.07 КБ) 192 скачивания
А чтобы проверить в железе, приходится с нуля делать генератор сигналов, подходящего не нашлось, чем и занимаюсь. Засим откланиваюсь, замечания учту))

Насчёт графического представления тоже подходящего нет, драконы там всякие, и прочее. Больше следить приходится за офррмлением, чем за сутью. Обхожусь текстовым.
stage-rolling012.txt
(1.88 КБ) 283 скачивания
yor
Говорящий с текстолитом
Сообщения: 1676
Зарегистрирован: Сб янв 19, 2008 23:57:27

Re: Вопросы начинающих PIC ASM

Сообщение yor »

Что здесь имеют в виду:

Код: Выделить всё

The TMR1H:TTMR1L register pair and the TMR1IF bit should be cleared before enabling interrupts.
Это нужно перед включением TMR1IE или и перед GIE и PEIE? "Before enabling interrupts" - насколько перед, за несколько команд ДО, в том числе перед CALL, удовлетворит требованиям?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25128
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Вопросы начинающих PIC ASM

Сообщение КРАМ »

Просто перед тем, как разрешить прерывание. Сначала сбросили таймер , потом флаг и лишь затем разрешили прерывание
yor
Говорящий с текстолитом
Сообщения: 1676
Зарегистрирован: Сб янв 19, 2008 23:57:27

Re: Вопросы начинающих PIC ASM

Сообщение yor »

То есть принципиальным тут является очистка таймера, не сбросить флаг перед разрешением прерываний - это не будет работать, по логике вещей. Именно 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 сам при выходе взведётся. По даташиту

Код: Выделить всё

        CLRF    T1CON           ; Stop Timer1, Internal Clock Source, ; T1 oscillator disabled, prescaler = 1:1
        CLRF    TMR1H           ; Clear Timer1 High byte register
        CLRF    TMR1L           ; Clear Timer1 Low byte register
        CLRF    INTCON          ; Disable interrupts
        Bank1
        CLRF    PIE1            ; Disable peripheral interrupts
        Bank0
        CLRF    PIR1            ; Clear peripheral interrupts Flags
        movfw   _th
        movwf   TMR1H           ; импульс, низкого уровня
        movfw   _tl
        movwf   TMR1L
        bsf     T1CON,T1CKPS0   ; prescaler 1:2
        bsf     T1CON,TMR1ON    ; — TMR1GE T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON
        Bank1
        bsf     PIE1,TMR1IE
        Bank0
        bsf INTCON,PEIE
yor
Говорящий с текстолитом
Сообщения: 1676
Зарегистрирован: Сб янв 19, 2008 23:57:27

Re: Вопросы начинающих PIC ASM

Сообщение yor »

С тоской вспоминаю старую советскую документацию, где всё чётко стройно однозначно и доходчиво(( А не вот эти вот шатания-мотания, эрраты и прочие домыслы.
Справедливости ради заметить, что тогда техника проще была, конечно.
Аватара пользователя
Steppe
Друг Кота
Сообщения: 4812
Зарегистрирован: Вс сен 17, 2017 17:44:21
Откуда: 51.7727, 55.0988. Высота над морем 107 м. До границы 161 км.

Re: Вопросы начинающих PIC ASM

Сообщение Steppe »

[uquote="yor",url="/forum/viewtopic.php?p=4616130#p4616130"]С тоской вспоминаю старую советскую документацию, где всё чётко стройно однозначно и доходчиво(( А не вот эти вот шатания-мотания, эрраты и прочие домыслы.
Справедливости ради заметить, что тогда техника проще была, конечно.[/uquote]
"Новатор" заныл, мозгов не хватает осилить документацию на древние PIC. С тоской вспоминает паспорта на комплектующие времен СССР.
yor
Говорящий с текстолитом
Сообщения: 1676
Зарегистрирован: Сб янв 19, 2008 23:57:27

Re: Вопросы начинающих PIC ASM

Сообщение yor »

По какой причине может не работать в железе, когда в полном объёме работает в симуляторе? Никаких АЦП тут нет. Только вычисления и ногодрыг по таймерам. И в железе не совсем не работает, а только на участке вычислений задержки.
Вложения
pic-uoz-030-ton2.asm
(27.78 КБ) 16052 скачивания
Аватара пользователя
do-vitas
Потрогал лапой паяльник
Сообщения: 363
Зарегистрирован: Вс мар 03, 2019 08:18:34
Откуда: Волгоград

Re: Вопросы начинающих PIC ASM

Сообщение do-vitas »

До этого с pic дело не имел, но тут чета решил, скачал микролаб-х с помощью впн, накидал проект а он мне на ангельском , что-то вроде у вас какой-то лицензии нема . какую иде использовать бывают ломаные подскажите?
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15546
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Вопросы начинающих PIC ASM

Сообщение BOB51 »

Для практики самому для себя под ассемблером и старого mplab 8.92 достаточно...
Другое дело чего посовременнее и для "работы на фирму" - но то ужшш пущай фирма обеспечивает.
:dont_know:
Ответить

Вернуться в «PIC»