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

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

Сообщение BOB51 »

Придётся ошибок лишних отлавливать.
Проще базовую шапку для относительного режима в главный файл проекта вставить.
8)
Для gpasm минимум пара док есть.
Может не для той версии, но основа в принципе одинакова.
Вечерком по прохладце комп запущу да скину накопанное.
Сейчас жалко компом рисковать (в комнате +31).
8)
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25560
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

[uquote="BOB51",url="/forum/viewtopic.php?p=4601879#p4601879"]Придётся ошибок лишних отлавливать.[/uquote]
Каких конкретно ошибок?
Реклама
yor
Мудрый кот
Сообщения: 1710
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4601868#p4601868"]Еще раз предлагаю перейти на перемещаемый режим. Чтобы не грызть кактус.[/uquote]Да ладно, нам маргиналам не привыкать))
BOB51 писал(а):Относительно документации - при использовании официального дистрибутива она обязательно в комплекте идёт.
Как минимум руководство по ключам командной строки... :tea:
Ага, есть параметр --mpasm-compatible. но не помогает. Пропишу CBLOCK руками попробую

Добавлено after 29 minutes 28 seconds:
Не помогло

Добавлено after 38 minutes 10 seconds:
Ага, понятно, дело в #define. Как прописать две команды, в доке не описано?

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

#define Bank0<->bcf STATUS,RP0
------>bcf STATUS,RP1
#define Bank1<->bsf STATUS,RP0
<------>bcf STATUS,RP1
#define Bank2<->bcf STATUS,RP0
<------>bsf STATUS,RP1
#define Bank3<->bsf STATUS,RP0
<------>bsf STATUS,RP1
Друг Кота
Аватара пользователя
Сообщения: 15690
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

КРАМ
я помню, что что - то было,но уже с тех пор уже шклероз достает ...
8)
Относительно дистрибутивов и документации...
идем сюда:
https://gputils.sourceforge.io/#Platforms
там все, что требуется есть.
Симпатяшный поисковичок-справочник по параметрам с картами ОЗУ/РСФ в html формате
(диск:\Program Files (x86)\gputils\doc\html-help)
Даже под win32...
(ставится в виде каталога gputils)
:hunger:
Ежли чего - скину в сундук комплект под win32 (для линуксов надо выбирать из длинносписка).
gpasm.pdf
(50.2 КБ) 257 скачиваний
gputils.pdf
(238.79 КБ) 250 скачиваний
8)
Последний раз редактировалось BOB51 Сб июл 13, 2024 13:44:33, всего редактировалось 1 раз.
Реклама
Эиком - электронные компоненты и радиодетали
yor
Мудрый кот
Сообщения: 1710
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

Это у меня есть, но спасибо за напоминание, буду прочёсывать)) И чего я полез в mpasm, не иначе, бес попутал))
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15690
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

там вроде и плагин для мпасма мелькал....
а по набору подключаемых файлов (при беглом просмотре) почти похоже,но в гпасме еще добавлено ранее неведомых форматов.
вобччемссс... там отдельные спецы - консультанты могут потребоваться.
Распечатки док для детальной читки пока делать влоомушки...
:sleep:
...
ббыыррр...
с Пн янв 11, 2016 16:11:36 до сих пор не сумели верно разобраться в ситуёвине недопонимания...
стареемссссшшшшсссс
:tea:
:beer:
Реклама
yor
Мудрый кот
Сообщения: 1710
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

[uquote="BOB51",url="/forum/viewtopic.php?p=4601919#p4601919"]там вроде и плагин для мпасма мелькал.[/uquote]
Для MPLAB-a. С ним можно под MPLAB IDE gpasm использовать. Налетай))

Добавлено after 2 hours 55 minutes 16 seconds:
А что в регистрах таймеров TMR0 TMR1, когда они генерируют прерывание? Вот выставил таймер бит прерывания, в следующем цикле на 0x04 - это уже он перевалил за максимум и в нолях? Если в ПП прерывания первая команда - стоп таймера, что будет после неё в регистрах таймеров? Вообще-то это неважно, так как можно считать, что он прошёл свой цикл и FF:[FF]. Но это важно, когда вручную останавливаешь TMR1 около конца счёта, и считываешь вместо FFFE, например, 02. Честно прочитал и на контроллер, и общий даташит про таймер и прерывания, и ничего про это не нашёл.
Друг Кота
Аватара пользователя
Сообщения: 15690
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Это актуально разве что для случая, когда один отсчет таймера равен одному такту МК.
Да еще в случае "генератора секунды" на основе Т1 (была апнота по данному вопросу с "хитрым приемом").
В остальном особых проблем обычно не бывает (или используется модуль CCP и/или связка T1-T2-CCP).
Плюс смотрим правила чтения/записи в 16 разрядные регистры...
:roll:
yor
Мудрый кот
Сообщения: 1710
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

То есть если успел до прерывания вручную остановить таймер, то однозначно, железно он не перевалил за свою вершину?
А может ведь так совпасть , что остановил его, а перед следующей инструкцией он выдаст прерывание?

Один шанс из 65536 только в одном цикле счёта, а циклов много. Или один шанс всего на 65мкс, а времени годá)) Это на самом деле большие шансы поймать такой случай.

Где-то попадался график, где таймер вырабатывает прерывание, с фронтами и проч., но найти не могу.
Друг Кота
Аватара пользователя
Сообщения: 15690
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Это уже не вопрос таймера, а вопрос алгоритма и схемотехники проекта. Изначально задача, а уж затем подбор наиболее удачных компонентов (из имеющегося и хорошо проработанного) для её решения.
Где то ПИКи, где то АВРки, где то 51е или ещё чего, а где то и внешняя "рассыруха" средней и высокой степени интеграции, микросхемы - расширители различных комплектов микропроцессоров или дополнительный МК.
Это ведь творчество...
8)
yor
Мудрый кот
Сообщения: 1710
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

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

Сообщение BOB51 »

Ну с внешней рассыпной или дополнительным МК я думаю проблем ни у кого не возникает.
:wink:
Вот и разгружаем основной МК внешней аппаратной обвязкой.
регистры, счётчики, дешифраторы, спец таймеры прочую логику.
Это ежли с внутренней аппаратной начинкой основного МК напряженка или чего специфичного обработать надо.
А в МК уже обработанные данные скармливаем.
8)
yor
Мудрый кот
Сообщения: 1710
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

Скомпилилась, и даже признаки жизни подаёт, не знаю только, насколько правдиво. В одном симуляторе одно, в другом другое, в третьем совсем не работает. Если кому интересно, запустите в МПЛАБ, на 1 и 2 ногу короткие отрицательные импульсы в противофазе скважностью 50 частотой от 5 до 100Гц. Хотя МПЛАБ не может же плавно частоту менять? Или в Протеусе тогда. Результат на 11 и12 ногах.
pic-uoz.tar.7z
(22.87 КБ) 3780 скачиваний
yor
Мудрый кот
Сообщения: 1710
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

Ого, какая популярность у архивчика))) Да оно нерабочее.

Подскажите пож-ста, как сделать, чтобы при наборе Bank0 вставлялось две команды?

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

#define Bank0 bcf STATUS,RP0
                      bcf STATUS,RP1
В этом виде вторая строка раскрывается как отдельная команда. А в первую не получилось через разные разделители вписать.
Macro мутная какая-то. По определённым адресам, прямо в коде пишется, а не в шапке, вроде.

Добавлено after 2 hours 17 minutes 34 seconds:
Так на флаг T0IF можно вообще не обращать внимания, пока сброшен T0IE? Он же всегда задран, если не сбрасывать его каждый цикл счёта, что было бы бессмысленно?

Добавлено after 40 minutes 27 seconds:
Гляньте пож-ста, что я накосячил с инициализацией таймеров. Уже импульсит вовсю, только не совсем складно.
simulide.tar.7z
(24.69 КБ) 233 скачивания
Друг Кота
Аватара пользователя
Сообщения: 15690
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Макрос делать надо.
Собственно так (макросами) добавляются "псевдокоманды" в мпасме.
То же должно быть и в gpasm...
:roll:
yor
Мудрый кот
Сообщения: 1710
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

Не пойму никак, если MCLR висит на выводе, через R на питание, как надо задать __CONFIG:
1) _MCLRE_ON
2) _MCLRE_OFF
??
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

_MCLRE_ON - вход как Reset
Контактная информация:
yor
Мудрый кот
Сообщения: 1710
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

Можно ли в MPLAB 8.92 сделать две таких противофазных последовательности, прилагаемых к выводам? Я , конечно, читаю доку, но пока не очевидно.
Спойлерком. циклы, уровень
{ 175000, 1,
5000, 0,
125000, 1,
4500, 0,
100000, 1,
4000, 0,
75000, 1,
3000, 0,
53000, 1,
2000, 0,
40000, 1,
1600, 0,
31000, 1,
1200, 0,
25000. 1.
1000. 0.
20000, 1,
800, 0,
17000, 1,
680, 0,
15000, 1,
600, 0,
12000, 1,
480, 0,
10500, 1,
400, 0,
12000, 1,
480, 0,
15000, 1,
600, 0,
17000, 1,
680, 0,
20000, 1,
800, 0,
25000, 1,
1000, 0,
30000, 1,
1200, 0,
40000, 1,
1600, 0,
53000, 1,
2000, 0,
75000, 1,
3000, 0,
100000, 1,
4000, 0,
125000, 1,
5000, 0, }
Добавлено after 11 minutes 10 seconds:
Я вижу, что это "Clock Stimulus", но там вроде только два фиксированных повторяющихся значения, или можно всю эту таблицу вбить, чтобы уровни на ножках были разной длительности?

Добавлено after 26 minutes 56 seconds:
Ага, это File Stimulus. Вот этот пример только в ранних версиях упоминается, а в поздних нет такого. Будет в 8.92 работать?

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

CYCLE RB1 RB0
 20 0 0
 41 1 0 ; Установить высокий уровень сигнала на RB1
 52 0 1 ; Установить высокий уровень сигнала на RB0, низкий на RB1
 55 1 1
 60 0 0
 65 1 0 ; Переключить RB1, тогда ….
 76 0 1 ; …. переключить RB0.
Друг Кота
Аватара пользователя
Сообщения: 15690
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

А что мешает "универсальную макетку" в железе сделать?
:roll:
yor
Мудрый кот
Сообщения: 1710
Зарегистрирован: Сб янв 19, 2008 23:57:27

Сообщение yor »

В железе это в железе, а в софте это в софте. В общем, в МПЛАБе нельзя, а в ГПСИМе можно.

А какие есть способы подвесить в симуляторе процессор? Не сбросить кнопкой на MCLR, например, то есть внешним воздействием, а чтоб он сам в любом случайном месте не сбросился, а именно завис? То есть срабатывание WDT проверить?
По той же кнопке завести программу в тупик, игнорируя обнуление WDT? А ещё?
Ответить

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