RP2040 как альтернатива

ecoins
Полковник
Сообщения: 4005
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 152 раза

RP2040 как альтернатива

Сообщение ecoins »

Ingwar писал(а): 25 янв 2023, 09:16 Провел тест вычислений с флоат - жесточайшее разочарование...
Ingwar писал(а): 25 янв 2023, 09:16 Это фиаско
AVR на максималках (
Да, говорили мне об этом, но как-то не придал значение. Теперь озадачен...
Круг применений сужается... Но не глобально :smile469:
И это значит, что STM32F4 выходит в лидеры предпочтений для серьезных применений (научные исследования, промышленная автоматизация с двигающими устройствами и пр.).
А еще из доступного есть ST32H7
https://www.compel.ru/lib/146567 (480мГц);
https://aliexpress.ru/item/100500446690 ... 4aa6YHFNRX
Ingwar писал(а): 25 янв 2023, 09:16 Интересное добавление к ядру от Earle Philhower's
https://github.com/khoih-prog/RPI_PICO_TimerInterrupt
Да, очень интересный разработчик (khoin-prog) из Канады. Пишет все основательно и понятно, и в тренде времени Один из его "коньков" - таймеры и прерывания. Много написано для ESP32.
По Wi-Fi для Raspberry Pi Pico тоже есть наработки.
======================
Вы очень основательно и глубоко исследуете возможности контроллеров.
Если чем-то можем быть полезны(чипы, модули, платы, библиотеки) готовы принять посильное участие в поддержке Вашей работы. Нам это очень интересно.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2409
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 18 раз

RP2040 как альтернатива

Сообщение Dryundel »

Ingwar писал(а): 25 янв 2023, 09:16 Провел тест вычислений с флоат - жесточайшее разочарование...
Точность всего семь знаков!!! Не важно где запятая. Например в результате вычислений получили 1234567,8 и в этом числе 100% число "8" НЕВЕРНОЕ.
А если результат 87654321,01 то НЕВЕРНЫЕ цифры начиная с "1" и далее вправо.
Это фиаско
Попробуйте использовать double вместо float.
Есть подозрение, что для RP2040 это не одно и то же.
Ядро Cortex-M0+ не содержит блока вычислений с плавающей запятой. Это эмулируется библиотеками.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

RP2040 как альтернатива

Сообщение Ingwar »

Dryundel писал(а): 25 янв 2023, 14:39 Попробуйте использовать double вместо float.
Попробую.
ecoins писал(а): 25 янв 2023, 13:09 Вы очень основательно и глубоко исследуете возможности контроллеров.
тут Вы реально "пересаливаете" :no:
Мой уровень начальный (хоть бы не конечный). То, что тестирую под свои конкретные задачи никоим образом не отображает глубину исследования. У нас на форуме есть более "глубокие" специалисты :yes:
Жаль, что некоторые из них очень скромны и не радуют нас своими знаниями.
С другой стороны все, до чего дошел сам, гораздо лучше запоминается/понимается и будет хорошим фундаментом для следующих познаний.

Отправлено спустя 26 минут 55 секунд:
Dryundel писал(а): 25 янв 2023, 14:39 Попробуйте использовать double вместо float.
Начал искать как правильно "обозвать" переменные. Добрался до этого https://github.com/raspberrypi/pico-sdk ... ico_double
И пока не понимаю, какой синтаксис использовать....)
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2409
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 18 раз

RP2040 как альтернатива

Сообщение Dryundel »

[ref]Ingwar[/ref], тупо замени float на double в простом вычислительном скетче и проверь правильность на калькуляторе.
Не факт что сработает. Это теоретические измышления. :)
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

RP2040 как альтернатива

Сообщение Ingwar »

Dryundel писал(а): 25 янв 2023, 16:23 Это теоретические измышления.
Прокатило ))) спасибо. 13 знаков верно.
Щас измерю время расчета, а жалуются - долго считает.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Phazz
Полковник
Сообщения: 3114
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 231 раз
Поблагодарили: 110 раз

RP2040 как альтернатива

Сообщение Phazz »

Тема действительно не для болталки уже ).
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

RP2040 как альтернатива

Сообщение rw6cm »

[ref]Ingwar[/ref],
Точность выше 6 знаков float в FLProg проблематична.
Здесь описывал Нюансы при создании проекта GPS в FLProg. с чем приходится сталкиваться. может что то понадобиться.
Win10-64, FLProg (portable)
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

RP2040 как альтернатива

Сообщение Ingwar »

Докладываю по математике)
Методика измерения не претендуют на правильность. Замерял деление.
Сначала объявлял тип переменных (числитель, знаменатель, результат одинаковые).
Сразу присвоил числителю и знаменателю значение "1".
Ну а в loop по классике типо такого

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

 temp_=micros(); 
 _gtv3 = (_gtv2)/(_gtv5);        
 t_out =micros() - temp_;
Итоги на частоте 133МГц:
без знаковые (byte, int, long) - 12us
знаковые (int, long) - 17us
внимание! float - 16us
duble - 20us
Все измерения имели 100% повторяемость при более 5 попыток каждого.

Отправлено спустя 5 минут 33 секунды:
rw6cm писал(а): 25 янв 2023, 17:38 Здесь описывал Нюансы при создании проекта GPS в FLProg. с чем приходится сталкиваться. может что то понадобиться.
Спасибо. Прошло мимо меня...
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2409
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 18 раз

RP2040 как альтернатива

Сообщение Dryundel »

Ingwar писал(а): 25 янв 2023, 17:42 внимание! float - 16us
duble - 20us
Так, это уже интересно. Если duble тратит больше времени, чем float, вероятно расчеты идут по двойной точности. Уже хорошо.
Ingwar писал(а): 25 янв 2023, 17:42 Докладываю по математике)
А где доклад по математике? :)
На сколько я помню претензии были к точности расчетов с плавающей точкой.
Аватара пользователя
Phazz
Полковник
Сообщения: 3114
Зарегистрирован: 17 окт 2016, 15:38
Откуда: Сургут
Имя: Анатолий
Благодарил (а): 231 раз
Поблагодарили: 110 раз

RP2040 как альтернатива

Сообщение Phazz »

[ref]Ingwar[/ref], лучше замерять на большом количестве итераций.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

RP2040 как альтернатива

Сообщение Ingwar »

Написанные выше результаты нельзя считать верными )))
Сделал измерение с двумя действиями деления.
Данные замера для float увеличились на 2мкс, для double на 4 мкс, для byte на 2мкс, для int на 2мкс, для unsigned long на 2-3 мкс)))
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2409
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 18 раз

RP2040 как альтернатива

Сообщение Dryundel »

rw6cm писал(а): 25 янв 2023, 17:38 Точность выше 6 знаков float в FLProg проблематична.
Виновата не сама FLProg, а то, что в ней нет duble.
На 16 битах ее и не требуется. Точность 6 знаков обусловлена именно этим. А раз ESP32 может давать гораздо выше точность, то и RP2040 теоретически должен.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

RP2040 как альтернатива

Сообщение Ingwar »

Phazz писал(а): 25 янв 2023, 17:58 лучше замерять на большом количестве итераций.
Ну точнее наверное делать не столько много вычислений, сколько смотреть на изменения при добавлении новых.
ИМХО.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2409
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 18 раз

RP2040 как альтернатива

Сообщение Dryundel »

Ingwar писал(а): 25 янв 2023, 09:16 Точность всего семь знаков!!! Не важно где запятая...
Так что с точностью при использовании duble?
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

RP2040 как альтернатива

Сообщение rw6cm »

Dryundel писал(а): 25 янв 2023, 18:01 Виновата не сама FLProg, а то, что в ней нет duble.
Об этом и еще других типах чисел Сергея просили еще с первых версий FLProg, но ... :)
Win10-64, FLProg (portable)
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

RP2040 как альтернатива

Сообщение Ingwar »

Dryundel писал(а): 25 янв 2023, 18:13 Так что с точностью при использовании duble?
viewtopic.php?t=8404&start=20#p120565
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2409
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Поблагодарили: 18 раз

RP2040 как альтернатива

Сообщение Dryundel »

Упс. Пропустил. :) Сори.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

RP2040 как альтернатива

Сообщение Ingwar »

Phazz писал(а): 25 янв 2023, 17:58лучше замерять
Думаю что измерять нужно расчетами из даташита)))
Поясню.
Эта конструкция выполняется за 12мкс

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

  temp_=micros();
               _gtv3 = (_gtv2)/(_gtv5);
       _gtv3 = (_gtv5)/(_gtv2);
            t_out =micros() - temp_;
а эта за 13-14мкс

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

  temp_=micros();
               _gtv3 = (_gtv2)/(_gtv5);
       _gtv5 = (_gtv3)/(_gtv2);
            t_out =micros() - temp_;
а эта за 14мкс

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

  temp_=micros();
               _gtv3 = (_gtv2)/(_gtv5);
       _gtv2 = (_gtv3)/(_gtv5);
            t_out =micros() - temp_;
а эта за 12-13мкс

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

  temp_=micros();
               _gtv3 = (_gtv2)/(_gtv5);
       _gtv5 = (_gtv3)/(_gtv3);
            t_out =micros() - temp_;
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
Ingwar
Полковник
Сообщения: 1928
Зарегистрирован: 28 окт 2015, 22:47
Откуда: Ленобласть
Имя: Игорь
Поблагодарили: 2 раза

RP2040 как альтернатива

Сообщение Ingwar »

Правильно ли я понимаю из этого файла https://github.com/earlephilhower/ardui ... rc/SPI.cpp
что назначить пины SPI я могу только из предложенного перечня (другие по аналогии)?

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

bool SPIClassRP2040::setCS(pin_size_t pin) {
    constexpr uint32_t valid[2] = { __bitset({1, 5, 17, 21}) /* SPI0 */,
                                    __bitset({9, 13, 25, 29})  /* SPI1 */
                                  };
    if ((!_running) && ((1 << pin) & valid[spi_get_index(_spi)])) {
        _CS = pin;
        return true;
    }

    if (_running) {
        panic("FATAL: Attempting to set SPI%s.CS while running", spi_get_index(_spi) ? "1" : "");
    } else {
        panic("FATAL: Attempting to set SPI%s.CS to illegal pin %d", spi_get_index(_spi) ? "1" : "", pin);
    }
    return false;
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.
ecoins
Полковник
Сообщения: 4005
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 152 раза

RP2040 как альтернатива

Сообщение ecoins »

Ingwar писал(а): 26 янв 2023, 16:51 Правильно ли я понимаю из этого файла https://github.com/earlephilhower/ardui ... rc/SPI.cpp
что назначить пины SPI я могу только из предложенного перечня (другие по аналогии)?
Мы исходим из того, что именно так - непосредственно в dataSheet не смотрели.
Ответить

Вернуться в «Пользовательские контроллеры»

Кто сейчас на конференции

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