Например TDA7294

Форум РадиоКот • Просмотр темы - AVR studio в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс янв 11, 2026 00:12:15

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 3189 ]     ... , , , 125, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт дек 16, 2016 14:54:37 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт апр 26, 2012 14:30:40
Сообщений: 93
Откуда: под Москвой
Рейтинг сообщения: 0
Кто нибудь знает, можно ли разместить переменную по фиксированному адресу?
знаю, что для IAR это как-то возможно, а для AS?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт дек 16, 2016 15:00:18 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18451
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
можно, для чего следует разместить переменную в отдельной секции памяти при помощи атрибута .section, а затем при линковке задать нужный адрес начала этой секции - переменная там и окажется.

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт дек 16, 2016 15:24:10 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт апр 26, 2012 14:30:40
Сообщений: 93
Откуда: под Москвой
Рейтинг сообщения: 0
Задачка чуть шире, необходимо разместить несколько (обычно до 100) переменных по фиксированным адресам,
обычно эти адреса идут последовательно (или поледовательно несколькими групами), и переменные могут быть разными 1...4 байтные.

...хотя можно наверное все свалить в struct, а уже структуру загнать в отдельную секцию...
что-то типа
Код:
typedef struct{
   uint8_t a;
   uint8_t b;
   uint16_t c;
   uint16_t d;
   }misk;

только обращение к ним через misk.name_var немного напрягает


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт дек 16, 2016 16:02:04 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 212
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1525
Рейтинг сообщения: 1
Ну, это если вся проблема во внешнем виде, это легко исправить макросами
Цитата:
struct{
uint8_t _var1; #define var1 fixvars._var1
uint8_t _var2; #define var2 fizvars._var2
}fixvars;

А не секрет, для чего понадобилось размещать множество переменных по фиксированным адресам?


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт дек 16, 2016 18:25:09 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт апр 26, 2012 14:30:40
Сообщений: 93
Откуда: под Москвой
Рейтинг сообщения: 0
COKPOWEHEU ага годится, спасибо!

Один из вариантов реализации протокола MODBUS RTU. Чтобы не писать длиный swith{case:....break;...} при дешифрации адреса ячеек (регистров и пр. переменных),
хочу их держать последовательно в памяти. Тогда резко сокращаяется код обработки команды, достаточно по адресу который передается в команде вычислить смещение и скопировать в буфер ответа запрошенное количество
регистров (ячеек, входов и пр.). Учитывая, что стандарт предусматривает запрос несколькоих регистров подряд (сколько определяет пользователь), то это еще более экономит память, не нужна будет сборка ответа из разрозненых переменных.


Кажется получилось
Код:
volatile typedef struct{
   uint8_t a;
   uint8_t b;
   uint16_t c;
   uint16_t d;
   }misk;
   
misk var __attribute__((section(".my_data"))) = {1,2,3,4};   


Код:
LDFLAGS += -Wl,-section-start=.my_data=0x800300


map
Цитата:
.my_data 0x00800300 0x6
.my_data 0x00800300 0x6 Variables.o
0x00800300 var


Добавлено after 29 minutes 1 second:
как правильно инициировать структуру значениями по умолчанию?
код ниже не работает (в части инициализации)...
Код:
volatile misk my_var __attribute__((section(".my_data"))) = {1,2,3,4};   


Последний раз редактировалось _dark Пт дек 16, 2016 18:30:52, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт дек 16, 2016 18:30:40 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 212
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1525
Рейтинг сообщения: 0
а так?
Код:
volatile misk my_var __attribute__((section(".my_data"))) = {.a=1, .b=2, .c=3, .d=4};


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт дек 16, 2016 18:36:23 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт апр 26, 2012 14:30:40
Сообщений: 93
Откуда: под Москвой
Рейтинг сообщения: 0
нет, не работает

вот так да, но это не то
Код:
my_var.a = 1;   my_var.b = 2;    my_var.c = 3;    my_var.d = 4;


странно, вот здесь советовали по простому и это похоже работало...
viewtopic.php?p=962848

зы
не пойму где засада, это нюансы GCC или у меня каша в голове?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт дек 16, 2016 19:13:36 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
_dark писал(а):
как правильно инициировать структуру значениями по умолчанию?
код ниже не работает (в части инициализации)...
Код:
volatile misk my_var __attribute__((section(".my_data"))) = {1,2,3,4};   
Может как-то атрибут мешает :dont_know: ? Например у меня при объявлении структуры все отлично инициализируется именно такой записью, но никаких атрибутов не применял.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт дек 16, 2016 19:24:07 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18451
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
даже и не знаю: мне ничего не мешает, у меня все отлично инициализируется :) и атрибут можно в любое место ставить... avr-gcc-5.2.1

какая ошибка-то хоть у вас вводится?

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт дек 16, 2016 19:49:31 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт апр 26, 2012 14:30:40
Сообщений: 93
Откуда: под Москвой
Рейтинг сообщения: 0
нет ошибок,
Цитата:
Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========


просто ерунда в данных

Код:
volatile __attribute__((section(".my_data"))) misk my_var = {1,2,3,4};
....
//   my_var.a = 1;
   __eePUT(0x40, my_var.a);   //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//   my_var.b = 2;
   __eePUT(0x41, my_var.b);   //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//   my_var.c = 3;
   __eePUT(0x42, my_var.c);   //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//   my_var.d = 4;
   __eePUT(0x43, my_var.d);   //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   if(my_var.a < my_var.b) my_var.c = my_var.d + 1;
   __eePUT(0x44, my_var.c);   //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

выдает результат с 40 адреса:
00 00 00 78 00

если
Код:
volatile __attribute__((section(".my_data"))) misk my_var = {1,2,3,4};
...
   my_var.a = 1;
   __eePUT(0x40, my_var.a);   //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   my_var.b = 2;
   __eePUT(0x41, my_var.b);   //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   my_var.c = 3;
   __eePUT(0x42, my_var.c);   //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   my_var.d = 4;
   __eePUT(0x43, my_var.d);   //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   if(my_var.a < my_var.b) my_var.c = my_var.d + 1;
   __eePUT(0x44, my_var.c);   //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

то все ок:
01 02 03 04 05

AVR GCC 4.6.2

не везде, после фигурных скобок атрибут поставить нельзя - ругается

Z_h_e да мешает атрибут, без него все ок.
Но в нем то весь смысл, о чем здесь речь идет....


Последний раз редактировалось _dark Пт дек 16, 2016 20:04:43, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт дек 16, 2016 20:00:12 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А что за МК у Вас? Вроде как нет AVR, у которой ОЗУ начинается с адреса меньшим 0x60.

Адрес сегмента как определен у Вас? Возможно его надо определять как 0x00800060 для адреса 0x0060. Это нюансы Си и гарвардской архитектуры.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт дек 16, 2016 20:12:21 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт апр 26, 2012 14:30:40
Сообщений: 93
Откуда: под Москвой
Рейтинг сообщения: 0
Mega168PA 1к SRAM

секция начинается с 0x200
Цитата:
LDFLAGS += -Wl,-section-start=.my_data=0x800200


Добавлено after 5 minutes:
ARV свой код инициализации с атрибутом не выложите?
вместе с определением структуры


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт дек 16, 2016 20:38:29 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18451
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
да я ваш скопировал :) но чистым этот тест не назовешь - я только убедился в отсутствии ошибок компиляции, в память я не смотрел, что там получалось. некогда, да и лень :roll:

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт дек 16, 2016 21:23:27 
Встал на лапы
Аватар пользователя

Зарегистрирован: Чт апр 26, 2012 14:30:40
Сообщений: 93
Откуда: под Москвой
Рейтинг сообщения: 0
ну ладно закончу эти экзерцисы,
в принципе понятно как без доп. секций все реализовать только на структурах...

Всем кто откликнулся Спасибо! :beer:

Добавлено after 39 minutes:
Я собственно о чем подумал, похоже дело в том, что

.my_data не является секцией .data ( глубокая мысль :))) ) и поэтому нет начальной инициализации.
вот если объявить .my_data как подсекцию .data, тогда наверное все должно получиться...

но как это сделать?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Пт дек 16, 2016 22:39:27 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18451
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
я, честно говоря, уже не очень четко помню... но по-моему, инициализируемая область ОЗУ - это секция .bss, а .data - это остальное ОЗУ, точнее вообще все ОЗУ, включая .bss...
ща попробую все-таки собрать более-менее адекватный тест... терпение :)

Добавлено after 1 hour 12 minutes 43 seconds:
в общем, дело такое...
во-первых, я все сказал наоборот: .bss - это область ОЗУ глобальных переменных, не имеющая начальных данных (обнуляется по умолчанию), а .data - это как раз проинициализированные переменные
во-вторых, при выделении отдельной секции под переменную, она оказывается именно по этому адресу... но как ее проинициализировать "по умолчанию", я так и не понял... похоже, что никак... либо я просто слишком туп, чтоб понять, как.

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Вс дек 18, 2016 08:20:11 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2708
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Доброго воскресного времени суток.
Существует ли возможность настроить AS6 так, чтобы он имя HEXа назначал по какому-то правилу. Например добавлял время или что-то выдергивал из исходника и добавлял к имени. И если да, то как это сделать.
Я makefile ручками не пишу, пользуюсь автоматизацией студии, мне бы как-нибудь там же и настроить это дело.
Спасибо.

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Вт дек 20, 2016 06:22:41 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 58
Зарегистрирован: Чт янв 20, 2011 09:07:08
Сообщений: 677
Откуда: Пермь
Рейтинг сообщения: 0
Поставил AVR Studio 4.19 и AVR Toolchain 3.3.0
При отладке появляется следующее окошко.
Что нужно сделать? Какую папку указать?
Изображение


Вложения:
foldsrc.png [10.27 KiB]
Скачиваний: 876

_________________
Никакая контра не уйдёт от нас
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Вт дек 20, 2016 06:53:50 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18451
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
боюсь, что так не выйдет. я на 100% не уверен, но все предыдущие версии AVR Studio не умели "автоматически" работать ни с каким компилятором, кроме WinAVR. поэтому я могу вам дать не очень правильный совет: сначала установить WinAVR, а затем просто поверх ее папок перезаписать файлами из AVR Toolchain. студия будет думать, что это WinAVR, но фактически будет работать с новым компилятором.

как сделать совсем правильно - не знаю, к сожалению...

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Вт дек 20, 2016 09:39:00 
Вымогатель припоя
Аватар пользователя

Карма: 7
Рейтинг сообщений: 58
Зарегистрирован: Чт янв 20, 2011 09:07:08
Сообщений: 677
Откуда: Пермь
Рейтинг сообщения: 0
AVR Toolchain это WinAVR и есть, только более новых версий.

_________________
Никакая контра не уйдёт от нас


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: AVR studio в вопросах и ответах
СообщениеДобавлено: Вт дек 20, 2016 12:39:44 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2135
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18451
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
prinv писал(а):
AVR Toolchain это WinAVR и есть, только более новых версий
нет, это не совсем так.
WinAVR - это прежде всего инсталлятор, который делает такие изменения в окружении Windows, которые позволяют студии автоматически обнаружить его присутствие и соответственно предлагать создание проектов для WinAVR. о наличии toolchain студия, похоже, самостоятельно узнать не может, а как ей помочь - я не в курсе (точнее, сказал, как делал я)

кроме того, AVR Toolchain не содержит документации по avr-libc и вообще по avr-gcc, а WinAVR содержит все "из коробки".

функционально - да, это версии компилятора под AVR, но комплектность разная. в частности, мне очень не нравится формат вывода сводки о размере полученного кода, который выдает avr-size в toolchain последних версий, приходится применять версию из WinAVR

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

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


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 3189 ]     ... , , , 125, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot] и гости: 19


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y