juvf 17 2 июня, 2011 Опубликовано 2 июня, 2011 · Жалоба Посмотрел описание на Atmega168 - вроде есть I2C. На этом процессор сделал девайс. Дошло дело до i2c и ...... А чёто нету аппаратного и2ц в этом камне. Кто-нибудь пробовал на USI поднять I2C? в инете вроде много реализаций и2с на уси, и в алгоритмах, и в примерах, и на си и на асме. Но все они ручные. Т.е. ручками делаем СТАРТ, потом delay, потом байт задвигаем в регистр, опять delay, анализ..... delay, ... delay, ... delay, ..... А что осталось от "аппаратного" i2c? Всё руками. Проще полностью программный и2ц написать. Во всех примерах, что я нашел, тактируется этот кагбэ аппаратный и2ц руками (software). Но есть возможность тактировать от таймера. Кто-нибудь поднимал и2ц на уси с тактированием от таймера? Есть примеры? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maik-vs 0 2 июня, 2011 Опубликовано 2 июня, 2011 · Жалоба ...ручками делаем СТАРТ, потом delay, потом байт задвигаем в регистр, опять delay, анализ..... delay, ... delay, ... delay, ..... Это вы про мастера? Я делал слейв на USI Tiny44, там прерывания USI по старту и переполнению + функция разбора его состояния, вызывается всё время в основном цикле. USI в прерывании притягивает SCL к нулю, приостанавливая обмен, поэтому очень быстрой реакции не требуется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 2 июня, 2011 Опубликовано 2 июня, 2011 · Жалоба Это вы про мастера? Я делал слейв на USI Tiny44, там прерывания USI по старту и переполнению + функция разбора его состояния, вызывается всё время в основном цикле. USI в прерывании притягивает SCL к нулю, приостанавливая обмен, поэтому очень быстрой реакции не требуется. Да, мне нужен мастер. Я споткнулся на старте. Генерирую старт путём записи в буфер уси 0x00. Встает прерывание- "обнаружен старт" и scl идет в 0. а дальше что делать? засунуть в буфер байт для отправки содержащий адрес и R/~W и ждать ответа пока его USI выплюнет и ждать ответа ask? как перенаправлять порт IO? Я так понял руками все делать нужно. Не могли бы вы показать свой слэйв как пример? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
maik-vs 0 3 июня, 2011 Опубликовано 3 июня, 2011 · Жалоба Я пользовался аппнотой Атмеля для TWI slave. Там программа на си, она была переписана на ассемблере и изменена: вместо ожидания низкого уровня SCL на старте, счётчик устанавливался в 0F чтобы произошло прерывание. Мастер чисто софтверный на mega8515. Думаю, что мой slave ничем не поможет, очень большое у него отличие от мастера. Аппноту про мастера я читал вскользь, она мне не понравилась, сложилось впечатление, что там побитовый контроль. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться