Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Оперативно отключать/включать warming'и возможно ?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Vlad219i
В проекте есть конструкции типа:
Код
.macro    msearchinrxbuffer
    ldi    zh, high(string<<1)
    ldi    zl, low(string<<1)
    rcall    searchinrxbuffer
    rjmp    theend
string:
    .db    @0, $00
theend:
.endmacro


Это к примеру, а в общем случае - просто строки .db произвольной длины в .cseg.
При компиляции, если строка имеет нечетное количество символов, avrasm вывешивает warning ".cseg .db misalignment - padding zero byte" - ну то есть ведет себя, как положено. Но меня это немножко не устраивает, хочется вот именно этот warning отключить, отвлекает он (их несколько десятков, на самом деле).
Делал несколько подходов с разных сторон - что-то никак, но надежда теплится... :-)
Это вообще возможно, как думаете ?
Отключение вообще всех сообщений (-v0) - типичное не то.

Да - студия свежая, конечно. Avrasm2 и всё такое...
ILYAUL
Цитата(Vlad219i @ May 31 2008, 11:49) *
Делал несколько подходов с разных сторон - что-то никак, но надежда теплится... :-)
Это вообще возможно, как думаете ?
Отключение вообще всех сообщений (-v0) - типичное не то.

Да - студия свежая, конечно. Avrasm2 и всё такое...

В режиме DEBUG - правая клавиша мыши по полю Message - затем по галочке , но уже левой.

Да , прибудет с Вами сила... wink.gif
Vlad219i
Цитата(ILYAUL @ May 31 2008, 13:45) *
В режиме DEBUG - правая клавиша мыши по полю Message - затем по галочке , но уже левой.

Да , прибудет с Вами сила... wink.gif


У меня это почему-то _вообще_ не работает и на рабочем, и на домашнем компе. Кроме того - насколько я понимаю, это отключает показ всех варнингов, а мне надо отключить некоторые.
Были мысли добавлять в строку лишний байт по необходимости, но я не нашел способа получить численное выражение длины строки (со STRLEN у меня не задалось почему-то)...
ILYAUL
Цитата(Vlad219i @ Jun 2 2008, 12:23) *
У меня это почему-то _вообще_ не работает и на рабочем, и на домашнем компе. Кроме того - насколько я понимаю, это отключает показ всех варнингов, а мне надо отключить некоторые.
Были мысли добавлять в строку лишний байт по необходимости, но я не нашел способа получить численное выражение длины строки (со STRLEN у меня не задалось почему-то)...


Вообще-то существует такое правило , если число чисел при записи в строке не чётное то Вы просто добавляете $00

.db 01,01,04,00,05,00,$FF - нужные значения + ,00 и message не будет

Собственно за Вас это делает любой отладчик , но при этом предупреждает Вас , а при программировании в МК - лишний байт выбрасывается ( уточню)
Vlad219i
Цитата(ILYAUL @ Jun 2 2008, 15:47) *
Вообще-то существует такое правило , если число чисел при записи в строке не чётное то Вы просто добавляете $00

.db 01,01,04,00,05,00,$FF - нужные значения + ,00 и message не будет

Собственно за Вас это делает любой отладчик , но при этом предупреждает Вас , а при программировании в МК - лишний байт выбрасывается ( уточню)


Да это я прекрасно понимаю и об этом и писал в исходном. :-)
Дело в том, что оч не хочется каждую мессагу (=строку .db) руками подгонять под четное количество байт...
ILYAUL
Цитата(Vlad219i @ Jun 2 2008, 17:54) *
Да это я прекрасно понимаю и об этом и писал в исходном. :-)
Дело в том, что оч не хочется каждую мессагу (=строку .db) руками подгонять под четное количество байт...

Тогда остаётся единственный путь - переписать заново программу AVRSTUDIO
smac
Есть вариант переписать макрос с проверкой параметра @0 на четность, и в случае нечетности добавлять байт. Геморно и маразматично, зато варнингов не будет smile.gif
Щас нет под рукой ни студии, ни доков, но если подождете до завтрашнего вечера - попробую написать
ILYAUL
Цитата(smac @ Jun 2 2008, 23:10) *
Есть вариант переписать макрос с проверкой параметра @0 на четность, и в случае нечетности добавлять байт. Геморно и маразматично, зато варнингов не будет smile.gif
Щас нет под рукой ни студии, ни доков, но если подождете до завтрашнего вечера - попробую написать

А зачем ? Studio сама его добавляет - и не работе не сказывается
Vlad219i
Цитата(smac @ Jun 2 2008, 23:10) *
Есть вариант переписать макрос с проверкой параметра @0 на четность, и в случае нечетности добавлять байт. Геморно и маразматично, зато варнингов не будет smile.gif
Щас нет под рукой ни студии, ни доков, но если подождете до завтрашнего вечера - попробую написать


Я пробовал - что-то никак... STRLEN не работает с @0, ей нужно именно строку в первозданном виде. Но если у Вас получится - респект. Жжжжду. :-)

Цитата(ILYAUL @ Jun 2 2008, 23:18) *
А зачем ? Studio сама его добавляет - и не работе не сказывается


А зачем - это я в исходном писал, ага. Достаточно прочитать два-три раза.
smac
Цитата(Vlad219i @ Jun 3 2008, 11:22) *
Я пробовал - что-то никак... STRLEN не работает с @0, ей нужно именно строку в первозданном виде. Но если у Вас получится - респект. Жжжжду. :-)

2 Vlad219i
После внимательного прочтения темы понял, что @0 строковый параметр, поэтому задача сильно усложняется, да и времени маловато. Но буду пытаться по возможности. Если тема еще актуальна дайте знать.
Vlad219i
Цитата(smac @ Jun 3 2008, 21:52) *
2 Vlad219i
После внимательного прочтения темы понял, что @0 строковый параметр, поэтому задача сильно усложняется, да и времени маловато. Но буду пытаться по возможности. Если тема еще актуальна дайте знать.


Да, @0 - это строка.
Тема для меня актуальна уже давно, периодически делал подходы - никак...
Я не настаиваю, но если вдруг... :-)
smac
Цитата(Vlad219i @ Jun 4 2008, 12:01) *
....
Тема для меня актуальна уже давно, ....


Код
.macro    msearchinrxbuffer
    ldi    zh, high(string<<1)
    ldi    zl, low(string<<1)
    rcall    searchinrxbuffer
    rjmp    theend
string:
    .if strlen(@0)%2==1
        .db    @0, $00
    .else
        .db    @0, $00, $00
    .endif
theend:
.endmacro


У метя вот этот макрос работал, однако одно но, при использовании макроса параметр а0 необходимо заключать в кавычки, иначе работать не будет. Например
Код
msearchinrxbuffer "abcdef"

P. S. У меня АВРСтудия 4.13 билд 528
Vlad219i
Цитата(smac @ Jun 4 2008, 13:41) *
У метя вот этот макрос работал, однако одно но, при использовании макроса параметр а0 необходимо заключать в кавычки, иначе работать не будет.


Кудесник ! Огромное спасибо - всё великолепно прижилось.

У меня похожая конструкция жить не хотела... Правда - пробовал ее раньше, на одном из предыдущих релизов студии.

Цитата(smac @ Jun 4 2008, 13:41) *
P. S. У меня АВРСтудия 4.13 билд 528


4.14 b589.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.