Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: I2C в USI
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
juvf
Посмотрел описание на Atmega168 - вроде есть I2C. На этом процессор сделал девайс. Дошло дело до i2c и ...... А чёто нету аппаратного и2ц в этом камне.

Кто-нибудь пробовал на USI поднять I2C?

в инете вроде много реализаций и2с на уси, и в алгоритмах, и в примерах, и на си и на асме. Но все они ручные. Т.е. ручками делаем СТАРТ, потом delay, потом байт задвигаем в регистр, опять delay, анализ..... delay, ... delay, ... delay, ..... А что осталось от "аппаратного" i2c? Всё руками. Проще полностью программный и2ц написать. Во всех примерах, что я нашел, тактируется этот кагбэ аппаратный и2ц руками (software). Но есть возможность тактировать от таймера. Кто-нибудь поднимал и2ц на уси с тактированием от таймера? Есть примеры?
Maik-vs
Цитата(juvf @ Jun 2 2011, 06:23) *
...ручками делаем СТАРТ, потом delay, потом байт задвигаем в регистр, опять delay, анализ..... delay, ... delay, ... delay, .....

Это вы про мастера?
Я делал слейв на USI Tiny44, там прерывания USI по старту и переполнению + функция разбора его состояния, вызывается всё время в основном цикле. USI в прерывании притягивает SCL к нулю, приостанавливая обмен, поэтому очень быстрой реакции не требуется.
juvf
Цитата(Maik-vs @ Jun 2 2011, 17:10) *
Это вы про мастера?
Я делал слейв на USI Tiny44, там прерывания USI по старту и переполнению + функция разбора его состояния, вызывается всё время в основном цикле. USI в прерывании притягивает SCL к нулю, приостанавливая обмен, поэтому очень быстрой реакции не требуется.

Да, мне нужен мастер. Я споткнулся на старте. Генерирую старт путём записи в буфер уси 0x00. Встает прерывание- "обнаружен старт" и scl идет в 0. а дальше что делать? засунуть в буфер байт для отправки содержащий адрес и R/~W и ждать ответа пока его USI выплюнет и ждать ответа ask? как перенаправлять порт IO? Я так понял руками все делать нужно. Не могли бы вы показать свой слэйв как пример?
Maik-vs
Я пользовался аппнотой Атмеля для TWI slave. Там программа на си, она была переписана на ассемблере и изменена: вместо ожидания низкого уровня SCL на старте, счётчик устанавливался в 0F чтобы произошло прерывание. Мастер чисто софтверный на mega8515. Думаю, что мой slave ничем не поможет, очень большое у него отличие от мастера. Аппноту про мастера я читал вскользь, она мне не понравилась, сложилось впечатление, что там побитовый контроль.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.