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

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

Вс сен 24, 2017 14:53:41

Это память программ как и написано. В ней лежит прошивка.

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

Вс сен 24, 2017 15:13:10

Это память программ как и написано. В ней лежит прошивка.


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

Изображение

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

Вс сен 24, 2017 15:44:44

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

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

Вс сен 24, 2017 16:25:38

201bazza писал(а):так совершенно другие значения?
Я конечно все не проверял, но разницы не увидел. Одни и теже значения. Только в первом случае побайтный режим просмотра, во втором пословный (шина данных у памяти программ AVR 16 битная, т.е. слово 16 бит)
201bazza писал(а):Что за память программ, можно поподробнее?
Программа лежит в памяти программ, где то ей надо же находится.

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

Вс сен 24, 2017 18:41:50

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

Изображение

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

Вс сен 24, 2017 19:13:23

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

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

Вс сен 24, 2017 19:37:45

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

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

Пн окт 09, 2017 09:27:59

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

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

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

И второй вопрос, как организовать учет версий и учет изменений в коде? Это можно делать автоматически или все делается вручную?
То есть заводится файл *.TXT и ручками прописываются изменения?

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

Пн окт 09, 2017 09:33:29

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

#ifdef SOMETHING

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

#endif

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

Пн окт 09, 2017 09:40:35

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

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

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

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

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

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

Пн окт 09, 2017 11:55:26

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

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

Пн окт 09, 2017 12:14:43

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

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

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

Пн окт 09, 2017 12:41:29

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


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

Код:
         #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 и туда кидаем все директивы. Включаем в проект. И тут важно помнить, что сишный компайлер не умеет возвращаться, поэтому хедер с директивами должен быть объявлен раньше прочих инклудов, где эти директивы используются.

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

Пн окт 09, 2017 13:11:44

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

Вопрос к ARV
Почитал тут хелп, неправильно писал директивы препроцессора. Нужно варианты компиляции писать так
Код:
#if defined(__OA__)      // Общий анод
....
#elif defined(__OK__)   // Общий катод
....
#endif

Но вот компилятор явно не понимает. Слово defined в редакторе выделено черным цветом.
Хотя посмотрел встроенные хидеры, там встречается такое написание.

Значит проблема в том, что я что-то где-то в настройках компилятора не активировал

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

Пн окт 09, 2017 13:20:00

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

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

Пн окт 09, 2017 14:15:11

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

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

PS эххх.... еще б к имени файла в папке добавлял бы имя конфигурации :)) :)) :)) :))
Ёлки палки! и это получилось :). Имя прописывается на вкладке Build

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

Пн окт 09, 2017 14:25:31

более подходящий вариант для меня


Если нет цели сделать код максимально портируемым и платформонезависимым, то можно и так, наверно. Лично мне же проще строчку в хедере поменять.

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

Вт окт 10, 2017 12:16:08

Подскажите, как подключить внешний хидер в 6 студии? Не могу найти, блиннннн...
Разобрался :)))

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

Пн окт 30, 2017 15:31:23

Решил я тут попробовать на Си порисовать для АТмега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 жаловался. Я его нашел в папках Студии. А вот чего делать дальше не бум-бум.


З.Ы. Все. прошу пощения за беспокойство. Все исправил, все работает. )))

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

Вт окт 31, 2017 06:17:31

Здравствуйте. Зависает отладчик 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 посмотреть что там внутри происходит
Ответить