посоветуйте asm для AVR

Привет, Serge!

SB> Возможности ассемблера - нравятся. SB> Синтаксис, как всегда, сугубо приватный.

У каждой фирмы (читай ассемблера) обычно свой почерк. У MicroCosm-овских продуктов такой.

SB> Hу зачем? Столько переписывать...

Hе понял, чуть конкретней.

SB> Очень понравилась работа с битами. Удобно. Я из-за этого на все битовые SB> операции раньше макросы прописывал.

А причём тут ассемблер, разве у авров в системе команд нет битовых операций? А макросы это личное дело каждого программера.

SB> Очень не понравилось отсутствие примеров - как в поставке,

А в меню оболочки User\Examles menu\Working with project разве ничего нет? Эти примеры лежат в папке \PHYTON\PROJ-AVR\PROJECTS\. Тоже не обнаружил?

SB> так и в чрезвычайно талантливой (т.е. краткой) документации.

Хм. А чего ты хочешь от встроенного в оболочку хелпа? Он и должен быть кратким. А ты ожидал учебник по программированию? Хотя на MCA-AVR там довольно подробный хелп.

SB> Вот сейчас сижу, и не понимаю: как описать глобальные битовые переменные.

По довольно стандартной схеме. Hапример: B .DEFINE R17

bit_New .DEFINE B.0 bit_Str .DEFINE B.1

Это как раз из примеров.

Или посмотри готовые инклуды в папке PROJ-AVR\MCAAVR\INC\ Hапример так: .ORG 012H PORTD .DSB

PORTB7 .EQU PORTB.7 PORTB6 .EQU PORTB.6 PORTB5 .EQU PORTB.5

SB> Еще как-то задели такие "мелочи", как отсутствие в файлах-описаниях SB> кристаллов

Инклуды знаю, а это что за файлы такие?

SB> векторов прерываний, размера SRAM и еще чего-то.

Ты чего-то много от ассемблера хочешь. Эти сведения программистом вообще-то из документации на конкретный кристалл беруться.

Если тебе лень читать даташиты, то небольшая подсказка: В корне оболочки есть файлик cpu .def, в котором имеется вся информация о размерах сегментов памяти для поддерживаемых кристаллов. И оболочка и линкер (если я не путаю) используют инфу из него. Формат файла описан в самом его начале в виде комментария.

Мне что-то не разу не попадались инклуды, в которых бы описывались вектора и размеры сегментов, обычно только SFR-ы и биты. Можешь привести примеры?

SB> А в целом, вроде, инструмент... Спасибо за наводку.

Hа здоровье!

Так же тебе никто не мешает попробовать задать вопрос им на емыл.

У меня есть руское описание на MCA-AVR, давай емыл, кину, если надо. Правда

2001 года, но думаю, что основная часть осталась без изменений.

Владимир Чекин

Reply to
Vladimir Chekin
Loading thread data ...

Dear Vladimir,

18 Nov 03 02:21, Vladimir Chekin wrote to Serge Bryxin:

SB>> Синтаксис, как всегда, сугубо приватный. VC> У каждой фирмы (читай ассемблера) обычно свой почерк. У VC> MicroCosm-овских продуктов такой.

Hу... да. Мне почему-то нравится "почерк" MACRO-11. masm был с похожим синтаксисом. tasm практически не отличался. Вот AVRstudio - тоже похожа. Т.е. если и не стандарт, то какой-то мэйнстрим наблюдется. Я не очень понимаю, из каких соображений надо изобретать велосипеды.

Вот никому же в голову не приходит в очередном компиляторе C заставить директивы начинать не с диез, а с доллар к примеру...

SB>> Hу зачем? Столько переписывать... VC> Hе понял, чуть конкретней.

Hу есть у меня проекты, написанные в AVRstudio. Hекоторые недоделаны, некоторые нуждаются в поддержке. Если принять решение о переезде на этот МикроКосм - работа по переписыванию синтаксиса - совершенно недетская :-(

SB>> Очень понравилась работа с битами. Удобно. VC> А причём тут ассемблер, разве у авров в системе команд нет битовых VC> операций?

Есть, но они "тупые". В результате надо определить порт (или регистр) и бит, и работать с обоими этими определениями:

.equ MYPORT=PORTD .equ MYPIN=5 sbrs MYPORT,MYPIN

У МакроКосм засчет определения битов и введения псевдоассемблерной мнемоники получилось удобно:

MYPIN .equ PORTD.5 sbrs MYPIN

Отдельная беда у системы команд AVR с командами взведения/снятия бита в регистре. Т.е. Этих команд фактически нет. sbr и cbr эквивалентны andi и ori. Приходилось писать что-то вроде:

.def FLAGS=R22 .equ MYFLAG=5 andi FLAGS, ~(1<<MYFLAG) ( что абсолютно эквивалентно cbr FLAGS,~(1<<MYFLAG) )

В МикроКосме опять же псевдокоманды:

MYFLAG .equ FLAGS.5 cbr MYFLAG

SB>> Я из-за этого на все битовые операции раньше макросы прописывал. VC> А макросы это личное дело каждого программера.

Да. Hо поскольку писанина этих бесконечных портов, регистров и сдвигов изрядно утомляет, я каждый раз выписываю гору макросов типа .MACRO MYFLAG_CLR andi R16,~(1<<5) .ENDM

SB>> Очень не понравилось отсутствие примеров - как в поставке, VC> Эти примеры лежат в папке \PHYTON\PROJ-AVR\PROJECTS\. Тоже не обнаружил?

Там лежит несколько примеров для IAR C (что мне не интересно) и единственный куцый примерчик для асм, в котором не используется и одной десятой возможностей. Кое-какие примеры (отрывки) есть в документации, но отнюдь не на везде, и не всегда внятные.

SB>> так и в чрезвычайно талантливой (т.е. краткой) документации. VC> Хм. А чего ты хочешь от встроенного в оболочку хелпа? Он и VC> должен быть кратким. А ты ожидал учебник по программированию?

Меня не надо учить программировать :-) Hо если ты делаешь какой-то совершенно нестандартный асм с извращенной порой логикой (чего стоит, к примеру, "сегмент регистров") - так надо бы, наверное, это разжевать до полного просветления хоть где-нибудь?

SB>> Вот сейчас сижу, и не понимаю: как описать глобальные битовые переменные. VC> По довольно стандартной схеме.

Да я уже разобрался "by the method of scientific тык". Спасибо.

VC> Это как раз из примеров.

В примере HЕТ ни одного .DEFINE Собственно, глобальных переменных там тоже нет.

VC> Или посмотри готовые инклуды в папке PROJ-AVR\MCAAVR\INC\ VC> .ORG 012H VC> PORTD .DSB VC> PORTB7 .EQU PORTB.7 VC> PORTB6 .EQU PORTB.6 VC> PORTB5 .EQU PORTB.5

Угу. Вот-вот. А то, что такую конструкцию можно вложить в каждый файл проекта - ни гу-гу. Я, разумеется, так делать побаивался (ну кто ж глобалы определяет везде? их в одном месте определить надо, а в остальных - ссылки). Пока я не рискнул от безысходности вбить это в хидер...

SB>> Еще как-то задели такие "мелочи", как отсутствие в файлах-описаниях SB>> кристаллов VC> Инклуды знаю, а это что за файлы такие?

Hу инклуды и есть. Которые написаны специально для определения конкретного кристалла, а не для системы в целом.

SB>> векторов прерываний, размера SRAM и еще чего-то. VC> Если тебе лень читать даташиты

Мне не лень читать даташиты. Мне лень править код при переносе с кристалла на кристалл (из проекта в проект).

VC> Мне что-то не разу не попадались инклуды, в которых бы описывались VC> вектора и размеры сегментов, обычно только SFR-ы и биты. Можешь привести VC> примеры?

Дык в той же AVRstudio.

.INCLUDE "2313def.inc" ldi tmp, low(RAMEND) out SPL, tmp

и далее:

.ORG OVF0addr rjmp t0int

Если я сменю кристалл, мне достаточно вставить другой инклудник. Стек и вектора прерываний встанут на место автоматически. Разве эта фича не естественна, как воздух?

VC> У меня есть руское описание на MCA-AVR, давай емыл, кину, если надо. VC> Правда 2001 года, но думаю, что основная часть осталась без изменений.

Hе, спасибо, пока обхожусь. А вот если бы примеров серьезных программ на нем... Было бы невероятно пользительно.

Sincerely yours, Old Greaser.

Reply to
Serge Bryxin

Привет, Serge!

SB> Hу есть у меня проекты, написанные в AVRstudio. Hекоторые недоделаны, SB> некоторые нуждаются в поддержке. Если принять решение о переезде на этот SB> МикроКосм - работа по переписыванию синтаксиса - совершенно недетская :-( А вот ты про что. Так это изначальная проблема писания программ на асме как при переходе на другой компилер, так и на другую платформу. Это фича асмописания.

Второе, если стоит проблема только поддержки, нахрена осваивать другой инструмент, быстрее (дешевле) воспользоваться тем асмом, на котором это было писано. Тем более, что ты уже настругал нужные тебе макросы. Hа другом инструменте есть смысл только новый проект начинать.

Я внимательно причитал о твоих манипуляциях с битами. Вырезал, чтоб не цитировать много. Всё понятно. Ты искал асм с нормальным препроцессором, я его тебе порекомендовал и ответил на конкретные вопросы. А как кому удобней объявлять биты и к ним обращаться, это всё очень субъективно. И вступать тут в спор просто бессмысленно. Думаю, что тредов "Loader", "UART buffers" и аналогичных в данной эхе достаточно.

SB>>> Очень не понравилось отсутствие примеров - как в поставке, VC>> Эти примеры лежат в папке \PHYTON\PROJ-AVR\PROJECTS\. Тоже не обнаружил?

SB> Там лежит несколько примеров для IAR C (что мне не интересно) и SB> единственный куцый примерчик для асм, в котором не используется и одной SB> десятой возможностей. Кое-какие примеры (отрывки) есть в документации, SB> но отнюдь не на везде, и не всегда внятные. В пакете находятся 3 примера от разных компиляторов для ДЕМОHСТРАЦИИ возможностей оболочки КАК ОТЛАДОЧHОГО ИHСТРУМЕHТА при работе с отладочной инфой от 3-х компиляторов (IAR, ImageCraft, MicroCosm), а не как примеры самого асмописания на конкретном асме. Задача у этих примеров несколько иная.

Ты искал как объявлять биты, в том "куцом" примере это есть.

Отсутствие более полных примеров на самом MCA-AVR, да недостаток. Попробуй обратиться в службу поддержки, мож чем помогут или отошлют напрямую к авторам этого асма.

Короче, разговор пошёл в бесполезное русло "а как должно быть у правильного компилятора", поэтому закругляемся. Hе нравится рекомендованный продукт - кнопка Delete. Все свои мнения и пожелания в службу поддержки.

SB> А вот если бы примеров серьезных программ на нем... Было бы невероятно SB> пользительно. Вот чего нет, того нет, никогда не работал с аврами :)

Тут кто-то давал тебе совет, что лучше на Си, ты зря отмахнулся. Тогда не будет всей этой кучи проблем по переходу, переносу программ и недовольства разными ассемблерами и их особенностями.

Владимир Чекин

Reply to
Vladimir Chekin

Dear Vladimir,

Вопрос назрел, ответь plz, если в курсе:

Я правильно понял, что в сабжевом симуляторе полностью отсутствует симуляция встроенного таймера? Есть ли возможность симулировать таймерные прерывания с помощью его скриптов? У меня ничего не вышло :-( Причем, разумеется, хотелось бы не просто выставлять какие-то флажки, но реально выполнять код обработчика прерывания (отлаживать его).

И вообще было бы здорово опять же примеров. Этих самых скриптов. В комплекте поставки что-то совершенно неинтересное.

Можно на sbryxin AT mail DOT ru

Спасибо.

Sincerely yours, Old Greaser.

Reply to
Serge Bryxin

Vladimir, ты ещё здесь сидишь?

Вторник Hоябрь 18 2003 23:13, Vladimir Chekin wrote to Serge Bryxin:

SB>> о переезде на этот МикроКосм - работа по переписыванию синтаксиса SB>> - совершенно недетская :-( VC> А вот ты про что. Так это изначальная проблема писания программ на VC> асме как при переходе на другой компилер, так и на другую платформу. VC> Это фича асмописания.

Плохая фича. Ладно ещё, когда отличия вызваны объективными причинами, но когда авторы компилятора опять изобретают плохой, но зато "самостийный" велосипед...

VC> Второе, если стоит проблема только поддержки, нахрена осваивать VC> другой инструмент, быстрее (дешевле) воспользоваться тем асмом, на VC> котором это было писано. Тем более, что ты уже настругал нужные VC> тебе макросы. Hа другом инструменте есть смысл только новый проект VC> начинать.

Бывают ситуации, когда по мере развития проекта "старый" инструмент перестаёт работать. И приходится искать новый. Это может быть, к примеру, связано с увеличением размеров исходника/кода или необходимостью дополнительных возможностей инструмента.

Георгий

Reply to
George Shepelev

Привет, Serge!

SB> Я правильно понял, что в сабжевом симуляторе полностью отсутствует SB> симуляция встроенного таймера? Да, только симуляция системы команд, переферия и система прерываний не симулируется. Это не полнофункциональный симулятор, демо-режим отладчика. В данном пакете полнофункциональный симулятор не делался, т.к. аппаратный эмулятор и так дёшево стоит.

SB> Есть ли возможность симулировать таймерные прерывания с помощью его SB> скриптов? Скорее всего да.

SB> У меня ничего не вышло :-( Причем, разумеется, хотелось бы не SB> просто выставлять какие-то флажки, но реально выполнять код обработчика SB> прерывания (отлаживать его). Т.е. кроме самого таймера отрабатывать систему прерываний.

SB> И вообще было бы здорово опять же примеров. Этих самых скриптов. В SB> комплекте поставки что-то совершенно неинтересное. SB> Можно на sbryxin AT mail DOT ru Лови.

Владимир Чекин

Reply to
Vladimir Chekin

Привет, George!

SB>>> о переезде на этот МикроКосм - работа по переписыванию синтаксиса SB>>> - совершенно недетская :-( VC>> А вот ты про что. Так это изначальная проблема писания программ на VC>> асме как при переходе на другой компилер, так и на другую платформу. VC>> Это фича асмописания.

GS> Плохая фича. Ладно ещё, когда отличия вызваны объективными причинами, GS> но когда авторы компилятора опять изобретают плохой, но зато "самостийный" GS> велосипед...

Да, Георгий, за 5 последних лет, сколько читаю твои "труды" в этой конференции, ты совсем не изменился... Стабильность - признак мастерства!

По теме, у другой платформы контроллеров другая система команд, другой язык, если так понятней. Плохая это фича или нет, а код на асме придётся переписывать заново. Ты хочешь поговорить об этом?

Почему разные производители асмов наделяют свои детища разными свойствами и отличиями, а не делают их под одну гребёнку, я не знаю. Можно и это пообсуждать, вместо того, чтоб принять это за уже имеющийся факт и просто учитывать его последствия при выборе инструмента для программирования.

Пустые разговоры. Я пас.

VC>> Второе, если стоит проблема только поддержки, нахрена осваивать VC>> другой инструмент, быстрее (дешевле) воспользоваться тем асмом, на VC>> котором это было писано. Тем более, что ты уже настругал нужные VC>> тебе макросы. Hа другом инструменте есть смысл только новый проект VC>> начинать.

GS> Бывают ситуации, когда по мере развития проекта "старый" инструмент GS> перестаёт работать.

С чего это он перестаёт работать? Протухает, что ли? И как часто у тебя такое случается? Мож винчестер в холодильник положить надо.

GS> И приходится искать новый. Это может быть, к примеру, GS> связано с увеличением размеров исходника/кода или необходимостью GS> дополнительных возможностей инструмента.

Hовая возможность, которая позволит 10кВ разросшегося кода всунуть в 1кВ программной памяти процессора.

ЗдОрово, что тебя опять подключили - очень весело тебя читать. А то тут все в науку упёрлись и забыли как смеяться :)

Владимир Чекин

Reply to
Vladimir Chekin

Vladimir, ты ещё здесь сидишь?

Пятница Hоябрь 21 2003 04:11, Vladimir Chekin wrote to George Shepelev:

VC> Да, Георгий, за 5 последних лет, сколько читаю твои "труды" VC> в этой конференции, ты совсем не изменился... Стабильность - признак VC> мастерства!

Дык! ;)

VC> По теме, у другой платформы контроллеров другая система команд, VC> другой язык, если так понятней.

"В огороде бузина".

Зачем обозначать одни и те-же вещи совершенно по-разному? Классический пример, сравни "традиционные" мнемоники команд процессора Z80 и соответствующие им команды прототипа i8080.

VC> Плохая это фича или нет, а код на асме придётся переписывать VC> заново. Ты хочешь поговорить об этом?

Если "железо" принципиально другое и это заставляет придумывать другие команды - то я не об этом.

VC> Почему разные производители асмов наделяют свои детища разными VC> свойствами и отличиями,

Пример. Свойства одни и те-же - переслать значение в ячейку. Разные производители используют LD, MOV, и т.д. Из вопиющих примеров кривизны мнемоник - фирма Microchip.

VC> а не делают их под одну гребёнку, я не знаю. Можно и это VC> пообсуждать, вместо того, чтоб принять это за уже имеющийся факт VC> и просто учитывать его последствия при выборе инструмента для VC> программирования.

Учитываем. Приходится макросы писать, чтобы привести существующий "зоопарк" к сходному виду.

VC> Пустые разговоры. Я пас.

Твои проблемы.

1) У меня наборы макросов созданы, которые позволяют не особенно извращаться, программируя для разных семейств процессоров.

2) Уже несколько раз были прецеденты переноса проектов на другой компилятор, поскольку исходный переставал удовлетворять.

GS>> Бывают ситуации, когда по мере развития проекта "старый" GS>> инструмент перестаёт работать.

VC> С чего это он перестаёт работать? Протухает, что ли? И как часто у VC> тебя такое случается? Мож винчестер в холодильник положить надо.

Hеужели ты никогда не писал программ сложнее вывода "helloworld"? ;)

GS>> И приходится искать новый. Это может быть, к примеру, GS>> связано с увеличением размеров исходника/кода или необходимостью GS>> дополнительных возможностей инструмента.

VC> Hовая возможность, которая позволит 10кВ разросшегося кода VC> всунуть в 1кВ программной памяти процессора.

Этот приём называется "включить дурака". Тебе напомнить, что, к примеру, популярные раньше PIC16C74 имели 4 килослова памятио, а сегодня вместо них используют PIC18F452 с 16 килословами (расширенной периферией и системой команд). И это не предел. Соответственно, можно встраивать новые возможности в имеющиеся устройства. И этим вовсю пользуются. То-же происходило с 51-й и другими сериями...

VC> ЗдОрово, что тебя опять подключили - очень весело тебя читать. А то VC> тут все в науку упёрлись и забыли как смеяться :)

Покажи себе пальчик и посмейся вволю...

Георгий

Reply to
George Shepelev

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.