Sancho писал(а): 18 июл 2019, 08:34
Я всё ещё жду проекта для теста, иначе буду считать это бла-бла-бла и раскруткой.
Ибо: при тактовой I2C 100к - 90мкс= 9 тактов на SCL. Дальше описывать?
50 мс - тоже из серии бла-бла, ибо нет вообще никаких данных, чего слали и скока. Сам тестил, результаты на форуме.
Мы стараемся отвечать. На вежливо заданные вопросы. На мой взгляд Ваш вопрос сформулирован не очень вежливо, с намеками на техническую недобросовестность и не только нашу...
----------------------------------------------------------
На мой взгляд Вы много и содержательно публикуетесь на форуме и технически компетентны.
Исходя из изложенного, сделаю исключение и отвечу на Ваш вопрос:
1. Вы ставите под сомнения не только наши результаты, но и приборные измерения проведенные RedSky. Из нашей с ним переписки следует, что он заинтересованное лицо в использовании блока Lcd и у него все получается и получится. На его предложения и выявленные ошибки мы оперативно реагируем.
2. Тактовая частота i2c - настраиваемая величина в проекте - не 100кГц, а 400кГц. Может быть увеличена. Для Nano разгоняли до 800кГц. Но это лишнее и мы бы не рекомендовали бы это делать по совокупности предложений.
3. Передача по i2c в каждом блоке ограничивается двумя условиями:
-----3.1. внутренним таймером - по умолчанию это обычно 500мс и может быть изменена в параметрах пользователей.
Можно эту величину уменьшить (библиотека ограничивает снизу значением 200мс). При 200 мс "цифирки" на Lcd очень быстро меняются.
Такое значение мы устанавливаем при выводе, например при выводе показаний с сонара.
------3.2. изменением входного значения. Значения отправляются в i2c (Lcd) только после их изменения.
Это опция настраиваемая - в параметрах пользователя.
4. Особенность Lcd на i2c - один символ (байт) передается в течении не менее 10-ти транзакций. Мы их группируем и отправляем не сплошным потоком. Передача самой большой транзакции на один символ в (с передачей его адреса) -260мкс - во время этой транзакции 10 раз программа возвращается к диспетчеру, который при наступлений заданных пользователем условий запускает более приоритетную задачу -10мс, "быстрые задачи", "медленные задачи", 100мс.
В любом случае при периодичности записи в Lcd более 200мс.
Фактически немного меньше 500мс, если установлен блок мерцания символами.
При отсутствие блока мерцания, реальный вывод может осуществляться в периоды исчисляемые и секундами - в зависимости от скорости измерения индицируемой величины.
----
В реальности это небольшие вкрапления в основной цикл, который измерил RedSky - у него получилось 90мкс.
При большей строгости написания проекта - это зачастую излишнее - у нас на Arduino Nano достигался период и 30 мкс.
Обращаю внимание на единицу измерения - миКроСекунд (одна миллионная секунды).
5. Все изложенное может быть измерено аппаратными средствами - например логическим анализатором, и программными средствами - в начале и в конце проекта блоком micros() производится измерение - разница двух измерений и даст период. Эти измерения сомневающиеся могут усреднить и получить на дисплее средний период работы программы в течении 1сек.
----------------------
О том, что опубликованные результаты вызывают у кого удивления, у кого сомнения...
Полученные результаты - после двухлетней борьбы с "тормозами" в проектах FLProg - нас самих удивляют.
И нравятся. Раньше мы рассматривали FLProg как инструмент для обучения и простых проектов. Теперь по нашему (субъективному) мнению, FLProg 5.3.0 полноценный инструмент для профессиональной работы. А с учетом того, что автор проекта непрерывно и значимо его развивает - вместе с Вами надеемся на его яркое будущее.
----------------------
Спасибо.