Показать сообщение отдельно
Старый 04.10.2017, 00:23   #146
shalex
Местный
 
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,858
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,650
Поблагодарили 3,274 раз(а) в 1,172 сообщениях
Все 'Спасибо' этого пользователя. :
0 за это сообщение
1 Всего
Репутация: репутация неоспорима (3285)
По умолчанию

Очередной промежуточный итог...

самое главное - добавил для PWM режим плавного перевода из крайних состояний. Попробовал в отладке - вроде работает. На самой медленной скорости "1" одна серва переводится примерно 10 сек, десять серв примерно столько же, на 30 сотых позже. Нормально, в-общем. Правда тестировал без серв и плат PCA, закомментировав обработку ошибок инициализации I2C. Когда будет реальная отправка команд, самая медленная скорость сервы может стать еще медленнее и более того, зависеть от кол-ва плат Возможно и очень не сильно, все таки редко одновременно переводится много серв. На 1-2 будет совсем не заметно.

Все это удалось благодаря отказу от "штатной" библиотеки с реализацией очереди и написанию свои объектов очереди FIFO. На этом сэкономил память и теперь под буферы команд сразу бронируется память, поэтому без всяких сюрпризов переполнения. Дополнительно в обработчик команд I2C добавил опцию - теперь команды можно обрабатывать пачками регулируемого размера.

Алгоритмы тестирования запускаю цифрами через сериал-порт. Легко можно имитировать команды с пульта. Например, на команду в виде цифры "0" навесил одновременный перевод 10 стрелок Видимо скоро придется писать протокол на сериал-порт, чтобы уже по-серьезному нагружать, например из "терминала" какого нить запуская тестовые скрипты.

Код:
Скетч использует 13390 байт (43%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 1598 байт (78%) динамической памяти, оставляя 450 байт для локальных переменных. Максимум: 2048 байт.
Недостаточно памяти, программа может работать нестабильно.
Памяти на грани, но вроде пока хватает. В коде отсутствуют локальные переменные в виде больших массивов. Но не помешает еще раз проверить библиотеку локонета на этот же предмет.
shalex вне форума  
Вверх
2 пользователя(ей) сказали cпасибо: