Заголовок сообщения: Re: AVR studio в вопросах и ответах
Добавлено: Вс сен 24, 2017 16:25:38
Собутыльник Кота
Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2694 Откуда: г. Чайковский
Рейтинг сообщения:0 Медали: 1
201bazza писал(а):
так совершенно другие значения?
Я конечно все не проверял, но разницы не увидел. Одни и теже значения. Только в первом случае побайтный режим просмотра, во втором пословный (шина данных у памяти программ AVR 16 битная, т.е. слово 16 бит)
201bazza писал(а):
Что за память программ, можно поподробнее?
Программа лежит в памяти программ, где то ей надо же находится.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Благодарю всех за помощь! Более-менее понятно стало. Теперь далее с отладчиком проблемы. Почему при завершении цикла "while(OCR2<0xff) //снижение яркости" отладчик перескакивает в файл delay.h на 164 строчку __builtin_avr_delay_cycles(__ticks_dc); ??????
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Причина того, что при пошаговой отладке происходят загадочные скачки "непонятно куда" кроются в том, что при включенной оптимизации GCC генерирует отладочную информацию некорректно. К этому надо привыкнуть и смириться с этим... Или отлаживать с включенной оптимизацией.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Господа программисты! Подскажите начинающему... Можно ли в студии, используя команды препроцессора, или иные возможности, сделать так, чтобы компилировались различные варианты кода в АВТОМАТИЧЕСКОМ режиме? Я пока в сети не нашел такого решения и сомневаюсь, возможно ли такое вообще. Как простейший пример для чего это нужно, например, делать две различные прошивки для динамической индикации под ОА и ОК.
Я об этом задумался, когда пришлось, по просьбам форумчан, подгонять свой код под их требования. Сейчас вношу изменения и вручную компилирую. Ветвление на варианты сделал по командам препроцессора. Но каждый раз боюсь запутаться, какой я вариант откомпилировал, а какой нет, если в программу вносится общая корректировка.
PS. просто даже на форуме видел, что народ выкладывает кучу вариантов прошивок под свои конструкции. И в ручную это делать замороченно.
И второй вопрос, как организовать учет версий и учет изменений в коде? Это можно делать автоматически или все делается вручную? То есть заводится файл *.TXT и ручками прописываются изменения?
_________________ "Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Автоматически - никак. Все равно, кроме вас, никто не знает, что именно вы хотите в сию минуту скомпилировать. Поэтому ПОЛУАВТОМАТИЧЕСКИ - можно.
Даже в древней студии (4.16, например), есть в настройках проекта Active configuration - это папка, куда будет складываться результат компиляции. НО!!! при этом каждая конфигурация имеет СВОИ НАСТРОЙКИ, т.е. все остальные опции проекта могут быть индивидуальными для каждой конфигурации.
Создаете конфигурацию ОК, добавляете в разделе Custom options опцию -D__OK__, и затем по коду при помощи #if defined(__OK__) пишите особый код для общего коллектора. Затем создаете конфигурацию ОА, для нее определяете макрос __OA__ и, соответственно #if defined(__OA__) расписываете... И так сколько угодно... можно и для разных камней делать, и для разных кварцев - для чего угодно!
макрос, определенный при помощи директивы -D виден во всех "исходниках" проекта - пользуйтесь.
Останется только при компиляции выбрать нужную конфигурацию - и все! Говорят, как-то можно еще одной кнопкой ВСЕ конфигурации отбилдить, но я не умею...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
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
_________________ "Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Я бы советовал обязательно добавлять подчеркивания к имени макроса, так меньше шансов нарваться на повторное определение... Ну и по умолчанию "строенные" макросы gcc имеют по 2 подчеркивания спереди и, часто, сзади, поэтому свои вы можете делать с одним или тремя... на всякий случай.
а вот по поводу defined я удивлен... avr-gcc должен понимать это, это ж его родное!
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Господа программисты! Подскажите начинающему... Можно ли в студии, используя команды препроцессора, или иные возможности, сделать так, чтобы компилировались различные варианты кода в АВТОМАТИЧЕСКОМ режиме?
Можно делать вложенные дифайны, например
Код:
#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 и туда кидаем все директивы. Включаем в проект. И тут важно помнить, что сишный компайлер не умеет возвращаться, поэтому хедер с директивами должен быть объявлен раньше прочих инклудов, где эти директивы используются.
prinv , philosoraptor это для ручного режима. Я так и делал. Вот ARV более подходящий вариант для меня написал. Причем об использовании Configuration Manager... я и до этого догадывался и пробовал даже, но ничего не вышло. Потому, что надо было еще дополнительно настраивать проект. У меня же главная проблема - я не владею терминологией в полном объеме. Поэтому и не получилось самому ответ найти просто из-за того, что поисковый запрос неправильно давал.
Вопрос к ARV Почитал тут хелп, неправильно писал директивы препроцессора. Нужно варианты компиляции писать так
Код:
#if defined(__OA__) // Общий анод .... #elif defined(__OK__) // Общий катод .... #endif
Но вот компилятор явно не понимает. Слово defined в редакторе выделено черным цветом. Хотя посмотрел встроенные хидеры, там встречается такое написание.
Значит проблема в том, что я что-то где-то в настройках компилятора не активировал
_________________ "Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
ARV Еще раз огромное спасибо за помощь!!!! Все получилось. Ошибка была моя. Вернее даже не знаю, ошибка или нет. В общем я поудалял все конфигурации, что я создавал до этого. Остались только DEBUG и RELEASE. Далее, я настроил нужный мне уровень оптимизации в RELEASE (это делать необязательно в принципе). Далее, в Configuration Manager... в списке Active solution configurationя выбрал <NEW>. В появившемся окне Задается имя конфигурации и, обязательно, в списке Copy settings from: выбираем Release! Я этого первоначально не сделал, и бог его знает, какие настройки выставил компилятор по-умолчанию и при компиляции вываливалась куча ошибок. А так копируются настройки с Release. Галочку оставить.
Вот у меня как раз проблема и была в том, что не скопировал настройки с релиза. Кстати, единственное пока не знаю, стоит ли оставлять в опциях -D NDEBUG, такой стоит по-умолчанию для Release
PS эххх.... еще б к имени файла в папке добавлял бы имя конфигурации Ёлки палки! и это получилось . Имя прописывается на вкладке Build
_________________ "Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Добавлено 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 жаловался. Я его нашел в папках Студии. А вот чего делать дальше не бум-бум.
З.Ы. Все. прошу пощения за беспокойство. Все исправил, все работает. )))
при пошаговой отладке проходит строчку port_ini(); как доходит до структур просто тупо зависает на месте и все иконки на панели становятся неактивными, как быть? мб где то галки в настройках не стоит? помогите.Хочу через Watch посмотреть что там внутри происходит
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения