я прекрасно понял, что вы имели ввиду насколько я понимаю, target в makefile именно для этого и служит: можно задать разные наборы компилируемых файлов для разных целей из общего набора исходников. разница лишь в том, что не дефайны, а цели задает пользователь.
но не думаю, что костыль можно считать нормой, если есть решение, считающееся "правильным"
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Заголовок сообщения: Re: AVR studio в вопросах и ответах
Добавлено: Вт окт 04, 2016 14:23:07
Модератор
Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4570 Откуда: Планета Земля
Рейтинг сообщения:0 Медали: 1
Для меня, к примеру, как и для многи, makefile - это нечто таинственное, куда лазить не стоит, чтобы ничего не поломать Мне проще сделать через дефайн и отступить от вышеупомянутых правил, чем тратить своё драгоценное время на изучение структуры makefile. И я не считаю, что в моей программе будет костыль. Я же говорю, в любом случае, каждый будет поступать как считает нужным
Доброго времени суток! Обычно инициализирую порты так:
Код:
DDRB=0b11111111; PORTB=0b00000000;
но иногда инициализирую так:
Код:
DDRB=0b11111111;
А PORTB=0b00000000; - не пишу, потому что порты принимают нулевое значение итак. Но тут стал немного сомневаться всегда ли при втором виде инициализации на выходах портах ноль, или все таки может быть неопределенность при работе реального устройства(в Proteus вроде все нормально работает)?
Заголовок сообщения: Re: AVR studio в вопросах и ответах
Добавлено: Пн ноя 07, 2016 10:18:08
Собутыльник Кота
Карма: 29
Рейтинг сообщений: 651
Зарегистрирован: Сб май 14, 2011 21:16:04 Сообщений: 2708 Откуда: г. Чайковский
Рейтинг сообщения:1 Медали: 1
Добавлю про протеус. Есть область память, которую МК не инициализирует, собственно вся остальная, кроме регистров в/в. Протеус инициализирует ее нулями, в железе будет неизвестное значение.
_________________ Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Здравствуйте! Проблема с AVR Studio 4.19. Меняется панель STK500 (иконки становятся 'AUTO'), и постоянно нужно указывать порт подключения. Стандартные [img]https://drive.google.com/open?id=0B4jTQaXphbLSNlB4NUxmMmRORjg[/img] изменились на [img]https://drive.google.com/open?id=0B4jTQaXphbLScnJqNXBwaklSY2s[/img] Студию переустанавливал, при первом запуске все норм, а потом снова меняются (При запуске студии все норм, но при открытии проекта меняются). Может кто сталкивался с такой ситуацией, подскажите как решить проблему, раньше такого не было.
Добры день. Возникла проблемка под AtmelStudio 6.0...
Периодически "портится" (неправильно вычисляется) переменная result при расчете произведения float и uint16 строка result = gLS * (float)worksegm; то правильно рассчитывается например, результат 0x44CA0000 то бред типа 0x78F00000
зызы - прерывания все запрещены на момент расчета - вышеприведенный код заполнения тест-массива ставится сразу за контролируемым оператором(-ми) - никакими дебагерами не пользую
_dark, может переполнение или уход в "минус" происходит? А у вас в коде uint16.
_________________ Когда уже ничего не помогает - прочтите, наконец, инструкцию. Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII) Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
кто нибудь наталкивался на то, что GCC считает умножение двух аргументов смешенного типа неправильно?
наталкивался. так и не понял - то ли сам дурак, то ли баг GCC. не уверен, что ваш случай и мой одинаковы, но попробуйте мой метод: подключите к проекту математическую библиотеку, т.е. используйте опцию -lm при компиляции.
_dark, может переполнение или уход в "минус" происходит? А у вас в коде uint16.
если бы было так я был бы счаслив! ... (как мне мало нужно для счастья )
наверное нужно пояснить
Код:
worksegm = lenght - cursegm;
lenght >= cursegm всегда
Код:
result = gLS * (float)worksegm;
в пределе 16.0*1024, явно влезет во float и самое главное я контролирую на каждый момент вычисления все параметры с помощью массива stTest16[] каждый параметр, например:
на момент расчета, следующие операторы кладут каждую переменную в массив, и эта часть массива больше не меняется до следующего расчета, т.е. данные которые я вижу, считывая stTest16[] синхронны и верны на момент расчета (расчет происходит редко раз в несколько секунд и управляется внешней командой, а ее можно всегда остановить) ... пока выкрутился заменив произведение суммой, но чувство своей ущербности не исчезает
ARV писал(а):
... подключите к проекту математическую библиотеку, т.е. используйте опцию -lm при компиляции. .
я с makefile не очень дружу... в своем проекте я добавлял эту опцию для запуска avr-gcc, который сам уже потом линкер вызывает - и идет эта опция к линкеру или требуется самому компилятору - этого я не знаю
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
"полное" описание, пожалуй, только в документации на GCC... но там куча платформо-зависимых опций... m - это не опция, а имя библиотеки m.a, но без расширения. вроде как опция -l задает имя принудительно подключаемой библиотеки...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 162
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения