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

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

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

Сообщение ARV »

Аlex писал(а):Я имел в виду настроки проекта в виде дефайнов.
я прекрасно понял, что вы имели ввиду :)
насколько я понимаю, target в makefile именно для этого и служит: можно задать разные наборы компилируемых файлов для разных целей из общего набора исходников. разница лишь в том, что не дефайны, а цели задает пользователь.

но не думаю, что костыль можно считать нормой, если есть решение, считающееся "правильным" :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

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

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

Сообщение ARV »

Аlex писал(а): makefile - это нечто таинственное, куда лазить не стоит, чтобы ничего не поломать
это да :)))
но есть же Eclipse, который прекрасно сам генерирует makefile по вашим желаниям, которые вы выражаете "расстановкой галочек" :)))

зря вы привыкаете (привыкли) считать нужным костыль :)
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

ARV писал(а):зря вы привыкаете (привыкли) считать нужным костыль :)
Да не привык я ни к чему, я так не делаю :)))
Просто ещё не было повода. А мысли, чисто теоретические :))
Аватара пользователя
botchin
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

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

Сообщение botchin »

Я не работал в студио (а сижу на PIC-ах), но все таки покажу как (когда-то 1986г.) работал на Make file

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

obj1= vortex.obj trzi.obj tr_061.obj help0.obj calc1.obj chsp.obj wal3.obj wal.obj

obj2= wal1.obj c_t4.obj calce.obj calc1.obj c_prin.obj cale1.obj c_cale.obj
obj3= ctr_061.obj tr_062.obj ctr_062.obj mena3.obj trg.obj ls_01.obj
obj4= rek.obj csr.obj c_t2.obj ls.obj ls_00.obj tmes_sum.obj
obj5= tprikl.obj c_trz1.obj cpr.obj trz_prin.obj tgru_kod.obj ctpr.obj help1.obj
obj6= vvv0.obj c_doh.obj ctar.obj sank.obj
// описание всех файлов входящих в проекте  - для линкера
.prg.obj:
        clipper $** -m-n
.c.obj:
        cl /AL /Oalt /c /Zl /FPc /Gs /G2 $*.c
.asm.obj:
        masm /Dmodel=large /Mx /DcLang $*.asm;
//как из ,prg(.c;.asm) сделать ,obj  - указания для компиляторов
trzi.obj:       trzi.prg
sank.obj:       sank.prg
tr_061.obj:     tr_061.prg
vortex.obj:     vortex.prg
help0.obj:      help0.prg
help1.obj:      help1.prg
calc1.obj:      calc1.prg
cale1.obj:      cale1.prg
tr_062.obj:     tr_062.prg
mena3.obj:      mena3.prg
trg.obj:        trg.prg
ls_01.obj:      ls_01.prg
rek.obj:        rek.prg
ls.obj:         ls.prg
tmes_sum.obj:   tmes_sum.prg
tprikl.obj:     tprikl.prg
trz_prin.obj:   trz_prin.prg
tgru_kod.obj:   tgru_kod.prg
ls_00.obj:      ls_00.prg
vvv0.obj:       vvv0.prg
wal3.obj:       wal3.c ctrz.h
wal.obj:        wal.c ctrz.h
wal1.obj:       wal1.c ctrz.h
c_t4.obj:       c_t4.c ctrz.h
calce.obj:      calce.c ctrz.h
c_prin.obj:     c_prin.c ctrz.h
c_cale.obj:     c_cale.c ctrz.h
ctr_061.obj:    ctr_061.c ctrz.h
ctr_062.obj:    ctr_062.c ctrz.h
csr.obj:        csr.c ctrz.h
c_t2.obj:       c_t2.c ctrz.h
c_trz1.obj:     c_trz1.c ctrz.h
cpr.obj:        cpr.c ctrz.h
ctar.obj:       ctar.c ctrz.h
c_doh.obj:      c_doh.c ctrz.h
ctpr.obj:       ctpr.c ctrz.h
chsp.obj:       chsp.asm
\vortex\vortex.exe:     $(obj1) $(obj2) $(obj3) $(obj4) $(obj5) $(obj6)
        rtlink @ln.lnk
// указания для линкера


Для больших проектов makefile бъла вещ незаменимая.

Добавил коментаръ которъе там не бъло
ARV писал(а):что и в makefile есть средства вариантов сборки проекта из разного набора исходников

В примере показано работа с трех язъках - Clipper, C и ASM. Но ето бъл 1986г. и "класическое" С
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
CB1
Прорезались зубы
Сообщения: 232
Зарегистрирован: Чт янв 01, 2015 13:44:12

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

Сообщение CB1 »

Доброго времени суток!
Обычно инициализирую порты так:

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

DDRB=0b11111111;
PORTB=0b00000000;

но иногда инициализирую так:

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

DDRB=0b11111111;

А PORTB=0b00000000; - не пишу, потому что порты принимают нулевое значение итак.
Но тут стал немного сомневаться всегда ли при втором виде инициализации на выходах портах ноль, или все таки может быть неопределенность при работе реального устройства(в Proteus вроде все нормально работает)?
Все гениальное - просто
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

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

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

Сообщение Z_h_e »

Добавлю про протеус. Есть область память, которую МК не инициализирует, собственно вся остальная, кроме регистров в/в. Протеус инициализирует ее нулями, в железе будет неизвестное значение.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

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

Сообщение COKPOWEHEU »

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

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

Сообщение Z_h_e »

По-моему я тоже самое сказал, не?
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

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

Сообщение COKPOWEHEU »

Z_h_e писал(а):Добавлю про протеус. Есть область память, которую МК не инициализирует
Возможно. Мне после gcc показалось что вы говорите о чем-то вроде секции .noinit
haro357
Родился
Сообщения: 2
Зарегистрирован: Вт май 12, 2015 07:54:07
Откуда: Мелитополь

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

Сообщение haro357 »

Здравствуйте!
Проблема с AVR Studio 4.19. Меняется панель STK500 (иконки становятся 'AUTO'), и постоянно нужно указывать порт подключения. Стандартные [img]https://drive.google.com/open?id=0B4jTQaXphbLSNlB4NUxmMmRORjg[/img] изменились на [img]https://drive.google.com/open?id=0B4jTQaXphbLScnJqNXBwaklSY2s[/img]
Студию переустанавливал, при первом запуске все норм, а потом снова меняются (При запуске студии все норм, но при открытии проекта меняются).
Может кто сталкивался с такой ситуацией, подскажите как решить проблему, раньше такого не было.
Аватара пользователя
_dark
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт апр 26, 2012 14:30:40
Откуда: под Москвой

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

Сообщение _dark »

Добры день. Возникла проблемка под AtmelStudio 6.0...

Периодически "портится" (неправильно вычисляется) переменная
result при расчете произведения float и uint16
строка
result = gLS * (float)worksegm;
то правильно рассчитывается например, результат 0x44CA0000
то бред типа 0x78F00000

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

float CalcOL(uint8_t* pbuf, uint16_t lenght, uint16_t cursegm)
{
   float addsegm, result;
   uint16_t worksegm;

   ....
   stTg.DWord  = ....;              // считает правильно
   addsegm =  stTg.DWord * (float)(*(pbuf + cursegm) - *(pbuf + cursegm));   // считает правильно
                                             // stTg.DWord // - глобальная переменная
   worksegm = lenght - cursegm;    // считает правильно
   result = gLS * (float)worksegm;   // периодически ошибается !!!
                                                        // float gLS; //- глобальная константа
   result += addsegm;

   return result;
}


может у кого будет хоть одна мысль в чем засада....
вроде "не первый раз замужем", на на такой глюк не наталкивался

могу сформулировать вопрос короче:
кто нибудь наталкивался на то, что GCC считает умножение двух аргументов смешенного типа неправильно?

зы
смотрю результат любой переменной через тест-массив так

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

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   stFloat.DWord = result;      //!!!!!!!!!!!!!!!!!!!!
   for(uint8_t k=0;k<4;k++)          //!!!!!!!!!!!!!!!!!!!!
      stTest16[k] = stFloat.Byte[3-k];   //!!!!!!!!!!!!!!!!!!!!
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


зызы
- прерывания все запрещены на момент расчета
- вышеприведенный код заполнения тест-массива ставится сразу за контролируемым оператором(-ми)
- никакими дебагерами не пользую
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

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

Сообщение Kavka »

_dark, может переполнение или уход в "минус" происходит? А у вас в коде uint16.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

_dark писал(а):кто нибудь наталкивался на то, что GCC считает умножение двух аргументов смешенного типа неправильно?
наталкивался. так и не понял - то ли сам дурак, то ли баг GCC. не уверен, что ваш случай и мой одинаковы, но попробуйте мой метод: подключите к проекту математическую библиотеку, т.е. используйте опцию -lm при компиляции.

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

Мой уютный бложик... заходите!
Аватара пользователя
_dark
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт апр 26, 2012 14:30:40
Откуда: под Москвой

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

Сообщение _dark »

Kavka писал(а):_dark, может переполнение или уход в "минус" происходит? А у вас в коде uint16.


если бы было так я был бы счаслив! ... (как мне мало нужно для счастья :)) )

наверное нужно пояснить

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

worksegm = lenght - cursegm;

lenght >= cursegm всегда

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

result = gLS * (float)worksegm;

в пределе 16.0*1024, явно влезет во float
и самое главное я контролирую на каждый момент вычисления все параметры с помощью массива stTest16[]
каждый параметр, например:

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

   worksegm = lenght - cursegm - 1;
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   stInt.Word = worksegm;            //!!!!!!!!!!!!!!!!!!!!
   for(uint8_t k=0;k<2;k++){          //!!!!!!!!!!!!!!!!!!!!
      stTest16[k] = stInt.Byte[1-k];   //!!!!!!!!!!!!!!!!!!!!
      }   
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/

на момент расчета, следующие операторы кладут каждую переменную в массив, и эта часть массива больше не меняется до следующего расчета,
т.е. данные которые я вижу, считывая stTest16[] синхронны и верны на момент расчета (расчет происходит редко раз в несколько секунд и управляется внешней командой, а ее можно всегда остановить)
...
пока выкрутился заменив произведение суммой, но чувство своей ущербности не исчезает

ARV писал(а):... подключите к проекту математическую библиотеку, т.е. используйте опцию -lm при компиляции.
.


ARV похоже это правильный пинок...
Аватара пользователя
_dark
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт апр 26, 2012 14:30:40
Откуда: под Москвой

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

Сообщение _dark »

ARV писал(а):ARV похоже это правильный пинок...


...нет не помогло...
Правильно включаю?

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

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

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

Сообщение ARV »

я с makefile не очень дружу... в своем проекте я добавлял эту опцию для запуска avr-gcc, который сам уже потом линкер вызывает - и идет эта опция к линкеру или требуется самому компилятору - этого я не знаю :(
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
_dark
Встал на лапы
Сообщения: 93
Зарегистрирован: Чт апр 26, 2012 14:30:40
Откуда: под Москвой

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

Сообщение _dark »

Судя по настройкам в IDE опция m относится к линкеру.
(но сам пользую только makefile)

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

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

Сообщение ARV »

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

Мой уютный бложик... заходите!
Ответить

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