Перейти к содержанию
    

I2C в USI

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...ручками делаем СТАРТ, потом delay, потом байт задвигаем в регистр, опять delay, анализ..... delay, ... delay, ... delay, .....

Это вы про мастера?

Я делал слейв на USI Tiny44, там прерывания USI по старту и переполнению + функция разбора его состояния, вызывается всё время в основном цикле. USI в прерывании притягивает SCL к нулю, приостанавливая обмен, поэтому очень быстрой реакции не требуется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это вы про мастера?

Я делал слейв на USI Tiny44, там прерывания USI по старту и переполнению + функция разбора его состояния, вызывается всё время в основном цикле. USI в прерывании притягивает SCL к нулю, приостанавливая обмен, поэтому очень быстрой реакции не требуется.

Да, мне нужен мастер. Я споткнулся на старте. Генерирую старт путём записи в буфер уси 0x00. Встает прерывание- "обнаружен старт" и scl идет в 0. а дальше что делать? засунуть в буфер байт для отправки содержащий адрес и R/~W и ждать ответа пока его USI выплюнет и ждать ответа ask? как перенаправлять порт IO? Я так понял руками все делать нужно. Не могли бы вы показать свой слэйв как пример?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...