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

ecoins
Полковник
Сообщения: 2945
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 454
Откуда: Шатура
Имя: Энвер

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

#21

Сообщение ecoins » 25.01.2023{, 13:09}

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

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#22

Сообщение Dryundel » 25.01.2023{, 14:39}

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

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

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

#23

Сообщение Ingwar » 25.01.2023{, 15:15}

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

Отправлено спустя 26 минут 55 секунд:
Dryundel писал(а):
25.01.2023{, 14:39}
Попробуйте использовать double вместо float.
Начал искать как правильно "обозвать" переменные. Добрался до этого https://github.com/raspberrypi/pico-sdk ... ico_double
И пока не понимаю, какой синтаксис использовать....)
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#24

Сообщение Dryundel » 25.01.2023{, 16:23}

Ingwar, тупо замени float на double в простом вычислительном скетче и проверь правильность на калькуляторе.
Не факт что сработает. Это теоретические измышления. :)

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

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

#25

Сообщение Ingwar » 25.01.2023{, 16:35}

Dryundel писал(а):
25.01.2023{, 16:23}
Это теоретические измышления.
Прокатило ))) спасибо. 13 знаков верно.
Щас измерю время расчета, а жалуются - долго считает.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Phazz
Полковник
Сообщения: 2560
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

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

#26

Сообщение Phazz » 25.01.2023{, 16:45}

Тема действительно не для болталки уже ).

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 335
Имя: Владимир

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

#27

Сообщение rw6cm » 25.01.2023{, 17:38}

Ingwar,
Точность выше 6 знаков float в FLProg проблематична.
Здесь описывал Нюансы при создании проекта GPS в FLProg. с чем приходится сталкиваться. может что то понадобиться.
Win10-64, FLProg (portable)

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

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

#28

Сообщение Ingwar » 25.01.2023{, 17:42}

Докладываю по математике)
Методика измерения не претендуют на правильность. Замерял деление.
Сначала объявлял тип переменных (числитель, знаменатель, результат одинаковые).
Сразу присвоил числителю и знаменателю значение "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.01.2023{, 17:38}
Здесь описывал Нюансы при создании проекта GPS в FLProg. с чем приходится сталкиваться. может что то понадобиться.
Спасибо. Прошло мимо меня...
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#29

Сообщение Dryundel » 25.01.2023{, 17:54}

Ingwar писал(а):
25.01.2023{, 17:42}
внимание! float - 16us
duble - 20us
Так, это уже интересно. Если duble тратит больше времени, чем float, вероятно расчеты идут по двойной точности. Уже хорошо.
Ingwar писал(а):
25.01.2023{, 17:42}
Докладываю по математике)
А где доклад по математике? :)
На сколько я помню претензии были к точности расчетов с плавающей точкой.

Аватара пользователя
Phazz
Полковник
Сообщения: 2560
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

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

#30

Сообщение Phazz » 25.01.2023{, 17:58}

Ingwar, лучше замерять на большом количестве итераций.

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

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

#31

Сообщение Ingwar » 25.01.2023{, 18:00}

Написанные выше результаты нельзя считать верными )))
Сделал измерение с двумя действиями деления.
Данные замера для float увеличились на 2мкс, для double на 4 мкс, для byte на 2мкс, для int на 2мкс, для unsigned long на 2-3 мкс)))
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#32

Сообщение Dryundel » 25.01.2023{, 18:01}

rw6cm писал(а):
25.01.2023{, 17:38}
Точность выше 6 знаков float в FLProg проблематична.
Виновата не сама FLProg, а то, что в ней нет duble.
На 16 битах ее и не требуется. Точность 6 знаков обусловлена именно этим. А раз ESP32 может давать гораздо выше точность, то и RP2040 теоретически должен.

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

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

#33

Сообщение Ingwar » 25.01.2023{, 18:03}

Phazz писал(а):
25.01.2023{, 17:58}
лучше замерять на большом количестве итераций.
Ну точнее наверное делать не столько много вычислений, сколько смотреть на изменения при добавлении новых.
ИМХО.
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#34

Сообщение Dryundel » 25.01.2023{, 18:13}

Ingwar писал(а):
25.01.2023{, 09:16}
Точность всего семь знаков!!! Не важно где запятая...
Так что с точностью при использовании duble?

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 335
Имя: Владимир

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

#35

Сообщение rw6cm » 25.01.2023{, 18:18}

Dryundel писал(а):
25.01.2023{, 18:01}
Виновата не сама FLProg, а то, что в ней нет duble.
Об этом и еще других типах чисел Сергея просили еще с первых версий FLProg, но ... :)
Win10-64, FLProg (portable)

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

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

#36

Сообщение Ingwar » 25.01.2023{, 18:22}

Dryundel писал(а):
25.01.2023{, 18:13}
Так что с точностью при использовании duble?
viewtopic.php?t=8404&start=20#p120565
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#37

Сообщение Dryundel » 25.01.2023{, 18:34}

Упс. Пропустил. :) Сори.

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

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

#38

Сообщение Ingwar » 25.01.2023{, 18:41}

Phazz писал(а):
25.01.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
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

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

#39

Сообщение Ingwar » 26.01.2023{, 16:51}

Правильно ли я понимаю из этого файла 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
Полковник
Сообщения: 2945
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 454
Откуда: Шатура
Имя: Энвер

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

#40

Сообщение ecoins » 26.01.2023{, 17:21}

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

Ответить

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