Например TDA7294

Форум РадиоКот • Просмотр темы - Глюканул AVR Studio 4.19
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб дек 13, 2025 05:37:59

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Глюканул AVR Studio 4.19
СообщениеДобавлено: Пн авг 30, 2021 23:58:44 
Открыл глаза
Аватар пользователя

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Глюканул AVR Studio 4.19
СообщениеДобавлено: Вт авг 31, 2021 01:45:04 
Друг Кота

Карма: 28
Рейтинг сообщений: 568
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4550
Откуда: Украина, Славутич
Рейтинг сообщения: 0
А вы какую ему скормили?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Глюканул AVR Studio 4.19
СообщениеДобавлено: Вт авг 31, 2021 02:00:11 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4593
Откуда: Планета Земля
Рейтинг сообщения: 3
Медали: 1
Получил миской по аватаре (1)
mehanik_all писал(а):
этот кусок дерьма
Хороший отзыв об инструменте :facepalm:
Зачем тогда пользуетесь ? Выкиньте на свалку его ...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Глюканул AVR Studio 4.19
СообщениеДобавлено: Вт авг 31, 2021 03:38:01 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт авг 13, 2013 12:13:07
Сообщений: 47
Рейтинг сообщения: 0
А вы какую ему скормили?


Спойлер
Код:
#define F_CPU 8000000UL // Я использую внутренний генератор 8 МГц

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <math.h>

volatile uint8_t V=0;

volatile uint8_t int_adc=0;


ISR(ADC_vect)      //функция прерывания АЦП
{
V=ADCH;   //запись значения с вывода ADC старших 8-ми бит с учётом выравнивания ADCW влево (ADLAR=1)
}



int main(void){

   DDRD |= _BV (PD6)| _BV (PD5);      //установить как выход (установить 1)
   PORTD &=~ (_BV (PD6)| _BV (PD5));   //установить 0 на выводах

   DDRB |= _BV (PB5);      //установить как выход (установить 1)
   PORTB &=~ _BV (PB5);   //установить 0 на выводах

   

   //TIMSK0 |= _BV(TOIE0);   //разрешить прерывание по переполнению таймера Т0
   TCCR0A &=~ (_BV(WGM01)| _BV(WGM00));      //Режим работы
   TCCR0B &=~ _BV(WGM02);                  //таймера Normal
   TCCR0B |= _BV(CS02)| _BV(CS00);      //предделитель таймера
   TCCR0B &=~ _BV(CS01);            //Т0 clk/1024
   TCCR0A &=~ _BV(COM0A1);      //Управление выводами OCn
   TCCR0A |= _BV(COM0A0);      //меняется на противоположное

   ACSR |= _BV (ACD);   //выключить компаратор

   ADMUX |= _BV (REFS1)| _BV (REFS0);   //источник опорного напряжения - внутренний 1,1В
   //ADMUX |= _BV (MUX1)| _BV (MUX0);   //входной канал MUX3...0
   ADMUX |= _BV (ADLAR);   //выравнивание результата преобразования - влево (для удобства 8 бит в регистре ADCH)
   ADCSRA |= _BV (ADEN);   //включить АЦП
   ADCSRA |= _BV (ADATE);   //выбор режима работы АЦП - по ADTS2...0
   ADCSRA |= _BV (ADIE);   //разрешить прерывание
   ADCSRA |= _BV (ADPS2)| _BV(ADPS0);   //выбор частоты преобразования - 250 кГц
   ADCSRB |= _BV (ADTS2);   //выбор источника сигнала для запуска преобразования - переполнение таймера Т0
         
   sei ();

   while(1){

   
   if (int_adc<20) int_adc++;
   else int_adc=0;

   if (int_adc>=0 && int_adc<=5)
        {
        ADMUX &=~ (_BV (MUX1)| _BV (MUX0));   //ADC0
        }
   if (int_adc>=6 && int_adc<=10)
        {
        ADMUX |= _BV (MUX0);            //ADC1
      ADMUX &=~ _BV (MUX1);
        }
   if (int_adc>=11 && int_adc<=15)
        {
      ADMUX &=~ _BV (MUX0);            //ADC2
        ADMUX |= _BV (MUX1);
        }
   if (int_adc>=16 && int_adc<=20)
        {
      ADMUX |= _BV (MUX0);            //ADC3
        ADMUX |= _BV (MUX1);
        }

   ADCSRA |= _BV (ADSC);   //запуск АЦП (запускается один раз)

   PORTB &=~ _BV (PB5);
   _delay_ms (V);
   PORTB |= _BV (PB5);
   _delay_ms (V);

   }
}


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


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

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


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Глюканул AVR Studio 4.19
СообщениеДобавлено: Вт авг 31, 2021 04:41:06 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 139
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1480
Рейтинг сообщения: 0
Вообще то 4.19 самая устойчивая версия студии...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Глюканул AVR Studio 4.19
СообщениеДобавлено: Вт авг 31, 2021 08:15:04 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1493
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15285
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
А простая переустановка и не поможет.
Надо для начала и автоматическую деинсталяцию и удаление вручную остатков делать.
8)
Возможно на ПК еще какие-то варианты GCC были позднее установлены (из ардуинки к примеру или еще из чего) да прописались где-то... или диск... сбойнул...
:dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Глюканул AVR Studio 4.19
СообщениеДобавлено: Вт авг 31, 2021 09:00:09 
Встал на лапы

Зарегистрирован: Вс фев 21, 2021 13:01:40
Сообщений: 80
Откуда: Прокопьевск
Рейтинг сообщения: 0
_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 
Опытный кот
Аватар пользователя

Карма: -14
Рейтинг сообщений: -98
Зарегистрирован: Ср дек 01, 2010 00:38:15
Сообщений: 882
Откуда: Харьков
Рейтинг сообщения: 0
опять сказки какие-то рассказываете...
вот же прототип:
Код:
static inline void _delay_ms(double __ms) __attribute__((always_inline));

_________________
ohmycode!
primuss3.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Глюканул AVR Studio 4.19
СообщениеДобавлено: Вт авг 31, 2021 14:53:25 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт авг 13, 2013 12:13:07
Сообщений: 47
Рейтинг сообщения: 0
В общем поковырялся ещё пару часов. Снёс всё начисто. ОС 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 
Опытный кот
Аватар пользователя

Карма: -14
Рейтинг сообщений: -98
Зарегистрирован: Ср дек 01, 2010 00:38:15
Сообщений: 882
Откуда: Харьков
Рейтинг сообщения: 0
да и кодик ТС не айс.
вот примерная конструкция перебора входов АЦП:
Код:
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

_________________
ohmycode!
primuss3.com


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Глюканул AVR Studio 4.19
СообщениеДобавлено: Пн сен 06, 2021 21:45:44 
Потрогал лапой паяльник

Зарегистрирован: Пт окт 28, 2011 16:01:18
Сообщений: 347
Рейтинг сообщения: 0
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 
Опытный кот
Аватар пользователя

Карма: -14
Рейтинг сообщений: -98
Зарегистрирован: Ср дек 01, 2010 00:38:15
Сообщений: 882
Откуда: Харьков
Рейтинг сообщения: 0
вообще-то все уже на таймерах и прерываниях сидят, а если очень нужны задержки, то кто-то давным-давно написал либу на асме без использования регистров.
лично я не помню уже где ее взял, но пользуюсь при необходимости


Вложения:
wait.rar [1.26 KiB]
Скачиваний: 125

_________________
ohmycode!
primuss3.com
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Глюканул AVR Studio 4.19
СообщениеДобавлено: Вт сен 07, 2021 21:42:52 
Потрогал лапой паяльник

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Глюканул AVR Studio 4.19
СообщениеДобавлено: Сб сен 11, 2021 16:50:52 
Открыл глаза
Аватар пользователя

Зарегистрирован: Вт авг 13, 2013 12:13:07
Сообщений: 47
Рейтинг сообщения: 0
вы получите разжиревший бинарник и сильно (даже в разы) увеличенные задержки, из за арифметики с double в рантайме.

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


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 39


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y