Оказалось, что производительность ардуины достаточна (с приличным запасом) для вывода информации на девяти (sic!) разрядый семисегментный индикатор динамически через один сдвиговый регистр. Нашел в "хламе" старенький алс318а. И решил проверить. Пишу просто поделиться щенячим восторгом.
а чего тут необычного? Это всего лишь оперирование 9 х 7 + 8 = 71 элементами в памяти. Даже простенький ЖК от NOKIA5110 это 84 x 48 = 4032 элемента - скорости хватает с избытком.
Дело тут не в объеме памяти. Он выводит 9 чисел ПОСЛЕДОВАТЕЛЬНО. Я потому и написал про один сдвиговый регистр. Меня удивило то, что вся операция вывода (последовательно, опять же) занимает так мало времени. что выводятся 9 чисел и ничего не мерцает (визуально).
Видите ли, когда пишешь на "языке ардуино", то постоянно вызываешь библиотечные функции. И черт его знает сколько времени они выполняются. Та же самая shiftout, как часто она дергает пины?... А она их дергает прямо записывая в порт или через digitalWrite?... Ответы на эти вопросы в исходниках библиотек, на данном этапе я в них не лез. А чистая С-шная оперрация записи в порт выполняется за два такта или за 4 или...? В общем технологических вопросов много. Мерить опытным путем (типа мигать диодом через каждые 1000 переключений, а потом с секундомером засекать частоту мигания (частотометра или осцилографа у меня нет)) очень скучно. А использование delay и вывода в com-порт само слишком влияет на измерения.
Не путайте язык и библиотеку. Ардуино программируется на самом обыкновенном С++, библиотеку при этом можно и не использовать. Насчет скорости дерганья пинов есть один нюанс. Можно дергать пины с максимальной частотой, но не факт, что другое устройство успеет среагировать. Иногда приходится специально вставлять задержки между переключениями пинов, иначе ответная железка просто не понимает чего от нее хотят. Я с таким сталкиваюсь постоянно, только не с ардуино, а с другим камнем и другой периферией. Чтобы выжать из железа максимум, нужно в даташите найти временные диаграммы сигналов и подгонять код под времена, которые там указаны. Если устройство должно работать в большом диапазоне температур, полезно минимальные интервалы увеличить раза в полтора.
Я и не путаю. Кавычки там неспроста А что до всего остального, то я это понимаю, но не зная конкретных значений, ожидал что вся эта библиотечная "машинерия" работает сильно медленнее. А то - О! Об этом мой исходный пост.