Страница 1 из 1

Помогите разобраться с I2C на USI

Добавлено: Вс янв 12, 2014 11:19:46
Xrust
С праздником всех!
Задача в общих чертах такая. Есть микроконтроллер и звуковой процессор. Между собой они, заразы, втихаря по I2С что-то темное замышляют. Даташитов на процессор НЕТ. А мне во что бы то ни стало нужно им порулить. Для этого решил поснифить секретные переговоры. Уверен, что нужный мне режим МК включает, но только не тогда, когда он мне нужен. Т.е. подслушав то, что мне надо я в нужный момент вывалю это аудиопроцессору и PROFIT!!!
Для снифа решил воспользоваться Attiny85. В нем есть USI, который должен существенно облегчить дело. В теории вроде все понятно. Ловим прерывание USI_START и записываем все что слышно в память. Затем переписываем добычу в EEPROM и программатором извлекаем оттуда и анализируем.
На словах-то просто, а вот с чего начать... Голова пухнуть начала. Я так понимаю, сначала USI как-то инициировать нужно? Сказать ему, что он должен работать в режиме TWI, обработчик прерываний сделать. Или я что-то не правильно понял. Подскажите, как это в atmel studio 6 сделать. Поверните хотя бы в нужную сторону и пинка дайте. Опыта у меня еще совсем мало в МК.

Re: Помогите разобраться с I2C на USI

Добавлено: Вс янв 12, 2014 18:45:52
Alkul
Xrust писал(а):Я так понимаю, сначала USI как-то инициировать нужно?

Я думаю, что аппаратный I2C Вам ничем не поможет. Он проигнорирует все посылки, кроме бродкастовых - широковещательных с адресом 0х00, предназначенных для всех устройств на шине. А таких посылок, скорее всего, и не окажется. А целевого I2C-адреса аудиопроцессора Вы не знаете.
На Вашем месте я бы посмотрел в сторону программной реализации I2C, в инете этих библиотек полно, даже у меня где-то есть (на ассемблере). Для программного I2C подойдет абсолютно любой AVR контроллер.
Брать эти подпрограммы, править их так, чтобы убрать проверку адреса, а также дорабатывать, чтобы все "выловленные" пакеты МК отправлял туда, где Вам будет удобней их читать и анализировать.

Re: Помогите разобраться с I2C на USI

Добавлено: Вс янв 12, 2014 19:59:03
Xrust
Alkul писал(а):Я думаю, что аппаратный I2C Вам ничем не поможет. Он проигнорирует все посылки, кроме бродкастовых - широковещательных с адресом 0х00

Нет, USI это не аппаратный I2C, который так же в некоторых моделях реализован. Это универсальный интерфейс. Просто часть функций - например прерывания по старту или переполнению регистра сдвига специально запилены.

Re: Помогите разобраться с I2C на USI

Добавлено: Вс янв 12, 2014 20:19:33
Alkul
Xrust писал(а):Нет, USI это не аппаратный I2S

Да какая разница? Вам-то придется использовать его именно в режиме I2C, коль скоро у Вас
Xrust писал(а):Между собой они, заразы, втихаря по I2С что-то темное замышляют.

Re: Помогите разобраться с I2C на USI

Добавлено: Вс янв 12, 2014 21:35:35
Xrust
Так проверка адреса, о которой вы говорите, на этом уровне (USI) не реализована. Это программно делается. Единственное, он состояние старт и стоп опознает и генерирует прерывания, имеет регистры буферный и сдвиговый и счетчик для облегчения считывания данных. Это чтобы не писать все это вручную и не возиться с состоянием выводов.

Re: Помогите разобраться с I2C на USI

Добавлено: Пн янв 13, 2014 06:21:01
nirq
Saleae китай купить.

Re: Помогите разобраться с I2C на USI

Добавлено: Вт янв 28, 2014 17:52:12
Xrust
Нашел библиотеку для моего случая - http://code.google.com/p/codalyze/
Если чуть допилить - будет то, что надо. Но вообще-то решил отказаться от первоначальной идеи и заказал анализатор как советовали. Дело в том, что посмотрел осциллографом, что там на шине происходит, а там постоянно ураганный обмен. Так что все сложнее, чем я предполагал. Но впоследствии библиотека, думаю, пригодится.