Цитата(=Zap= @ Apr 24 2011, 13:44)

С другой стороны, зависание USB в ожидании ответа по I2C может сломать USB соединение.
С этого надо было начинать. Тут вопрос вовсе не в стиле программирования, когда и тот, и другой вариант работают, а хочется выбрать вариант "покрасивее".
Конечно, нельзя "подвешивать" процедуры обработки USB. Похоже, у Вас как раз тот случай, когда обработчик прерывания должен выполняться быстро. Следовательно, обработчик не может делать длительные ожидания. Так что надо реализовывать обработку USB и I2C ассинхронно.