Arduino читать/писать функции "медленный"?

Stmdude
Ср 31 мая 2017 г. 18:19
На вики упоминается, что основные Arduino DigitalRead/write () и аналоговые эквиваленты «медленные», но что именно подразумевается под этим?

Они медленны по сравнению с базовой линейкой производительности ATMEGA328 с одинаковыми функциями или «медленным» относительно непосредственного обращения к аппаратному обеспечению на STM MCU?

Будет ли когда -нибудь проблема при использовании примеров общих примеров Arduino и типичных задач?


Мне просто приходит в голову, что без надлежащего контекста наблюдение на самом деле не очень полезно и может привести к ненужному оттоку при кодировании...

Рик Кимбалл
Ср 31 мая 2017 г. 18:49
DigitalWrite () Вы можете достичь ~ 700 кГц
Serial.write(response, sizeof(response));

Stmdude
Ср 31 мая 2017 г., 19:17
Рик Кимбалл написал:DigitalWrite () Вы можете достичь ~ 700 кГц
...

Рик Кимбалл
Ср 31 мая 2017 г., 19:45
Stmdude написал:Круто, но как это сравнивается с 16-метровым Uno (или Arm-Due) с тем же кодом?

Stmdude
Ср 31 мая 2017 г., 19:56
Рик Кимбалл написал:Stmdude написал:Круто, но как это сравнивается с 16-метровым Uno (или Arm-Due) с тем же кодом?

Рик Кимбалл
Ср 31 мая 2017 г., 21:26
Похоже, что если вы оптимизируете выравнивание этого кода, вы можете получить около ~ 12 МГц из переключения
19/04/17 16:16:27 :Info: Activating page: 1 19/04/17 16:16:27 :Time: 0:10.602: SENT 2 bytes iwd=10, 2 bytes x50 x01 P. 19/04/17 16:16:27 :Time: 0:10.613: SENT 1 bytes iwd=10, 1 bytes x56 V 19/04/17 16:16:28 :Debug: Read page time: 174ms. 19/04/17 16:16:28 :Time: 0:10.763: READ 288 bytes, 288 bytes x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 ................ x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 ................ x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 ................ x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 ................ x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 ................ x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 ................ x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 ................ x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 ................ x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 ................ x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 ................ x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 ................ x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 ................ x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 ................ x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 ................ x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 ................ x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 ................ x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 ................ x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 x00 ................ 19/04/17 16:16:28 :Info: Activating page: 2 19/04/17 16:16:28 :Time: 0:10.785: SENT 2 bytes iwd=10, 2 bytes x50 x02 P. 19/04/17 16:16:28 :Time: 0:10.795: SENT 1 bytes iwd=10, 1 bytes x56 V Time: 0:13.797: READ Timout after 0 bytes, Expected:64, actual read:0 Raw buffer 19/04/17 16:16:31 :Debug: Time:13.796s. Instruction:

Дэнниф
Ср 31 мая 2017 г., 22:12
Тогда я сделал некоторый сравнительный анализ, и AVR Arduino на 100 раз медленнее в GPIO VS. Родной авр.

STM32 Arduino на 20 раз медленнее.

Я могу опубликовать ссылку на свой сравнительный тест позже.

редактировать:

1. Это сравнительный анализ Arduino: Arduino на основе STM32F103: https: // dannyelectronics.WordPress.ком/ ... 2-arduino/
2. Вот сравнительный анализ AVR Arduino: https: // dannyelectronics.WordPress.ком/ ... r-arduino/

Я переношу Arduino в STM, и до сих пор Arduino-STM32F10x GPIO 2.5 раз медленнее, чем у нативного STM32.

Так что они не самые лучшие, если вы ищете необработанную производительность.

Rogerclark
Чт, 01 июня 2017 12:42
Дэнниф написал:
Так что они не самые лучшие, если вы ищете необработанную производительность.

AG123
Чт, 01 июня 2017 г., 5:43 утра
Я сомневаюсь, что это буквально «медленно», но если вы используете DMA или SPI + DMA, это может быть * намного быстрее * достигая 10 с МГц для скоростей переключения
Один из участников форума сделал логический анализатор, и он достиг 1 MSP, просто читая булавки GPIO в цикле
http: // www.STM32duino.com/viewtopic.PHP?F = 19&T = 1973

и другой участник достиг 7 МГц, выдвигая ограничения DMA и т. Д
http: // www.STM32duino.com/viewtopic.PHP ... = 10#p27238
https: // github.com/ddrown/stm32-sump

Chismicro
Чт, 01 июня 2017 г. 9:07
Я тоже сделал Некоторый эталон Некоторое время назад ведьма также проверяет скорость ADC.
Насколько я помню, скоростное скорость составляла около 30 ккэмпелей/сек на чертепел, который кажется мне немного медленным.

Стивестронг
Чт, 01 июня 2017 г., 9:53 утра
Chismicro написал:Я тоже сделал Некоторый эталон Некоторое время назад ведьма также проверяет скорость ADC.
Насколько я помню, скоростное скорость составляла около 30 ккэмпелей/сек на чертепел, который кажется мне немного медленным.

Эдогальдо
Чт, 01 июня 2017 г. 10:03
Rogerclark написал:Я не знаю, есть ли у чипсета AVR эквивалент BSSR (я так не думал, но я мог бы ошибаться)

Дэнниф
Чт, 01 июня 2017 г. 10:11
Насколько я помню, скоростное скорость составляла около 30 ккэмпелей/сек на чертепел, который кажется мне немного медленным. Я сделал сравнительный анализ на своем собственном варевах Analogread () на 24 МГц 100rb.

25US/12-битный образец при самой медленной настройке времени образца и 5-битный образец при самой быстрой настройке времени образца. Оптимизация кода здесь не является большим драйвером скорости, поэтому я ожидаю, что цифры для 103 будут похожими.

Дэнниф
Чт, 01 июня 2017 г. 10:13 утра
Я не знаю, есть ли у чипсета AVR эквивалент BSSR (я так не думал, но я мог бы ошибаться) это так: https: // dannyelectronics.WordPress.ком/ ... техническая спецификация/

Chismicro
Чт, 01 июня 2017 г., 17:11
Просто короткий комментарий, этот эталон не проверяет скорость АЦП, но только функция анализа ().
АЦП способен к мега -образец (ы) в секунду в двойном одновременном режиме.
Мне это совершенно ясно. Но поскольку я использую Arduino-Framework, это соответствующий эталон для меня.
Если бы я использовал программирование Metal IDE, другие тесты были бы актуальны.

Дэнниф
Пт, 02 июня 2017 г., 11:30 утра
Я прошел какое -то быстрое тестирование на STM8S105 на 16 МГц. Под самыми медленными часами ADV (FMASTER / 18) Каждое преобразование АЦП занимает чуть более 22US. Довольно сопоставимо с тем, что у STM32F100.

Редактировать: с часами ADC на самой быстрой скорости SPEC (FMASTER / 4 = 4 МГц - Макс. Для 3V Supply, в котором я использую STM8S на), каждое преобразование АЦП требует всего за счет 8US - этого, 1.75US для фактического преобразования.

Ты не пробовал самую быструю настройку (fmaster / 2).

AG123
Пт, 02 июня 2017 г. 13:48
STM8S ! Я почти неправильно прочитал это как STM32 :ржу не могу:
Но тогда STM32 составляет 12 битов против 10 бит на STM8, я думаю, даже тогда это довольно быстро для 8 -битного MCU :)

Дэнниф
Пт, 02 июня 2017 г. 15:43
Время преобразования составляет 14 тактовых циклов (максимум от 4 до 6 МГц)

Итак, на 16 МГц/18 время преобразования составляет 16. Или 2.3US в 6 МГц.

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

Сегодняшние MCU нередко имеют 100 -куб или более быстрые АЦП, а АЦП 1 мс / с.

Один чип LPC4XXX имеет пылающе быстрая ADC.