Например TDA7294

Форум РадиоКот • Просмотр темы - Прошу помочь разобраться - кто хуже в школе учился я или МК?
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт дек 19, 2025 21:28:46

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


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



Начать новую тему Ответить на тему  [ Сообщений: 42 ]    , 2,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Ср мар 01, 2023 20:45:44 
Мудрый кот

Карма: 25
Рейтинг сообщений: 489
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1807
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
...продемонстрируйте пожалуйста код, в котором pow(2,2); без костылей результат 4 дает.


Вложения:
pow.jpg [60.49 KiB]
Скачиваний: 64
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Ср мар 01, 2023 20:47:47 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
Симулятор? )
Результат аппаратнозависим.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Ср мар 01, 2023 20:49:44 
Мудрый кот

Карма: 25
Рейтинг сообщений: 489
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1807
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Arduino UNO, Arduino IDE v1.8.19
(Не "исправлено" :), "ошибки" есть в большей степени).
Цитата:
10^0 = 1.00
10^1 = 10.00
10^2 = 100.00
10^3 = 1000.00
10^4 = 10000.00
10^5 = 99999.98
10^6 = 999999.68
10^7 = 9999984.00

---
еще можно использовать: до ^6
Код:
  for (byte i = 0; i < 8; i++) {
...   
    float z = pow(10, i);
    long j = (long)round(z);
...

Цитата:
10^0 = 1
10^1 = 10
10^2 = 100
10^3 = 1000
10^4 = 10000
10^5 = 100000
10^6 = 1000000
10^7 = 9999984

А лучше (мало памят) и точно: с циклом, с умножением.
И Ардуино тут не при чем, как писали коллеги.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Ср мар 01, 2023 21:03:22 
Электрический кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 47
Зарегистрирован: Вс мар 01, 2009 19:47:16
Сообщений: 1046
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Viper_Snake писал(а):
Исходя из этого, если я не могу с помощью данной функции без костылей получить тот результат, который ожидается, имею полное право считать эту функцию ущербной.
Нет. Эта функция изначально такая в Си. Просто надо как-то помнить язык, ну и в случае непонятных результатов всегда обращать в первую очередь внимание на типы. Сколько граблей поломано даже с простым знаковое-беззнаковое, когда по ошибке не то взято. А плавающая точка это всегда источник счастия...


Да блин... :facepalm: я же написал - тип переменной uint16_t - двухбайтное, целое, беззнаковое.

_________________
Не важно чем все начнется. Важно чем кончится!


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Ср мар 01, 2023 21:07:38 
Мудрый кот

Карма: 25
Рейтинг сообщений: 489
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1807
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Лучше не использовать эту функцию. Есть много способов получить результат без использования pow.
Да, с математической стороны интересно.


Последний раз редактировалось veso74 Ср мар 01, 2023 21:10:42, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Ср мар 01, 2023 21:10:32 
Электрический кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 47
Зарегистрирован: Вс мар 01, 2009 19:47:16
Сообщений: 1046
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Arduino UNO, Arduino IDE v1.8.19
(Не "исправлено" :), "ошибки" есть в большей степени).
Цитата:
10^0 = 1.00
10^1 = 10.00
10^2 = 100.00
10^3 = 1000.00
10^4 = 10000.00
10^5 = 99999.98
10^6 = 999999.68
10^7 = 9999984.00

---
еще можно использовать: до ^6
Код:
  for (byte i = 0; i < 8; i++) {
...   
    float z = pow(10, i);
    long j = (long)round(z);
...

Цитата:
10^0 = 1
10^1 = 10
10^2 = 100
10^3 = 1000
10^4 = 10000
10^5 = 100000
10^6 = 1000000
10^7 = 9999984

А лучше (мало памят) и точно: с циклом, с умножением.
И Ардуино тут не при чем, как писали коллеги.


Если мало памяти, всякие float и double лучше вовсе обходить стороной. На 328 меге можно особо не париться, там ее как у дурака фантиков. Мои ходовые камни это тини 13 и серия 24-84, вот там все гораздо интереснее.

_________________
Не важно чем все начнется. Важно чем кончится!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Ср мар 01, 2023 21:13:16 
Мудрый кот

Карма: 25
Рейтинг сообщений: 489
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1807
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Я согласен. ATtiny13A тоже любимый МК.
Но пока в теме мы не прокомментировали аппаратную часть ни разу. Пишем о математике и коде.
А например, сегодня на столе была экспериментальная установка на следующего МК в коллекцию, есть float(32), float(48), float(64), int32, int48, int64. Для меня это тоже интересно.
P.S. Пожалуйста, не цитируйте все сообщения.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Ср мар 01, 2023 21:32:13 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
Да блин... :facepalm: я же написал - тип переменной uint16_t - двухбайтное, целое, беззнаковое.
и? pow() имеет переопределение, работающее с uint16_t ? может хватит тупить-то?

нет никаких проблем с возведением в целую степень. мартышка и очки начинается. Функция кривая... ну сделай некриво 3.14^5.76


Последний раз редактировалось Martian Ср мар 01, 2023 21:35:47, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Ср мар 01, 2023 21:42:18 
Электрический кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 47
Зарегистрирован: Вс мар 01, 2009 19:47:16
Сообщений: 1046
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Прошу прощения за оверквотинг - с телефона не очень удобно редактировать пост. Ну насчет аппаратной части под рукой сейчас только 328.

Добавлено after 8 minutes 18 seconds:
и? pow() имеет переопределение, работающее с uint16_t ? может хватит тупить-то?

Алилуйя! Функция принимает оба аргумента в виде double. А мужики то и не знают.

_________________
Не важно чем все начнется. Важно чем кончится!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Ср мар 01, 2023 21:49:08 
Мудрый кот

Карма: 25
Рейтинг сообщений: 489
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1807
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
...Функция принимает оба аргумента в виде double. А мужики то и не знают.

написано черным по белому:
https://www.arduino.cc/reference/en/lan ... /math/pow/
Цитата:
Syntax
pow(base, exponent)

Parameters
base: the number. Allowed data types: float.
exponent: the power to which the base is raised. Allowed data types: float.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Ср мар 01, 2023 21:50:06 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
ну только один пока не знает. Остается теперь догадаться о типе результате.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Ср мар 01, 2023 21:52:17 
Потрогал лапой паяльник
Аватар пользователя

Карма: 4
Рейтинг сообщений: 79
Зарегистрирован: Сб фев 18, 2023 21:51:01
Сообщений: 309
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
И, если не затруднит, продемонстрируйте пожалуйста код, в котором pow(2,2); без костылей результат 4 дает.
Дык демонстрировали ведь уже на предыдущей странице:
вот только что добавил в в свой проект на атмеге48 три ваших строчки и заказал delay(c)
uint16_t a = 2;
uint16_t b = 2;
uint16_t c = pow(a,b);
delay(c);
и вот что ардуина 1.8.13 мне накомпилировала:
ldi r22, 0x04 ; 4
ldi r23, 0x00 ; 0
ldi r24, 0x00 ; 0
ldi r25, 0x00 ; 0
rcall .-1574 ; 0x1c6 <delay>

Без объявления float ардуина сгенерировала целочисленный результат, равный 4. Что просили, то и получили. Сколько ещё надо демонстрировать?

_________________
Всего доброго.
Евгений.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Ср мар 01, 2023 22:05:30 
Мудрый кот

Карма: 25
Рейтинг сообщений: 489
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1807
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Убрать оптимизацию. по умолчанию на макс.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Чт мар 02, 2023 14:02:50 
Потрогал лапой паяльник
Аватар пользователя

Карма: 4
Рейтинг сообщений: 79
Зарегистрирован: Сб фев 18, 2023 21:51:01
Сообщений: 309
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Убрать оптимизацию. по умолчанию на макс.
Зачем же убрать-то? Топикстартер не указывал, что у него оптимизация выключена. А смысл языков высокого уровня в том и состоит, что если кто-то не умеет мыслить логически, то за него надо это делать, в том числе и производить оптимизацию. Я бы посмотрел, как топикстартер стал бы писать на асме возведение в степень (произвольную, разумеется). Особенно для 13-й тиньки, которую тут нахваливали и у которой нет команды умножения.

_________________
Всего доброго.
Евгений.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Чт мар 02, 2023 15:17:24 
Электрический кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 47
Зарегистрирован: Вс мар 01, 2009 19:47:16
Сообщений: 1046
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Господин EATS, я бы попросил вас немного гонор поубавить. В стартовом посте я лишь задал вопрос, почему функция возведения в степень из коробки делает вычисления отличные от ожидаемых, а так же уточнил, что раньше ею никогда не пользовался. И асм тут привязывать не надо - в данном разделе обсуждается язык программирования более высокого уровня. Понадобится на тини13 умножать - умножим, хотя с таким камнем проще без подобных операций обходится.

_________________
Не важно чем все начнется. Важно чем кончится!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Чт мар 02, 2023 16:54:02 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2918
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24613
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Зачем же убрать-то?

А затем, что при включенной никакого возведения в степень может и не быть... Если переменной в коде присвоено единственное значение, то компилятор вправе обойтись без рантайма. Что мы и наблюдаем... :tea:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Чт мар 02, 2023 19:54:44 
Друг Кота

Карма: 49
Рейтинг сообщений: 547
Зарегистрирован: Чт фев 20, 2014 18:57:55
Сообщений: 19492
Рейтинг сообщения: 0
Никогда ею не пользовался, а тут потребовалось по быстрому бегущий огонек на трех регистрах сочинить для ребенка - решил его через степень двойки организовать от лени и на такие вилы напоролся. Программа примитивная до безобразия - считаем степень двойки от 0 до 23 и кормим три регистра результатом .

охтыжблин... нифига себе :)))

_________________
"Вся военная пропаганда, все крики, ложь и ненависть исходят от людей, которые на эту войну не пойдут !" / Джордж Оруэлл /
"Война - это,когда за интересы других,гибнут совершенно безвинные люди." / Уинстон Черчилль /


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Чт мар 02, 2023 20:00:57 
Электрический кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 47
Зарегистрирован: Вс мар 01, 2009 19:47:16
Сообщений: 1046
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Цитата:
охтыжблин... нифига себе :)))

А то. Еще и Три регистра - потрошим четырехбайтную переменную. Байтораздирающее зрелище. :)))

Добавлено after 1 minute 30 seconds:
Зачем же убрать-то?

А затем, что при включенной никакого возведения в степень может и не быть... Если переменной в коде присвоено единственное значение, то компилятор вправе обойтись без рантайма. Что мы и наблюдаем... :tea:


А, кстати да. Переменная то не константой задавалась, а менялась в программе.

_________________
Не важно чем все начнется. Важно чем кончится!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Чт мар 02, 2023 21:04:19 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
сдвиговый регистр как бэ сразу намекает на сдвиг 1 единички, просто изменяя счётчик цикла, куда уж ленивее и никаких переменных не надо...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Прошу помочь разобраться - кто хуже в школе учился я или
СообщениеДобавлено: Чт мар 02, 2023 23:21:16 
Электрический кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 47
Зарегистрирован: Вс мар 01, 2009 19:47:16
Сообщений: 1046
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Цитата:
сдвиговый регистр как бэ сразу намекает на сдвиг 1 единички, просто изменяя счётчик цикла, куда уж ленивее и никаких переменных не надо...

Ну как бы да, но без экспериментов жить скучно. В свое время, при изучении TM1628 экспериментов по оптимизации работы с нею было очень много, пока наиболее быстрый и эффективный метод не был найден.

Добавлено after 1 minute 38 seconds:
Re: Прошу помочь разобраться - кто хуже в школе учился я или МК?
Кстати, кто будет с TM1628 работать - не верьте даташиту родному - она умеет матрицу кнопок 10x2 а не 8x2.

_________________
Не важно чем все начнется. Важно чем кончится!


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

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


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

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


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

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


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