реклама на сайте
подробности

 
 
> I2C в USI
juvf
сообщение Jun 2 2011, 02:23
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Посмотрел описание на Atmega168 - вроде есть I2C. На этом процессор сделал девайс. Дошло дело до i2c и ...... А чёто нету аппаратного и2ц в этом камне.

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

в инете вроде много реализаций и2с на уси, и в алгоритмах, и в примерах, и на си и на асме. Но все они ручные. Т.е. ручками делаем СТАРТ, потом delay, потом байт задвигаем в регистр, опять delay, анализ..... delay, ... delay, ... delay, ..... А что осталось от "аппаратного" i2c? Всё руками. Проще полностью программный и2ц написать. Во всех примерах, что я нашел, тактируется этот кагбэ аппаратный и2ц руками (software). Но есть возможность тактировать от таймера. Кто-нибудь поднимал и2ц на уси с тактированием от таймера? Есть примеры?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
Maik-vs
сообщение Jun 2 2011, 11:10
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101



Цитата(juvf @ Jun 2 2011, 06:23) *
...ручками делаем СТАРТ, потом delay, потом байт задвигаем в регистр, опять delay, анализ..... delay, ... delay, ... delay, .....

Это вы про мастера?
Я делал слейв на USI Tiny44, там прерывания USI по старту и переполнению + функция разбора его состояния, вызывается всё время в основном цикле. USI в прерывании притягивает SCL к нулю, приостанавливая обмен, поэтому очень быстрой реакции не требуется.
Go to the top of the page
 
+Quote Post
juvf
сообщение Jun 2 2011, 13:04
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



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

Да, мне нужен мастер. Я споткнулся на старте. Генерирую старт путём записи в буфер уси 0x00. Встает прерывание- "обнаружен старт" и scl идет в 0. а дальше что делать? засунуть в буфер байт для отправки содержащий адрес и R/~W и ждать ответа пока его USI выплюнет и ждать ответа ask? как перенаправлять порт IO? Я так понял руками все делать нужно. Не могли бы вы показать свой слэйв как пример?
Go to the top of the page
 
+Quote Post
Maik-vs
сообщение Jun 3 2011, 11:20
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101



Я пользовался аппнотой Атмеля для TWI slave. Там программа на си, она была переписана на ассемблере и изменена: вместо ожидания низкого уровня SCL на старте, счётчик устанавливался в 0F чтобы произошло прерывание. Мастер чисто софтверный на mega8515. Думаю, что мой slave ничем не поможет, очень большое у него отличие от мастера. Аппноту про мастера я читал вскользь, она мне не понравилась, сложилось впечатление, что там побитовый контроль.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th June 2025 - 11:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01359 секунд с 7
ELECTRONIX ©2004-2016