Придётся ошибок лишних отлавливать. Проще базовую шапку для относительного режима в главный файл проекта вставить. Для gpasm минимум пара док есть. Может не для той версии, но основа в принципе одинакова. Вечерком по прохладце комп запущу да скину накопанное. Сейчас жалко компом рисковать (в комнате +31).
Еще раз предлагаю перейти на перемещаемый режим. Чтобы не грызть кактус.
Да ладно, нам маргиналам не привыкать))
BOB51 писал(а):
Относительно документации - при использовании официального дистрибутива она обязательно в комплекте идёт. Как минимум руководство по ключам командной строки...
Ага, есть параметр --mpasm-compatible. но не помогает. Пропишу CBLOCK руками попробую
Добавлено after 29 minutes 28 seconds: Не помогло
Добавлено after 38 minutes 10 seconds: Ага, понятно, дело в #define. Как прописать две команды, в доке не описано?
КРАМ я помню, что что - то было,но уже с тех пор уже шклероз достает ... Относительно дистрибутивов и документации... идем сюда: https://gputils.sourceforge.io/#Platforms там все, что требуется есть. Симпатяшный поисковичок-справочник по параметрам с картами ОЗУ/РСФ в html формате (диск:\Program Files (x86)\gputils\doc\html-help) Даже под win32... (ставится в виде каталога gputils) Ежли чего - скину в сундук комплект под win32 (для линуксов надо выбирать из длинносписка).
там вроде и плагин для мпасма мелькал.... а по набору подключаемых файлов (при беглом просмотре) почти похоже,но в гпасме еще добавлено ранее неведомых форматов. вобччемссс... там отдельные спецы - консультанты могут потребоваться. Распечатки док для детальной читки пока делать влоомушки... ... ббыыррр... с Пн янв 11, 2016 16:11:36 до сих пор не сумели верно разобраться в ситуёвине недопонимания... стареемссссшшшшсссс
Для MPLAB-a. С ним можно под MPLAB IDE gpasm использовать. Налетай))
Добавлено after 2 hours 55 minutes 16 seconds: А что в регистрах таймеров TMR0 TMR1, когда они генерируют прерывание? Вот выставил таймер бит прерывания, в следующем цикле на 0x04 - это уже он перевалил за максимум и в нолях? Если в ПП прерывания первая команда - стоп таймера, что будет после неё в регистрах таймеров? Вообще-то это неважно, так как можно считать, что он прошёл свой цикл и FF:[FF]. Но это важно, когда вручную останавливаешь TMR1 около конца счёта, и считываешь вместо FFFE, например, 02. Честно прочитал и на контроллер, и общий даташит про таймер и прерывания, и ничего про это не нашёл.
Это актуально разве что для случая, когда один отсчет таймера равен одному такту МК. Да еще в случае "генератора секунды" на основе Т1 (была апнота по данному вопросу с "хитрым приемом"). В остальном особых проблем обычно не бывает (или используется модуль CCP и/или связка T1-T2-CCP). Плюс смотрим правила чтения/записи в 16 разрядные регистры...
То есть если успел до прерывания вручную остановить таймер, то однозначно, железно он не перевалил за свою вершину? А может ведь так совпасть , что остановил его, а перед следующей инструкцией он выдаст прерывание?
Один шанс из 65536 только в одном цикле счёта, а циклов много. Или один шанс всего на 65мкс, а времени годá)) Это на самом деле большие шансы поймать такой случай.
Где-то попадался график, где таймер вырабатывает прерывание, с фронтами и проч., но найти не могу.
Это уже не вопрос таймера, а вопрос алгоритма и схемотехники проекта. Изначально задача, а уж затем подбор наиболее удачных компонентов (из имеющегося и хорошо проработанного) для её решения. Где то ПИКи, где то АВРки, где то 51е или ещё чего, а где то и внешняя "рассыруха" средней и высокой степени интеграции, микросхемы - расширители различных комплектов микропроцессоров или дополнительный МК. Это ведь творчество...
Чтобы алгоритмически и схемотехнически избежать такой ситуации, надо знать, как оно на самом деле обстоит. Какой подбор компонентов, если это мне в наследство досталось и уже дорого как память)) Я его не брошу))
Ну с внешней рассыпной или дополнительным МК я думаю проблем ни у кого не возникает. Вот и разгружаем основной МК внешней аппаратной обвязкой. регистры, счётчики, дешифраторы, спец таймеры прочую логику. Это ежли с внутренней аппаратной начинкой основного МК напряженка или чего специфичного обработать надо. А в МК уже обработанные данные скармливаем.
Скомпилилась, и даже признаки жизни подаёт, не знаю только, насколько правдиво. В одном симуляторе одно, в другом другое, в третьем совсем не работает. Если кому интересно, запустите в МПЛАБ, на 1 и 2 ногу короткие отрицательные импульсы в противофазе скважностью 50 частотой от 5 до 100Гц. Хотя МПЛАБ не может же плавно частоту менять? Или в Протеусе тогда. Результат на 11 и12 ногах.
Ого, какая популярность у архивчика))) Да оно нерабочее.
Подскажите пож-ста, как сделать, чтобы при наборе Bank0 вставлялось две команды?
Код:
#define Bank0 bcf STATUS,RP0 bcf STATUS,RP1
В этом виде вторая строка раскрывается как отдельная команда. А в первую не получилось через разные разделители вписать. Macro мутная какая-то. По определённым адресам, прямо в коде пишется, а не в шапке, вроде.
Добавлено after 2 hours 17 minutes 34 seconds: Так на флаг T0IF можно вообще не обращать внимания, пока сброшен T0IE? Он же всегда задран, если не сбрасывать его каждый цикл счёта, что было бы бессмысленно?
Добавлено after 40 minutes 27 seconds: Гляньте пож-ста, что я накосячил с инициализацией таймеров. Уже импульсит вовсю, только не совсем складно.
Добавлено 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.
В железе это в железе, а в софте это в софте. В общем, в МПЛАБе нельзя, а в ГПСИМе можно.
А какие есть способы подвесить в симуляторе процессор? Не сбросить кнопкой на MCLR, например, то есть внешним воздействием, а чтоб он сам в любом случайном месте не сбросился, а именно завис? То есть срабатывание WDT проверить? По той же кнопке завести программу в тупик, игнорируя обнуление WDT? А ещё?
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения