Собственно, это даже и не вопрос как таковой. Просто только что принял такое решение. Есть контроллер, на нем крутится самонаписанный примитивный диспетчер задач, подключено куча периферии - GPS, GSM, RFM, акселерометры, компасы и т.п. Часть устройств висит на I2C. Из стандартных примеров AVR взял библиотеку, прикрутил к проекту, удалось заставить работать. Но в коде библиотеки присутствуют строки типа
CODE
while (OPERATION_IN_PROGRESS == transfer.status);
while (! twim_idle(transfer.bus)) { barrier(); }
......
while (transfer.locked) {
if (no_wait) { return ERR_BUSY; }
}
В одно такое зависание мне удалось ввалиться в процессе настройки, очень не хочется чтобы это произошло в рабочем устройстве. Отсюда делаю вывод - готовые библиотеки это конечно хорошо, но в данном случае придется писать свою.