Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Re: MPLAB X IDE

Чт дек 16, 2021 21:08:38

Так я ничего и не резервирую.
Я инициализиркю указатель на адрес регистра.
В старом лабе он сразу виден в окне регистров под именем которое я ему дал.
В новом лабе так не происходит.
Так как за это отвечает препроцессор, клпать надо в заголовочных файлах.
Непосредственно из кода define и equ результата не даёт.

Re: MPLAB X IDE

Чт дек 16, 2021 21:55:48

Так я ничего и не резервирую.
Я инициализиркю указатель на адрес регистра.

Вы ничего не инициализируете. Вы просто присваиваете имя константе. Поэтому ассемблер и среда не считают эти имена ни памятью, ни переменными.
И не надо фантазировать. Нужно просто открыть мануал на ассемблер и прочесть в нем как резервируется память.
Резервируется она ТОЛЬКО В ПЕРЕМЕЩАЕМОМ РЕЖИМЕ директивой ассемблера udata.
Синтаксис выглядит так:
Код:
com_var   udata 0x20
currPeltier         res 2
setTemp         res 2
tempRad         res 2
tempPeltier      res 2
tempBox         res 2
startTimer         res 1

      udata_shr
flags         res 1
;----------
data_ready   equ   0
two_sec_req   equ   1
first_time      equ   2
alarm_req      equ   3
;----------
muxADC         res 1
muxDataADC      res 1


Этот пример из реального проекта.
com_var udata 0x20 содержит имя секции неинициализированных данных com_var (выбирается произвольно) и начальный адрес 0х20.
udata_shr является директивой выделения общего для всех банков сегмента памяти.
директива res резервирует количество байт указанных после нее. res 1 - один байт.
tempBox res 2 резервирует 2 байта. Обращение к ним в коде будет как tempBox и tempBox+1

Re: MPLAB X IDE

Чт дек 16, 2021 23:45:03

И я не нашёл в ассемблере операнда или дерективы res
Так же нет такой дерективы udata
Мы вобще про какой ассемблер ведём речь?
Я про pic-as
Я создаю прямой указатель на регистр данных
COUNT EQU 0x10h
Далее использую этот COUNT как указатель в коде в место адреса, стандартный приём, во всех даташитах он как пример используется.
Всё прекрасно работает и в старом мплабе и новом.
В новом я естественно делаю этот указатель в нужном псекте.
PSECT udata,reloc = 10h,abs,ovrld
COUNT EQU 0x10h
Всё прекрасно работает, но метка на адрес не отображается в окне файловых регистров.
Вот и всё, просто неудобно.

Добавлено after 33 minutes 24 seconds:
Спасибо ответившим котам.
В старом и новом мплабе ассемблеры немного разные.
Там много отличий как раз по выделению памяти.
Скорее всего я не правильно работаю с памятью.
Пойду перечитввать весь мануал подробно.

Re: MPLAB X IDE

Пт дек 17, 2021 09:02:16

Я про pic-as
Я создаю прямой указатель на регистр данных
COUNT EQU 0x10h
Далее использую этот COUNT как указатель в коде в место адреса, стандартный приём, во всех даташитах он как пример используется.
Всё прекрасно работает и в старом мплабе и новом.

Тююю..., милейший!
Да вы оригинал. Причем тут старый/новый MPLAB?
Какие вы называете старым или новым?
Под "старым" MPLAB называют СРЕДУ РАЗРАБОТКИ (MPLAB IDE) версии 8.92 и ниже. А под "новым" - версию X (MPLABX IDE).
Вы же пытаетесь говорить об АССЕМБЛЕРЕ. Ассемблер не имеет отношения к среде разработки.
У Микрочипа для 8-битных МК семейства PIC есть ДВА ассемблера: mpasm (mpasmx) и pic-as. Последней версией СРЕДЫ содержащей в своем пакете установки mpasmx была MPLABX IDE ver. 5.35. Версии 5.45 и последняя 5.50 уже не имеют старого ассемблера mpasm (mpasmx) - Микрочип перестал его поддерживать. Вместо него надлежит использовать pic-as, который является ЧАСТЬЮ С-компилятора XC8 и входит в его пакет установки.
Синтаксис этих ассемблеров радикально отличается.
В pic-as переменные резервируются в секции udata, но синтаксис выделения памяти выглядит так:
Код:
name_var:       DS 1

DS - директива ассемблера выделяющая байты ОЗУ (Reserves storage). В мануале обозначена в таблице директив.
Однако непонятно зачем вам этот геморрой? С какой целью вы перешли на версии среды не поддерживающие mpasmx? У вас применяются какие то суперновые чипы?
Но даже если вы это сделали осмысленно, нужно отдавать себе отчет в том, что в сложившейся ситуации нет никакого смысла объявлять переменные в асм-файле. Проще это сделать в Си, а код можно писать на АСМе. У вас будет смешанный проект.

Re: MPLAB X IDE

Пт дек 17, 2021 14:10:24

В pic-as переменные резервируются в секции udata, но синтаксис выделения памяти выглядит так:
Код:
name_var:       DS 1

DS - директива ассемблера выделяющая байты ОЗУ (Reserves storage). В мануале обозначена в таблице директив.
Однако непонятно зачем вам этот геморрой? С какой целью вы перешли на версии среды не поддерживающие mpasmx? У вас применяются какие то суперновые чипы?
Но даже если вы это сделали осмысленно, нужно отдавать себе отчет в том, что в сложившейся ситуации нет никакого смысла объявлять переменные в асм-файле. Проще это сделать в Си, а код можно писать на АСМе. У вас будет смешанный проект.


Перешёл потому что старый на линуксе не работает.

Пробоовал и DB и DS и DABS
Не получается.

Мне для отладки нужно видеть что пишется в регистры, а когда они безымянные то сложно визуально выделать нужный.
Когда их будет десяток, это будет просто ад.
В старом мплабе, который с ассемблером mpasm эти метки появлялись автоматически после запуска дебагера.
А в новом теперь такого нет.
Вот скрин
Изображение
Последний раз редактировалось andrey13 Пт дек 17, 2021 14:26:41, всего редактировалось 2 раз(а).

Re: MPLAB X IDE

Пт дек 17, 2021 14:16:27

PSECT udata,reloc = 10h,abs,ovrld

Я так понимаю, эта специфичная строчка как раз из этого самого нового pic-as. Что она означает и где-нибудь вообще есть полноценный документ по этому асму (вроде известного mpasm.pdf) ?

Re: MPLAB X IDE

Пт дек 17, 2021 14:19:10

PSECT udata,reloc = 10h,abs,ovrld

Я так понимаю, эта специфичная строчка как раз из этого самого нового pic-as. Что она означает и где-нибудь вообще есть полноценный документ по этому асму (вроде известного mpasm.pdf) ?


Вот
Вложения
MPLAB XC8 PIC Assembler User's Guide 50002974A.pdf
(681.11 KiB) Скачиваний: 868

Re: MPLAB X IDE

Пт дек 17, 2021 14:24:02

Перешёл потому что старый на линуксе не работает.

Не выдумывайте. Версия 5.35 работает с Линуксом.

Re: MPLAB X IDE

Пт дек 17, 2021 14:30:16

Что-то я не пойму. Заглянул сейчас в папку с установленным MPLAB X, а там есть папочка MPASM Suite. Всё есть, всё устанавливается....

Re: MPLAB X IDE

Пт дек 17, 2021 14:33:59

Версия у вас какая?

Re: MPLAB X IDE

Пт дек 17, 2021 14:45:37

Перешёл потому что старый на линуксе не работает.

Не выдумывайте. Версия 5.35 работает с Линуксом.


Не знал, надо попробовать.
Тем не менее, теперь придётся жить с новым ассемблером, и всё равно переходить на новую среду.
Тем более новый ассемблер хорош, мне нравится их фишка с псектами.

У меня один и тот же код в обоих средах.
И вот такое мальенькое неудобство в новой среде.

Re: MPLAB X IDE

Пт дек 17, 2021 15:36:51

....
Тем не менее, теперь придётся жить с новым ассемблером, и всё равно переходить на новую среду ......

Придётся? Это ещё кто так сказал? Должны быть какие-то веские причины.

Если, например, говорить конкретней - вот, скажем, сижу я на 8.92 и пишу под 18f46k22...
Вопрос: есть хоть один весомый аргумент, чтобы переехать на pic-as? Как именно он упростит мне задачу, сократит время.....?

Re: MPLAB X IDE

Пт дек 17, 2021 15:41:04

Не, я отказался в новых 8-битных чипах от чистого асма. Либо Си, либо смешанный код.
А старые чипы, где написано на mpasmx, я поддерживаю на версии 5.35.

Re: MPLAB X IDE

Пт дек 17, 2021 16:25:34

Дело в том что вы уже крутые коты и давно сидите на микроконтррллерах, у вас уже всё устоялось, вы познали дзен.
Я только второй месяц как начал их изучать, а если ты новичёк то зачем разрываться на несколько сред.
Если ты с нуля, то лучше взять самую свежую среду, она поддерживает все контроллеры от самых старых до самых новых.
И ассемблер тоже без разницы какой изучать, если нулевой уровень, логично изучить тот который в самой свежей среде, он же скорее всего и будет основным на долгое время.

У меня было так, мне отдали ноубук где стоит какая то предыдущая версия лаба, где mpasm ассемблер.
Я что то там пытался делать.
Ноутбук попросили вернуть.
Я пытался на домашнем компе под вайном в линуксе запустить такую же как на ноутбуке, у меня что то не получилось (я думал что мплаб только под винду).
Я зашёл на сайт микрочипа и скачал последний лаб на линукс.
Установил и теперь на нём.

В принципе всё устаривает, нет меток в эмуляторе, ну и ладнно, не смертельно, буду смотреть регистры данных по их адресам, делов то.

Re: MPLAB X IDE

Пт дек 17, 2021 21:12:35

Версия у вас какая?
5.45

Re: MPLAB X IDE

Пт дек 17, 2021 22:43:13

... либо смешанный код. ...
asm вставки?
А допустим, если наоборот, - в основе асм, но некоторые функции делать на си, компилировать и уже полученный фрагмент вставлять. Такое вообще практикуется, или это плохая идея?

Re: MPLAB X IDE

Сб дек 18, 2021 06:33:27

asm вставки?

Нет, не вставки. Речь идет о совместной компиляции .c/.h и .s/.inc файлов в любом их соотношении.
Версия у вас какая?
5.45

Мне кажется вы что то путаете. Вот папка установленного 5.45:
Изображение Изображение Изображение
А вот папка более ранних версий. Они даже в другую папку Винды устанавливаются:
Изображение Изображение Изображение

Re: MPLAB X IDE

Сб дек 18, 2021 08:20:08

Вот, у мну на работе :

Но тут у меня 5.35, давно не обновлялся.
Всё в одной папке - "C:\Program Files (x86)\Microchip". Трудно здесь что-то напутать.
Дома тоже самое. Вроде бы :roll: :)))

Re: MPLAB X IDE

Сб дек 18, 2021 09:34:56

Так о том и речь, что 5.35 содержит MPASM, а 5.45 уже НЕ содержит.
И, начиная с версии 5.45, все инструменты Микрочипа попадают в папку Program Files, а не Program Files (x86).

В принципе всё устаривает, нет меток в эмуляторе, ну и ладнно, не смертельно, буду смотреть регистры данных по их адресам, делов то.

Есть такое обоснованное мнение, что вы не определили свои переменные как ГЛОБАЛЬНЫЕ.
Добавьте сверху директиву global var1, var2, var3 , заменив имена переменных на свои и жизнь у вас наладится... :tea: :)))
Изображение

Re: MPLAB X IDE

Сб дек 18, 2021 12:46:11

Что-то я не пойму. Заглянул сейчас в папку с установленным MPLAB X, а там есть папочка MPASM Suite. Всё есть, всё устанавливается....

Вы вот этой своей формулировкой ввели в заблуждение. Я тогда решил, что у вас в папке mplabx папка mpasm suite. А ныне фотки взглянул, а оказывается всё как обычно....... я бы вам сразу тогда написал, что папку mpasm suite создал 8-й mplab, к иксу она не имеет отношения (у него там своя есть mpasmx)
Ответить