Адаптер для сопряжения компьютера и шины IIC на микроконтроллере Atmega16.
Выводы PD1 и PD0 через преобразователь уровней подключаются к последовательному порту компьютера. В качестве преобразователя может быть MAX3232 или микросхемы USB-UART (да хоть блютуз).
Выводы PC0 и PC1 используются в качестве шины I2C.
Если используется синхронизация от встроенного генератора, то возможен сбой передачи данных из-за ухода частоты МК. На это может влиять температура или напряжение питания.
Работа заключается в передачи команд в МК и получении от него ответа. Общий формат команды следующий:
[a [int]] [w int {int}] [r int]
- a [int] -- получение или установка адреса устройства.
- w int {int} -- запись байт
- r int -- чтение байт
- int может быть целым числом в бинарной , восьмеричной, десятичной или шестнадцатеричной системе. Признаком бинарной системы является число, начинающееся на 0b и содержащее цифры 0 и 1.
Каждая команда -- это одно обращение к устройству. Таким образом, возможна запись и последующее чтение за одно обращение.
В случае получения корректной команды, МК высылает отчёт:
- a -- текущий адрес.
- w -- количество записанных байт.
- r -- количество прочитанных байт и далее байты в шестнадцатеричной системе.
При получении некорректной команды или при сбое на шине I2C пишется диагностическое сообщение.