[Из песочницы] Реализация мьютекса вне ОС на примере микроконтроллера AVR и шины TWI

Решил однажды для себя я соорудить погодную станцию. Датчики там разные, в том числе на шине I2C. И как годится, обычно вначале, сделал все на флагах ожидания. Но путь настоящего джедая иной, и было решено все повесить на прерывания. Вот тут и начался геморрой. Проблема, с которой я столкнулся это обработка нескольких подряд идущих запросов. Например датчик давления BMP085 для дальнейшей работы с ним, требует вытянуть из его EEPROM 11 калибровочных констант: 33b6f6b6f9354b2e85738a72aa27044d.png О том как я пришел к решению и последовательность хода мыслей изложены ниже.Осторожно! Много текста, кода и картинок

© Habrahabr.ru