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

Глюканул AVR Studio 4.19

Пн авг 30, 2021 23:58:44

Приветствую. Ничего не предвещало беды, и до сегодняшнего дня _delay_ms (V) работало как часы и не вызывало проблем, но сегодня этот кусок дерьма потребовал от меня "целочисленную константу". В чём прикол? Как исправить? Можно ли сбросить как-то все настройки программы на первоначальные? Поможет ли установка Atmel Studio 5/6/7?

Добавлено after 51 second:
Переустановка программы не помогла.

Re: Глюканул AVR Studio 4.19

Вт авг 31, 2021 01:45:04

А вы какую ему скормили?

Re: Глюканул AVR Studio 4.19

Вт авг 31, 2021 02:00:11

mehanik_all писал(а):этот кусок дерьма
Хороший отзыв об инструменте :facepalm:
Зачем тогда пользуетесь ? Выкиньте на свалку его ...

Re: Глюканул AVR Studio 4.19

Вт авг 31, 2021 03:38:01

А вы какую ему скормили?




mehanik_all писал(а):этот кусок дерьма
Хороший отзыв об инструменте :facepalm:
Зачем тогда пользуетесь ? Выкиньте на свалку его ...


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

Добавлено after 1 hour 17 minutes 14 seconds:
Откатил программу до версии 4.18. Пока полёт нормальный. Совет "выкинуть на свалку" помог :)))

Re: Глюканул AVR Studio 4.19

Вт авг 31, 2021 04:41:06

Вообще то 4.19 самая устойчивая версия студии...

Re: Глюканул AVR Studio 4.19

Вт авг 31, 2021 08:15:04

А простая переустановка и не поможет.
Надо для начала и автоматическую деинсталяцию и удаление вручную остатков делать.
8)
Возможно на ПК еще какие-то варианты GCC были позднее установлены (из ардуинки к примеру или еще из чего) да прописались где-то... или диск... сбойнул...
:dont_know:

Re: Глюканул AVR Studio 4.19

Вт авг 31, 2021 09:00:09

_delay_ms принимает только константу, туда нельзя писать переменную, если раньше работало то не должно было лучше напишите так
Код:
void delay(int v)
{
while (v)
{
_delay_ms(1);
V--;
}
}


И используйте функцию delay.

P. S.
Хотя если переменная не менялась то могло бы и работать

Re: Глюканул AVR Studio 4.19

Вт авг 31, 2021 14:40:15

опять сказки какие-то рассказываете...
вот же прототип:
Код:
static inline void _delay_ms(double __ms) __attribute__((always_inline));

Re: Глюканул AVR Studio 4.19

Вт авг 31, 2021 14:53:25

В общем поковырялся ещё пару часов. Снёс всё начисто. ОС Win7 64. Установил 4.19, WinAVR. В чистом виде всё это дело не компилит, хз почему, нужен AVR Toolchain. Это у всех так или только у меня? Ставлю его. И вот тут и зарыта собака, delay.h компилятор берёт из тулчейна, я его переименовал и закинул delay.h из WinAVR. Теперь код _delay_ms (V) работает как на 4.18, на который кстати у меня AVR Toolchain не требовался и на WinXP не установлен с 4.18. В чём прикол с этим AVR Toolchain не знаю, разбираться пока лень, если кто в курсе пишите.

Re: Глюканул AVR Studio 4.19

Вт авг 31, 2021 14:55:11

да и кодик ТС не айс.
вот примерная конструкция перебора входов АЦП:
Код:
int_adc++;

if (
int_adc == 20) {
    
int_adc 0;
    
ADMUX &= ~(_BV(MUX1) | _BV(MUX0)); //ADC0
}
else
if (
int_adc == || int_adc == 10 || int_adc == 15) {
    
ADMUX++;//next input

Re: Глюканул AVR Studio 4.19

Пн сен 06, 2021 21:45:44

C:\Program Files (x86)\Atmel\AVR Tools\AVR Toolchain\avr\include\util\delay.h
Там есть описание поведения (у меня 4.18), судя по нему, использовать переменную можно, но...
Настоятельно рекомендуют передавать на вход константное выражение, которое может быть вычислено на этапе компиляции, и не отключать оптимизации.
В противном случае вы получите разжиревший бинарник и сильно (даже в разы) увеличенные задержки, из за арифметики с double в рантайме.

Re: Глюканул AVR Studio 4.19

Вт сен 07, 2021 03:29:31

вообще-то все уже на таймерах и прерываниях сидят, а если очень нужны задержки, то кто-то давным-давно написал либу на асме без использования регистров.
лично я не помню уже где ее взял, но пользуюсь при необходимости
Вложения
wait.rar
(1.26 KiB) Скачиваний: 101

Re: Глюканул AVR Studio 4.19

Вт сен 07, 2021 21:42:52

Это да, но ТС спрашивал про софтовую.
Еще можно точно отмерять задержки через АЦП, USART, TWI, SPI, если все таймеры заняты какой то другой работой.

Re: Глюканул AVR Studio 4.19

Сб сен 11, 2021 16:50:52

вы получите разжиревший бинарник и сильно (даже в разы) увеличенные задержки, из за арифметики с double в рантайме.

Для небольшого кода это не особо важно, мне просто нужно было по быстрому проверить железо. Я написал небольшой хидер со своими функциями delay, на будущее. А по сути, как оказалось, виновата не студия, а используемые библиотеки. В 4.19 используется по умолчанию библиотека Toolchain, в 4.18 WinAVR, и у них разные delay.h. Можно в 4.19 в настройках проекта указать пути к WinAVR, и всё будет как в старых версиях студии. Думаю тему можно закрывать на этом.
Ответить