В общем валяется у мена PIC18F14K50, которым можно было бы считывать ADC по I2C и переправлять по USB
в компьютер. Онако вопрос - успею ли читать в цикле да еще и USB обслуживать.
Посмотрел на свой MAX9611 - 400 кГц, хорошо. Ну вроде они все поддерживают.
Поискал interrupt driven routines, не нашел. Народ говорит: зачем, че его там читать/писать?
С одной стороны да. С другой стороны бабка 10 копеек, 10 бабок, уже рубль.
Например, читаем структуру из нескольких байт: адрес дивайса, адрес регистра, адрес дивайса, несколько байт.
Итого набегает.
Провел эксперимент. Взял чтение 3х байт подряд из MAX9611 стартуя с регистра 0х08.
Результаты: при 400 кГц I2C порядка 2/3 времени освобождается для других задач.
При 100 кГц освобождается 89%!! Хорошая прибавка к пенсии.
Код не особо продуман и оптимизирован, но можно на нем базироватся.
Пытался сделать универсальным для большинства случаев:
память с одним байтом аддресса, двумя байтами, и без аддресса.
Делюсь, там комменты есть.
Верить нельзя никому, даже себе. Мне - можно.