Заголовок сообщения: 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 посмотреть что там внутри происходит
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 37
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения