Цитата(Метценгерштейн @ Oct 13 2016, 10:53)

у вас код if else if
другими словами, в прерывании только одно событие обработается.
А не может придти два события сразу?
Если придут два события сразу, они обработаются в двух последовательных входах в обработчик прерывания. Вообще, вариант от
Nixon является наилучшим универсальным и имеет смысл при использовании подгрупп приоритетов прерываний, и принадлежности прерывания I2C не к самой приоритетной подгруппе. В этом случае может быть целесообразно выскочить из обработчика прерывания как можно скорее, чтобы передать управление обработчику более привилегированной подгруппы, если возникнет запрос на него. Во всех прочих случаях вариант
Nixon, как и большинство универсальных решений

, создаёт более длинный код и большее время выполнения при одновременной обработке нескольких событий.