Есть ли у кого-нибудь пример использования нескольких устройств I2C в нескольких потоках? У меня проблема с моей проблемой, это одна из тех, где, если я делаю один шаг, все работает, и если я запустил все это, все испортится - очевидно, состояние гонки. Трафик i2C на самом деле становится поврежденным (если смотреть на моем логическом анализаторе), который немного меня удивил. Я предположил, что операции I2C будут атомарными, но похоже, что это не обязательно так.Каков правильный способ доступа к устройствам I2C в многопоточном приложении, в Windows 10 Core IoT?
Мое приложение использует датчик температуры и контроллер двигателя, оба устройства I2C. Датчик температуры выбирается таймером, который, как я полагаю, работает на рабочем потоке.
Я вижу повреждение данных трафика I2C, я думаю, что может произойти то, что оба потока пытаются писать на разные подчиненные адреса одновременно.
Документация немного умалчивает о проблемах с резьбой, поэтому я не уверен, на каком уровне я должен защищать от условий гонки. Из проблем, которые я вижу, похоже, что контроллер I2C может выполнять только одну операцию за раз, поэтому мне придется защищать на уровне контроллера.
У меня есть некоторые идеи о том, как подойти к этому, но документация немного умалчивает о требованиях пронизывающих, поэтому я думал, что спросить, если кто-то уже сделал это успешно, прежде чем я уйти вниз некоторые тупики :)