14.06.2014, 18:22 | #101 |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799 |
Re: Ускоряем работу Arduino
Собрал в кучу оригинал и для 32u4 и 2560. ДЛя последних двух все так же работает только управление пинами и оба delay. Хочу извиниться за поспешность выводов что с Duo все просто и так же - архитектура совершенно другая и управлять пинами нужно по другому -потихоньку разбираюсь
ЗЫ. Ну и блинк как к всякой приличной библиотеке Последний раз редактировалось Bulatovor; 14.06.2014 в 18:41. |
14.06.2014, 20:28 | #102 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Ускоряем работу Arduino
Для Atmega328 либа взята из шапки?
|
14.06.2014, 21:16 | #103 |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799 |
Re: Ускоряем работу Arduino
да, сегодня скачанная
Вот вопрос. почему при компилировании для 328 размер скетча Blink 598 байт, для 2560 - 628, а для Leonardo сразу 4,2к, я так понимаю из-за плохих библиотек к леонарду в самой среде arduino -у меня версия 1.0.5 r2 Последний раз редактировалось Bulatovor; 14.06.2014 в 21:25. |
14.06.2014, 21:53 | #104 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Ускоряем работу Arduino
Леонардо компилирует код вместе с загрузчиком, поддержка USB неявно подключается к каждому компилируемому под Leonardo скетчу, для поддержания возможности программного сброса через USB.
|
14.06.2014, 22:05 | #105 |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799 |
Re: Ускоряем работу Arduino
Понятно, т.е. если с местом начнутся проблемы, путем небольших махинаций сию поддержку можно отключить. Из прочитанного приятно то, что у людей обычный блинк занимает за 5к, а с библиотекой CyberLib - уже почти на 800 байт меньше
|
14.06.2014, 22:15 | #106 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Ускоряем работу Arduino
Спасибо за проделанную работу!!!
Залил библиотеку в шапку темы |
14.06.2014, 23:35 | #107 | |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799 |
Re: Ускоряем работу Arduino
Пожалуйста. Но два спасибо в шапке темы уже пожалуй излишне - все равно основная причина -это собственная нужда.
Так вот едем дальше - столкнулся с такой проблемой, что одна уникальная и нужная мне библиотека использует другую библиотеку быстрого управления пинами digitalWriteFast.h/ Однако последняя поддерживает только 328 и 2560 процессоры - Леонардо не поддерживает. Я быстренько допилил её под Леонардо - поюзал и потерял . В принципе снова допилить недолго, но мы не ищем простых путей -зачем мне две! Засада в том, что номера портов и состояние переменные. Попробовал в CyberLib решить вопрос в лоб для начала с переменными номерами портов PHP код:
Тест проведенный на следующем скетче разочаровал PHP код:
Вот это для меня пока сложновато - надо конкретненее пример куда впихать Цитата:
Последний раз редактировалось Bulatovor; 15.06.2014 в 00:12. |
|
15.06.2014, 10:35 | #108 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Ускоряем работу Arduino
Если использовать например D_High(2); то будет быстрее, а D_High(19); будет самым медленно выполняемым, так как в цикле он последний
Можно попробовать замутить решение на ассемблере Производить переходы по номеру пина умноженному на смещение плюс базовый адрес |
15.06.2014, 18:05 | #109 | |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799 |
Re: Ускоряем работу Arduino
Цитата:
PHP код:
PHP код:
PHP код:
|
|
15.06.2014, 18:21 | #110 |
Senior Member
Регистрация: 20.01.2013
Адрес: Уфа
Сообщений: 444
Вес репутации: 799 |
Re: Ускоряем работу Arduino
Итак, что у нас получилось:
digitalIOPerformance при явном указании пина работает точно с такой же скоростью как CyberLib, а при указании пина переменной падает до скорости Ардуины, т.е. меняем шило на мыло, а нужного результата не добились. почему в CiberLib Inv работает чуть-чуть, но медленнее High и Low интересно, но особенно не важно. Из мною написанного самый лучший вариант это первый -написанный вчера -обозначенный как вариант два, да на первых 3 пинах он чуть чуть проигрывает варианту 1, но он стабилен- на всех портах одинаковая скорость, а у варианта 1 растет и в конце концов становиться медленнее родной ардуино. Так что вот так. На данном этапе получили скорость почти в два раза выше чем arduino, до новых чужих идей остановлюсь на этом. |
Здесь присутствуют: 41 (пользователей: 0 , гостей: 41) | |
|
|