Atmega8 регулировка частоты и амплитуды

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Atmega8 регулировка частоты и амплитуды

Сообщение Starichok51 »

Varlakotam, я там сделал упущение. чтобы деление
freq / 341
было с плавающей точкой, нужно было написать
freq / 341.0
иначе это деление будет целочисленным, и частота не будет меняться плавно, а будут 4 ступеньки частоты скачками.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Varlakotam
Открыл глаза
Сообщения: 52
Зарегистрирован: Сб фев 02, 2019 17:15:10

Re: Atmega8 регулировка частоты и амплитуды

Сообщение Varlakotam »

Starichok51, с плавающей точкой регулировка вернулась к первоначальному состоянию: регулировка появляется с среднего положения подстроечника. Вчера не обратил внимания- с обоими вариантами появились две точки где происходит "срыв" колебаний, частота резко увеличивается, как будто в резонанс входит. Чуток увеличиваю, частота нормализуется до следующей точки. Первая примерно на трети, вторая две трети. Это с экспонентой. С гиперболой (первый вариант) срыв один, примерно на 3/4.
Реклама
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Atmega8 регулировка частоты и амплитуды

Сообщение Starichok51 »

мне не понятно такое поведение, не вижу причин таких провалов в вычислении переменной descr1.
и уже тем более мне не понятна эта "мертвая зона" до среднего положения.
с гиперболой целочисленные вычисления, и причины срыва вообще не должно быть.
сейчас у меня нет возможности проверить формулы в отладчике - я в гостях у дочки. вернусь домой в понедельник, проверю расчеты в Студии.
я на Си для МК не программирую, поэтому не знаю всех деталей программирования на Си.
если как на компе, то нужно приведение типов делать.
по аналогии с компом следовало бы записать
descr1 = (uint16_t)(120 * exp(freq / 341.0))
чтобы плавающую точку привести к целому числу.
попробуй этот вариант приведения типов чисел.

Добавлено after 1 hour 33 minutes 49 seconds:
и для вычислений синуса тоже следовало бы делать приведение типов данных:
t=(uint8_t)(sin(1.57/descr1*i)*Amp);
и так для всех формул вычисления кусочков синуса.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Varlakotam
Открыл глаза
Сообщения: 52
Зарегистрирован: Сб фев 02, 2019 17:15:10

Re: Atmega8 регулировка частоты и амплитуды

Сообщение Varlakotam »

descr1 = (uint16_t)(120 * exp(freq / 341.0)) Так-же только с середины начинается заметная регулировка. Срывов нет. Примерно на 3/4 максимальная частота, дальше завал и опять увеличение до максимальной частоты.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Atmega8 регулировка частоты и амплитуды

Сообщение Starichok51 »

чертовщина... ничего пока не понимаю...
на следующей неделе сам буду разбираться с этими вычислениями в Студии.
еще один момент.
переменную t нужно было объявлять uint8_t, а не uint16_t, так как ШИМ однобайтовый.
тут может быть сбой не в вычислении descr1, а в том, что двухбайтовое число обрезается до однобайтового в функциях PWM1(uint8_t val) и PWM2(uint8_t val).
и при этом обрезании в регистры таймера попадает не то, что нужно.
хотя, значение t не должно превышать 255, и это обрезание не должно повлиять на работу ШИМ. а вдруг...
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
OKF
Это не хвост, это антенна
Сообщения: 1393
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Atmega8 регулировка частоты и амплитуды

Сообщение OKF »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4570402#p4570402"]я на Си для МК не программирую, поэтому не знаю всех деталей программирования на Си.
если как на компе, то нужно приведение типов делать.
по аналогии с компом следовало бы записать
descr1 = (uint16_t)(120 * exp(freq / 341.0))
чтобы плавающую точку привести к целому числу.
попробуй этот вариант приведения типов чисел.[/uquote]
Чёйта. Приведение не требуется, т.к. автоматом приводится к типу результата.
Правила для всех одни - хоть для ПК, хоть для 8 бит МК. Не так ли?
Реклама
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Atmega8 регулировка частоты и амплитуды

Сообщение Starichok51 »

правила разные, так как я уже много программ написал для ПК. там без приведения типов данных сразу выскакивают предупреждение (warning).
для МК, может, это приведение делается автоматически, но я об этом не знаю.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
OKF
Это не хвост, это антенна
Сообщения: 1393
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Atmega8 регулировка частоты и амплитуды

Сообщение OKF »

Starichok51, компилятор какой?
Последний раз редактировалось OKF Пт апр 19, 2024 16:34:56, всего редактировалось 1 раз.
Varlakotam
Открыл глаза
Сообщения: 52
Зарегистрирован: Сб фев 02, 2019 17:15:10

Re: Atmega8 регулировка частоты и амплитуды

Сообщение Varlakotam »

у меня Atmel Studio 7

Добавлено after 57 seconds:
варнингов не выдал
metan
Вымогатель припоя
Сообщения: 593
Зарегистрирован: Ср янв 06, 2010 10:01:46

Re: Atmega8 регулировка частоты и амплитуды

Сообщение metan »

Varlakotam писал(а):варнингов не выдал
это для меня очень странно, должен по идее ругацца на несовпадение типов. Для передачи в функцию грузим в стек двухбайтовое число, а в самой функции извлекаем однобайтовое, так как для ее параметра указан тип uint8_t. Я уже про это писал. Можно попробовать t определить как uint8_t, может проканает :)
Может, настройками компилятора задушили предупреждения? Я со студией очень мало работал, не знаю, где это посмотреть :dont_know:
Varlakotam
Открыл глаза
Сообщения: 52
Зарегистрирован: Сб фев 02, 2019 17:15:10

Re: Atmega8 регулировка частоты и амплитуды

Сообщение Varlakotam »

metan, То что вы пишете для меня странные колдунские заклинания. Единственное понял про компилятор- нет я его не настраивал, ничего не трогал. Всё по умолчанию
metan
Вымогатель припоя
Сообщения: 593
Зарегистрирован: Ср янв 06, 2010 10:01:46

Re: Atmega8 регулировка частоты и амплитуды

Сообщение metan »

Varlakotam писал(а):странные колдунские заклинания
извиняюсь :)
можно попробовать вот эту строчку

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

	uint16_t descr1, descr2, Amp, t;

заменить на

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

	uint16_t descr1, descr2, Amp;
	uint8_t t;
этим самым мы скажем, что число однобайтовое, и передавать нужно именно такой тип. Может, что изменится. Но это не точно :)
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Atmega8 регулировка частоты и амплитуды

Сообщение Starichok51 »

уже писал про uint8_t t.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
OKF
Это не хвост, это антенна
Сообщения: 1393
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Atmega8 регулировка частоты и амплитуды

Сообщение OKF »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4570504#p4570504"]правила разные, так как я уже много программ написал для ПК. там без приведения типов данных сразу выскакивают предупреждение (warning).[/uquote]
Скриншот 19-04-2024 195544.jpg
(50.74 КБ) 50 скачиваний
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Atmega8 регулировка частоты и амплитуды

Сообщение Starichok51 »

OKF, что это было?)
у меня для компа в С++ нет таких объявлений типов, как у тебя.
у меня для беззнаковых есть byte (8 бит), word (16 бит), uint (32 бит).
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
OKF
Это не хвост, это антенна
Сообщения: 1393
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Atmega8 регулировка частоты и амплитуды

Сообщение OKF »

Это было то, где должны были быть предупреждения. По твоему.
Потому и спрашивал, какой компилятор.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Atmega8 регулировка частоты и амплитуды

Сообщение Starichok51 »

тут мы говорим про МК семейства AVR.
в каком МК семейства AVR ты нашел регистр eax?
или ты показал, что у тебя на ПК твой компилятор не дает предупреждения?
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
OKF
Это не хвост, это антенна
Сообщения: 1393
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Atmega8 регулировка частоты и амплитуды

Сообщение OKF »

Я пытаюсь показать что правила С/С++ одни для всех. А варнинги - это предупреждения для тебя, не ошибся ли ты и включаются/выключаются в опциях компилятора. Потому и спрашивал чем ты компилируешь на ПК.
[uquote="Starichok51",url="/forum/viewtopic.php?p=4570504#p4570504"]правила разные, так как я уже много программ написал для ПК. там без приведения типов данных сразу выскакивают предупреждение (warning).
для МК, может, это приведение делается автоматически, но я об этом не знаю.[/uquote]
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Atmega8 регулировка частоты и амплитуды

Сообщение Starichok51 »

у меня майкрософт вижл студио, С++.
и у тебя на картинке я вижу типы данных такие же, как для МК (uint8_t и так далее).
а у меня для целых чисел по другому называются типы данных, я их перечислил выше.
и я в своей студии никакие опции компилятора даже никогда не трогал. и даже никогда не интересовался, есть ли там такие опции.
и если у меня обнаруживается несоответствие типов данных, я всегда получаю варнинги.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Varlakotam
Открыл глаза
Сообщения: 52
Зарегистрирован: Сб фев 02, 2019 17:15:10

Re: Atmega8 регулировка частоты и амплитуды

Сообщение Varlakotam »

Есть скетч на pro Mini Atmega168. Может он что подскажет? И второй вопрос: можно ли мою программу (которая на Atmega8) переделать на Atmega168?
Вложения
final.rar
(3.52 КБ) 56 скачиваний
Ответить

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