AVR studio в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Дон Амброзио

Подскажите по использованию препроцессорн. директиве #define

Сообщение Дон Амброзио »

Подскажите по использованию препроцессорной директиве #define в AVR Studio в программе на АССЕМБЛЕРЕ при использовании её не для определения константы, а для определения макроса-функции.

В общем виде определение препроцессорного макроса-функции выглядит так:
#define prepMacrosName (список аргументов) (определение функции)

Вопрос №1

В хелпе приводиться такой пример:
#define SQR(X) ((X)*(X))

Т.е. если я вызову

ldi ZL , low SQR(17)

, то компилятор вместо SQR(17) напишет"

ldi ZL , low ((17) x (17)) или ldi ZL , low (289) ???

Вопрос №2

Обязательно ли в качестве аргументов "функции" макроса числовые переменные? Или можно и куски текстовых строк?
Могу ли я например использовать такой макрос:
#define Command (InstructionType) (InstructionType)

в строке программы

Command (and)i R16 , 0b01001000 // эквивалетно andi R16, 0b01001000
Command (or)i R16 , 0b01001110 // эквивалетно ori R16, 0b01001110


Замечание: как это сделано в СИ-компиляторах НЕ ИНТЕРЕСУЕТ. Интересует как это сделано для ассемблера в AVR Studio
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

мне вот что непонятно: разве сложно самому взять и откомпилить эти самые макроопределения, чтобы узнать результат?

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

по сравнению с макроассемблером MCS51 (или для х86) у Atmel-a наредкость убогие, просто катастрофически убогие макроопределения, это известно давно. и даже потуги приблизить их синтаксис к сишному дела не спасают.

по поводу ваших вопросов рискну высказать свои предположения, т.к. проверять почему-то желания нет совсем: макрос в компиялторе ассемблера AVR Studio представляет собой именно текстовую подстановку, т.е. ldi ZL , low SQR(17) приведет к генерации кода ldi ZL, low ((17)*(17)), причем с пробелом после low. для второго вопроса в хелпе сказано, что для контатенции строк (а все операнды макросов есть именно набор символов, т.е. строки) надо использовать директиву ##.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

ARV писал(а):разве сложно самому взять и откомпилить эти самые макроопределения, чтобы узнать результат ?


ARV, экономьте бисер !
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

tych писал(а):ARV, экономьте бисер !
да жалко вам, что ли?! :) вы вот на себя перестали быть похожи с такой экономией :) старожилы форума вас не узнаЮт...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Дон Амброзио

Сообщение Дон Амброзио »

Проблему решил сам. Кому интересно посмотрите в Хэлпе AVR Studio. Ключевые слова «Stringification» и «Concatenation)»
pirotehnick
Потрогал лапой паяльник
Сообщения: 327
Зарегистрирован: Пт фев 08, 2008 13:46:03
Откуда: Воронеж
Контактная информация:

Сообщение pirotehnick »

Есть очень неприятные глюки в AVR Studio4.
Один из них, например - не правильное отображение 16- разрядных чисел в просмотровщике состояния памяти ЭСППЗУ. А именно он путает старшие и младшие байты для слов. Старший байт оказывается в более младшей области памяти чем младший, но при этом в файле .eep, который он генерит, оказывается всё наоборот.

Можно ли как-нибудь устранить этот глюк, а то очень сильно мешает?
Дон Амброзио

Сообщение Дон Амброзио »

pirotehnick писал(а):Есть очень неприятные глюки в AVR Studio4.
Один из них, например - не правильное отображение 16- разрядных чисел в просмотровщике состояния памяти ЭСППЗУ. А именно он путает старшие и младшие байты для слов. Старший байт оказывается в более младшей области памяти чем младший, но при этом в файле .eep, который он генерит, оказывается всё наоборот.

Можно ли как-нибудь устранить этот глюк, а то очень сильно мешает?

Это не глюк. Это принятый в AVR Studio формат отображения
rlc
Открыл глаза
Сообщения: 67
Зарегистрирован: Сб мар 10, 2007 12:50:43

Сообщение rlc »

вопрос по отладке в аврстудии мега8535, настройка модуля usart (не смешно)
там регистры UBRRH b UCSRC имеют один адрес.
код самый простой:

sbi ddrd,0
sbi portd,0
sbi ddrd,1
sbi portd,1
ldi temp,UBR_232
out UBRRL,temp
ldi temp,0
out UBRRH,temp
ldi temp,(1<<TXEN)|(1<<RXEN)|(1<<RXCIE)
out UCSRB,temp
ldi temp,(1<<URSEL)|(1<<USBS)|(3<<UCSZ0> запись в UCSRC
out UCSRC,temp
однако при выполнении изменяется UBRRH
такое ощущение что студия не реагирует на URSEL=1
версия студии 4.12.497 SP4
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

Дак хелп к студии чтить надобно. А симулить в VMLAB и PROTEUS соответствующие МК.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
rlc
Открыл глаза
Сообщения: 67
Зарегистрирован: Сб мар 10, 2007 12:50:43

Сообщение rlc »

там вроде предлагается записывать ubrrh после ucrsc
но что то не помогает....
подскажи .... :)
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

rlc писал(а):там вроде предлагается записывать ubrrh после ucrsc
но что то не помогает....
подскажи .... :)


ucrsc - наверно ошибка. нужно UCSRC

я обычно смотрю АСМ листинг компилятора CVAVR - вот из задачи 5 курса под кнопкой моей домашней странички.

000117 b9ea OUT 0xA,R30
; 286 UCSRC=0x86;
000118 e8e6 LDI R30,LOW(134)
000119 bde0 OUT 0x20,R30
; 287
; 288 //UBRRH=0x00; // USART Baud rate: 115200
; 289 //UBRRL=0x05; это настройки из задачи 5

===
в прицепе исходник и весь листинг
Вложения
z5.rar
(16.3 КБ) 610 скачиваний
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
rlc
Открыл глаза
Сообщения: 67
Зарегистрирован: Сб мар 10, 2007 12:50:43

Сообщение rlc »

если в протеусе (у меня 7.2 sp2) отсутствует компонент (мега8535) это можно как-то поправить? скачать дополнения например?
может кто уже спрашивал, но я что-то не нашёл.... :(
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

Нет. не лечится ни как. Только сравнивать на совместимсть с мегой16 например и пытаться помоделировать или в железе.

При выборе МК советую учитывать наличие инструментария для разработки ! Пока это Меги 8 16 32 64 128 для VMLAB и PROTEUS.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

Сообщение sachok »

В AVR-Studio выбираю Tools -> AVR Prog..., а в ответ получаю привычное уже мне сообщение: "No supported board found! AVRprog version 1.40". Захожу Tools -> Program AVR -> Connect..., перебираю все параметры, порты, после каждой установки проверяю Tools -> AVR Prog... и в ответ получаю все то же "No supported board found! AVRprog version 1.40". Что делать. Программатор AVR910 от PROTTOS.
Я не Сашок!!!
Аватара пользователя
sachok
Опытный кот
Сообщения: 849
Зарегистрирован: Сб янв 05, 2008 11:05:15
Откуда: Україна м.Луцьк
Контактная информация:

Сообщение sachok »

Изображение
Я не Сашок!!!
Аватара пользователя
Sannex
Открыл глаза
Сообщения: 73
Зарегистрирован: Чт июн 26, 2008 19:21:24

Сообщение Sannex »

Вопрос знатокам:
покажите пожалуйста ламеру (желательно в скринах), что нужно выставить в AVR Studio 4, чтобы выставить фьюзы как на картинке
Вложения
Фьюзы.zip
(35.77 КБ) 680 скачиваний
Аватара пользователя
oleg1
Встал на лапы
Сообщения: 110
Зарегистрирован: Вс окт 14, 2007 01:09:48

Сообщение oleg1 »

Здраствуйте! Сталкнулся с такой проблемой: выкачал из инета AVRStudio4.13SP2.exe , но он при установке пишет, что прога уже установлена и прекращает установку(хотя она никогда и не была установлена)... Как с этим бороться?
и ещё такая проблема: хотел создать прошиву для микроконтролера по обучалке, при компеляции пишет что файл не найден(делал через батник)хотя всё поинструкции :(
Аватара пользователя
oleg1
Встал на лапы
Сообщения: 110
Зарегистрирован: Вс окт 14, 2007 01:09:48

Сообщение oleg1 »

ивеняюсь за столько веток, почемуто не смог в предыдущее сообщение кинуть... :(
Вложения
скрин ошибки.jpg
Ошибка батника
(28.48 КБ) 1064 скачивания
Аватара пользователя
Brutaller
Встал на лапы
Сообщения: 87
Зарегистрирован: Пн ноя 05, 2007 12:44:43
Откуда: C:\Russia\SPb
Контактная информация:

Сообщение Brutaller »

Кириллица и пробелы в путях (имена файлов и/или каталогов) это зло. Пора бы уже зарубить это себе раз и навсегда.
Аватара пользователя
oleg1
Встал на лапы
Сообщения: 110
Зарегистрирован: Вс окт 14, 2007 01:09:48

Сообщение oleg1 »

точно, а на кирилицу то совсем забыл обратить внимание, только щас вот такая проблема... пишет что не в состоянии открыть файл, но путь проверяю, всё прально... почему так может быть?->
Вложения
проблема с открытием.jpg
(31.13 КБ) 757 скачиваний
Ответить

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