Вопрос по совместимости библиотек
- Войдите на сайт для отправки комментариев
Ребята вот сталкнулся в очередной раз с проблемой. Есть дисплей S65, про него тут было темка. Подключил - работает. Но при подключении других полезных библиотеки, например OneWare ( http://nnm.ru/blogs/e-troll/arduino-prakticheskoe-programmirovanie-1-wir... ), для работы по интерфейсу 1-ware, наблюдается такая картина - по отдельности работает или дисплей, или интерфейс 1-ware. Совместно когда в проекте компилируются обе библиотеки - не работают. Я почти уверен что проблема сокрыта в совместном использовании таймера или прерываний. Каждая бибилиотека под себя перенастраивает таймер, а вектора прерываний вообще наверно никто не перебрасывает, да и есть ли такая возможность на этой платформе?
При написании библиотек, никто не указывает какие критические ресурсы задействованы в этой библиотеке. В итоге планируешь построить проект, и как результат это с тем не работает, то уже занято, туда не лезь...
Ну да есть авторы библиотек которые указываю "какие ресурсы перестанут быть доступны", есть авторы которые - не указывают. Можете заказать разработку библиотеки (или сами написать) и поставить в требованиях "описать в документации какие ресурсы "захватываем", или "иметь возможность указывать какой таймер использовать".
Так а в чем вопрос-то? Почему так устроен мир? Почему нельзя все спланировать заранее? Так так для того и делают прототипы что-бы выяснить такие вещи.
К сожалению так устроен мир, что он далеко не всегда совпадает с нашими представлениями о нем, и далеко не всегда все идет по нашим планам. Поэтому и существуют такие вещи как "прототипы", "управление рисками" (стараемся проверить критичные вещи как можно ближе к началу проекта) и т.д. и т.п.
Кстати вы не показали код, не сказали как подключали. Так что догадка про "таймеры" - не более чем догадка. Причина может быть в другом.
Указание на "про него тут была темка" - малова-то будет. Это если кто-то спрашивает "как подключить S65", то отправить в поиск было-бы нормально. А вот если проблема у вас, то рыться в поиске что-бы решить помочь решить ВАШУ проблему - никто не будет.
По названию темы скажу просто, совместимость - это к большим компам, где ресурсов побольше чем в микроконтроллерах (МК).
В МК, например, таймеров не так много (рассматриваем Arduino младших моделей), поэтому их нельзя заранее раздать под определенные цели. Аналогично с другими ресурсами.
Поэтому нельзя написать "совместимую" библиотеку, которая никому не мешает (я про общие случаи, в частных случаях, конечно же можно).
Самое простое - это смотреть тексты библиотек, смотреть, какие они ресурсы используют и видеть, где они пересекаются. Как правило тексты не такие уж большие. К тому же, читая чужие исходники, мы накапливаем опыт, который вложен в эти библиотеки. И этот опыт очень важен и всегда пригодится.
UPD: ошибся в слове, смысл совершенно исказился, исправил :)