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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

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

Сообщение Z_h_e »

Это память программ как и написано. В ней лежит прошивка.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
201bazza
Встал на лапы
Сообщения: 90
Зарегистрирован: Пн апр 03, 2017 11:40:46

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

Сообщение 201bazza »

[uquote="Z_h_e",url="/forum/viewtopic.php?p=3190866#p3190866"]Это память программ как и написано. В ней лежит прошивка.[/uquote]

Почему, когда я загружаю .hex файл в утилиту для прошивки микроконтроллера, так совершенно другие значения? Что за память программ, можно поподробнее?

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

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

Сообщение ARV »

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

Мой уютный бложик... заходите!
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

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

Сообщение Z_h_e »

201bazza писал(а):так совершенно другие значения?
Я конечно все не проверял, но разницы не увидел. Одни и теже значения. Только в первом случае побайтный режим просмотра, во втором пословный (шина данных у памяти программ AVR 16 битная, т.е. слово 16 бит)
201bazza писал(а):Что за память программ, можно поподробнее?
Программа лежит в памяти программ, где то ей надо же находится.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Эиком - электронные компоненты и радиодетали
201bazza
Встал на лапы
Сообщения: 90
Зарегистрирован: Пн апр 03, 2017 11:40:46

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

Сообщение 201bazza »

Благодарю всех за помощь! Более-менее понятно стало. Теперь далее с отладчиком проблемы. Почему при завершении цикла "while(OCR2<0xff) //снижение яркости" отладчик перескакивает в файл delay.h на 164 строчку __builtin_avr_delay_cycles(__ticks_dc); ??????

Изображение
Реклама
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

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

Сообщение Z_h_e »

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

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

Сообщение ARV »

Причина того, что при пошаговой отладке происходят загадочные скачки "непонятно куда" кроются в том, что при включенной оптимизации GCC генерирует отладочную информацию некорректно. К этому надо привыкнуть и смириться с этим... Или отлаживать с включенной оптимизацией.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

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

Сообщение serg_svd »

Господа программисты! Подскажите начинающему... :cry:
Можно ли в студии, используя команды препроцессора, или иные возможности, сделать так, чтобы компилировались различные варианты кода в АВТОМАТИЧЕСКОМ режиме?
Я пока в сети не нашел такого решения и сомневаюсь, возможно ли такое вообще.
Как простейший пример для чего это нужно, например, делать две различные прошивки для динамической индикации под ОА и ОК.

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

PS. просто даже на форуме видел, что народ выкладывает кучу вариантов прошивок под свои конструкции. И в ручную это делать замороченно.

И второй вопрос, как организовать учет версий и учет изменений в коде? Это можно делать автоматически или все делается вручную?
То есть заводится файл *.TXT и ручками прописываются изменения?
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Аватара пользователя
prinv
Вымогатель припоя
Сообщения: 677
Зарегистрирован: Чт янв 20, 2011 09:07:08
Откуда: Пермь
Контактная информация:

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

Сообщение prinv »

#define SOMETHING // вариант

#ifdef SOMETHING

код для варианта

#endif
Никакая контра не уйдёт от нас
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

Автоматически - никак. Все равно, кроме вас, никто не знает, что именно вы хотите в сию минуту скомпилировать. Поэтому ПОЛУАВТОМАТИЧЕСКИ - можно.

Даже в древней студии (4.16, например), есть в настройках проекта Active configuration - это папка, куда будет складываться результат компиляции. НО!!! при этом каждая конфигурация имеет СВОИ НАСТРОЙКИ, т.е. все остальные опции проекта могут быть индивидуальными для каждой конфигурации.

Создаете конфигурацию ОК, добавляете в разделе Custom options опцию -D__OK__, и затем по коду при помощи #if defined(__OK__) пишите особый код для общего коллектора. Затем создаете конфигурацию ОА, для нее определяете макрос __OA__ и, соответственно #if defined(__OA__) расписываете... И так сколько угодно... можно и для разных камней делать, и для разных кварцев - для чего угодно!

макрос, определенный при помощи директивы -D виден во всех "исходниках" проекта - пользуйтесь.

Останется только при компиляции выбрать нужную конфигурацию - и все! Говорят, как-то можно еще одной кнопкой ВСЕ конфигурации отбилдить, но я не умею...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

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

Сообщение serg_svd »

ARV, спасибо! Меня даже полуавтомат устроил бы, хотя есть выбор всех конфигураций. Надо пробовать.
У меня Atmel Studio 7. Тут все по-другому. Пытаюсь разобраться и найти все настройки, что Вы написали.
ARV писал(а):есть в настройках проекта Active configuration
Похоже этот пункт я нашел верно. Находится в свойствах проекта - Configuration Manager...
Тут я создал две конфигурации: ОА и ОК. Папки создаются автоматически, что уже хорошо.
ARV писал(а):Создаете конфигурацию ОК, добавляете в разделе Custom options опцию -D__OK__,
С этим сложнее. Не нашел такой пункт меню, нашел нечто похожее
Изображение
Попытался прописать как на картинке.
В коде помощник редактора мне предложил такое написание

Код: Выделить всё

#ifdef _OA
#endif // _OA

Черта перед ОА одна, Именно так там в качестве примера была написано _DEBUG.

Попытался откомпилировать - выдает кучу ошибок. Читаю справку. Пока не понял, где ошибка

Добавлено after 7 minutes 8 seconds:
ARV писал(а):#if defined(__OK__)
Директиву #if defined студия не понимает. Есть #ifdef
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

Я бы советовал обязательно добавлять подчеркивания к имени макроса, так меньше шансов нарваться на повторное определение... Ну и по умолчанию "строенные" макросы gcc имеют по 2 подчеркивания спереди и, часто, сзади, поэтому свои вы можете делать с одним или тремя... на всякий случай.

а вот по поводу defined я удивлен... avr-gcc должен понимать это, это ж его родное!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
philosoraptor
Прорезались зубы
Сообщения: 225
Зарегистрирован: Сб янв 14, 2012 22:53:50

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

Сообщение philosoraptor »

[uquote="serg_svd",url="/forum/viewtopic.php?p=3201739#p3201739"]Господа программисты! Подскажите начинающему... :cry:
Можно ли в студии, используя команды препроцессора, или иные возможности, сделать так, чтобы компилировались различные варианты кода в АВТОМАТИЧЕСКОМ режиме?[/uquote]

Можно делать вложенные дифайны, например

Код: Выделить всё

	      #define  ID_CHK  // AUTO display driver type chip detect
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   #ifndef ID_CHK
				    // #define id 0x7783  
				    #define id 0x9325  // set display driver type here manually
     	////////////     #define id 0x9341    //////////// 
   #define readID()   id   //
   #define readReg(val)   id    // dummy placeholder
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   #else 
    uint32_t id = 0; 
   #endif 
 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////	
И второй вопрос, как организовать учет версий и учет изменений в коде? Это можно делать автоматически или все делается вручную?
То есть заводится файл *.TXT и ручками прописываются изменения?
Создаем отдельный хедер, что-то вроде presets.h и туда кидаем все директивы. Включаем в проект. И тут важно помнить, что сишный компайлер не умеет возвращаться, поэтому хедер с директивами должен быть объявлен раньше прочих инклудов, где эти директивы используются.
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

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

Сообщение serg_svd »

prinv , philosoraptor это для ручного режима. Я так и делал.
Вот ARV более подходящий вариант для меня написал.
Причем об использовании Configuration Manager... я и до этого догадывался и пробовал даже, но ничего не вышло.
Потому, что надо было еще дополнительно настраивать проект.
У меня же главная проблема - я не владею терминологией в полном объеме. Поэтому и не получилось самому ответ найти просто из-за того, что поисковый запрос неправильно давал.

Вопрос к ARV
Почитал тут хелп, неправильно писал директивы препроцессора. Нужно варианты компиляции писать так

Код: Выделить всё

#if defined(__OA__)		// Общий анод
....
#elif defined(__OK__)	// Общий катод
....
#endif
Но вот компилятор явно не понимает. Слово defined в редакторе выделено черным цветом.
Хотя посмотрел встроенные хидеры, там встречается такое написание.

Значит проблема в том, что я что-то где-то в настройках компилятора не активировал
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

serg_svd писал(а):Значит проблема в том, что я что-то где-то в настройках компилятора не активировал
Опция -std=gnu99 есть? Или на вкладке General должно быть что-то про стандарт Си, или в Miscellaneus самостоятельно добавьте
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
serg_svd
Собутыльник Кота
Сообщения: 2560
Зарегистрирован: Ср янв 16, 2008 08:34:04
Откуда: KMV

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

Сообщение serg_svd »

ARV Еще раз огромное спасибо за помощь!!!! :beer:
Все получилось. Ошибка была моя. Вернее даже не знаю, ошибка или нет.
В общем я поудалял все конфигурации, что я создавал до этого. Остались только DEBUG и RELEASE.
Далее, я настроил нужный мне уровень оптимизации в RELEASE (это делать необязательно в принципе).
Далее, в Configuration Manager... в списке Active solution configurationя выбрал <NEW>. В появившемся окне Задается имя конфигурации и, обязательно, в списке Copy settings from: выбираем Release! Я этого первоначально не сделал, и бог его знает, какие настройки выставил компилятор по-умолчанию и при компиляции вываливалась куча ошибок. А так копируются настройки с Release. Галочку оставить.
Изображение

Вот у меня как раз проблема и была в том, что не скопировал настройки с релиза.
Кстати, единственное пока не знаю, стоит ли оставлять в опциях -D NDEBUG, такой стоит по-умолчанию для Release

PS эххх.... еще б к имени файла в папке добавлял бы имя конфигурации :)) :)) :)) :))
Ёлки палки! и это получилось :). Имя прописывается на вкладке Build
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Аватара пользователя
philosoraptor
Прорезались зубы
Сообщения: 225
Зарегистрирован: Сб янв 14, 2012 22:53:50

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

Сообщение philosoraptor »

[uquote="serg_svd",url="/forum/viewtopic.php?p=3201986#p3201986"]более подходящий вариант для меня[/uquote]

Если нет цели сделать код максимально портируемым и платформонезависимым, то можно и так, наверно. Лично мне же проще строчку в хедере поменять.
Аватара пользователя
wws63
Сверлит текстолит когтями
Сообщения: 1230
Зарегистрирован: Вс май 21, 2006 16:07:59
Откуда: Алтай

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

Сообщение wws63 »

Подскажите, как подключить внешний хидер в 6 студии? Не могу найти, блиннннн...
Разобрался :)))
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

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

Сообщение СКАЗОЧНИК »

Решил я тут попробовать на Си порисовать для АТмега168.
Все, как напсано у :
http://easyelectronics.ru/avr-uchebnyj- ... ast-1.html
делаю.
А он мне не создает в папке Мэйк-файл.
Студия 4,19

Добавлено after 11 minutes 7 seconds:
все. разобрался. Спасибо. Надо было просто скомпилировать.

Добавлено after 26 minutes 46 seconds:
Короче, у меня косяк какой-то в Студии. Только что поставил сверху ВинАВР. Он у меня, похоже, не увязался с нею. При компиляции выдает ошибку и все тут.
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: avr-gcc.exe

Причем какую ошибку я понять не могу. Сначала жаловался, что какого-то файла у него нет.

Добавлено after 7 minutes 54 seconds:
/usr/bin/sh

Вот этот ресурс вроде говорит временно не доступен. А где его искать? Что-то все перекопал.

Добавлено after 2 minutes 46 seconds:
И вроде как на rm.exe жаловался. Я его нашел в папках Студии. А вот чего делать дальше не бум-бум.


З.Ы. Все. прошу пощения за беспокойство. Все исправил, все работает. )))
Станислав
fulky
Первый раз сказал Мяу!
Сообщения: 31
Зарегистрирован: Ср сен 13, 2017 05:53:24

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

Сообщение fulky »

Здравствуйте. Зависает отладчик Atmelstudio 6.2

вот код

Код: Выделить всё


void port_ini (void){
	DDRB =	(1 << PB0) //выход
			|(1 << PB1)//выход
			|(0 << PB2)
			|(0 << PB3)
			|(0 << PB4);
	PORTB=0b00000000;
}

typedef struct 		//создаем синоним структуры 
{
	unsigned char sequence;	//последовательность
	unsigned char intervals[8];    //время
} Timers;

int main(void)
{
 
	port_ini(); //Инициализируем порты
 
	Timers Timer_1 = {0b10101010, {1, 1, 1, 1, 2, 1, 2, 1}};
	Timers Timer_2 = {0b01010101, {1, 1, 1, 1, 2, 1, 2, 1}};	
    while(1)
    {
		Timer_1.sequence = 54;
		Timer_2.sequence = Timer_1.sequence;
        Timer_2.sequence = 4;
		Timer_1.sequence = Timer_2.sequence;
    }
}
при пошаговой отладке проходит строчку port_ini(); как доходит до структур просто тупо зависает на месте и все иконки на панели становятся неактивными, как быть? мб где то галки в настройках не стоит? помогите.Хочу через Watch посмотреть что там внутри происходит
Ответить

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