Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: TWI на USI и апаратное TWI
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
MichaZ
Привет Всем!

столкнулся со следующей проблемой.
есть мастер - Samsung с апаратным TWI
слейв1 - ATtiny2313 c TWI на USI
слейв2 - ATmega8535 с апаратным TWI

так вот.
если подключить отдельно - каждый слейв работает правильно.вместе-не хотят.
тоесть 8535 зависает.
вижу проблему в следующем:
в TWI на 2313 время обработки прерывания по приходу байта не должно превышать 10мкс (время прихода одного бита на 100КГц) для того,чтобы не помешать передаче подтверждения и подготовке приема следующего байта.но время обработки получается 17 мкС
но ето не страшно,поскольку мастер поддерживает растягивание тактов,а 2313 держит такты в нуле до выхода из прерывания.
такое растягивание тактов не нравиться 8535.и она виснет

вопрос.
можно ли доверять показателю времени выполнения в AVR Studio(workspace,окно I/O,Processor,Stop Watch)?
сталкивался ли Кто-то с такой проблемой?как решил?
решит ли проблему программа на 8535 - ПРАВИЛЬНАЯ обработка коллизий на шине?
или надо подкорачивать обработчик?
в том ли дело вообще?

спасибо
Kovrov
а что происходит у 8535, когда он прочитал чужой адрес?
beer_warrior
У меня была подобная проблема - диагноз ставил следующим образом -
подключал на свободный порт 4 светодида и после прохода каждого этапа обмена адрес - подтверждение - рестарт итп. писал заветное число в порт.Причину зависания выловил довольно быстро.

Это я к чему - моделировать обмен не стоит, а вот четкое понимание места в котором зависли уже половина решения. По моим наблюдениям обычно вис идет по причине неотданного/ непринятого ACK.
По поводу растягивания тактов - думаю проблема не в этом - насколько я помню AVR-TWI конечный автомат управляемый фронтами на 2-х ногах, лишняя пара микросекунд каши не испортит.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.