Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

TWI as master и USI as slave

Непрочитано 24.08.2007, 20:54  
duritskiy
Временная регистрация
 
Регистрация: 24.09.2006
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
duritskiy на пути к лучшему
По умолчанию TWI as master и USI as slave

Связь между TWI и TWI сделал.
А вот над связью TWI и USI уже несколько месяцев бьюсь и всё никак.

Помогите, пожалуйста, а то у меня куча ATTiny26 валяется, а без I2C связи мне очень плохо.

Дайте примерчик самого простого отправления одного байта от TWI master к USI slave.
Реклама:
duritskiy вне форума  
Непрочитано 26.08.2007, 08:06  
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 359
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

Не подскажите что Вы имеете ввиду под USI Slave?
nokazus вне форума  
Непрочитано 26.08.2007, 15:44  
duritskiy
Временная регистрация
 
Регистрация: 24.09.2006
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
duritskiy на пути к лучшему
По умолчанию

Я имею в виду вот что:
Я пытаюсь настроить I2C связь между ATMega16( master и ATTiny26 (ATTiny2313) Slave.
У меги за этот этот протокол отвечает TWI, а у Tiny - USI.
duritskiy вне форума  
Непрочитано 27.08.2007, 07:55  
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 359
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

OK. Мега передает посылку? Есть-ли сигналы на линиях? Как Вы настраиваете интерфейсы в обоих МК? Укажите рабочие частоты МК, настройку портов и регистров TWI USI.
И посмотрите AppNote AVR312 на atmel.ru
Удачи.
nokazus вне форума  
Непрочитано 27.08.2007, 17:15  
duritskiy
Временная регистрация
 
Регистрация: 24.09.2006
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
duritskiy на пути к лучшему
По умолчанию

Я осцилографом смотрю, что у меня почему то не отрабатывается подтверждение ACK.

#define SET_USI_TO_SEND_ACK()
{
USIDR = 0; /* Prepare ACK */
DDR_USI |= (1‹‹PORT_USI_SDA); /* Set SDA as output */
USISR = (0‹‹USI_START_COND_INT)|(1‹‹USIOIF)|(1‹‹USIPF)|(1‹ ‹USIDC)| /* Clear all flags, except Start Cond */
(0x0E‹‹USICNT0); /* set USI counter to shift 1 bit. */
}

На сколько я понял, низкий уровень на SDA здесь должен получиться как выдача одного бита из USIDR, который в свою очередь равняется нулю.
Но почемуто этого не происходит
duritskiy вне форума  
Непрочитано 28.08.2007, 10:15  
duritskiy
Временная регистрация
 
Регистрация: 24.09.2006
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
duritskiy на пути к лучшему
По умолчанию

Люди, ну мистика какая-то просто!

Добавил чистый код из AVR312, и он почемуто не обрабатывает АСК. Причём первый байт с адресом обрабатывает 100%.


В файле "USI_TWI_Slave.c"
там где метка "PORTA_Bit2=1;" должна происходить отправка АСК.

Ктонибудь встречался с подобными проблемами?

Прикрепленный файл: 6272258.rar
duritskiy вне форума  
Непрочитано 28.08.2007, 15:49  
urry
Почётный гражданин KAZUS.RUN
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 107 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Не совсем понятен Ваш код. Где определен адрес слейва ? Возможно, проблемы именно в обработке - контроллер считает, что код адресован не ему - из-за этого нет ответа. Чтобы проверить, смените проверку адреса равно на не равно - будет ли тогда ответ ? А еще лучше посмотрите в протеусе.
urry вне форума  
Непрочитано 28.08.2007, 19:57  
duritskiy
Временная регистрация
 
Регистрация: 24.09.2006
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
duritskiy на пути к лучшему
По умолчанию

в мастере адрес слэйва определён как
#define TWI_LED_SLAVE_ADDRESS 0x05

и посылка отправляется как
TWI_SendDataToSlave(TWI_LED_SLAVE_ADDRESS,TWI_CMD_ MASTER_WRITE,InSlave,3);

А в слэйве адрес определён как
// Own TWI slave address
TWI_slaveAddress = 0x05;
USI_TWI_Slave_Initialise( TWI_slaveAddress );
------------------------------------

Так вот установлено (загорается светодиодик PORTA_Bit2=1, что первый байт принимается нормально, так как программа доходит до той точки где она должна отправить АСК:

DDR_USI |= (1‹‹PORT_USI_SDA); // Set SDA as output
USISR = (0‹‹USISIF)|(1‹‹USIOIF)|(1‹‹USIPF)|(1‹‹USIDC)| // Clear all flags, except Start Cond
(0xE‹‹USICNT0); // Set USI to shift out 1 bit
while ( !(USISR & ( (1‹‹USISIF)|(1‹‹USIOIF) )) ); // Wait until ACK sent. (Pass if Start Cond.)
DDR_USI &= ~(1‹‹PORT_USI_SDA); // Set SDA as input

PORTA_Bit2=1; //Светодиодик

Но этого не происходит.
В чём косяк никак не пойму, не может же быть такого чтобы АППНОУТ был не правильным.

Кстати Мастер настроен на посылку одного сообщения при запуске. И он его нормально отправляет и другой контроллер (Mega с чистым TWI Slave его нормально принимает. А вот с USI фигня какаято происходит.

У мастера подтяжка на +5В есть и у SDA, и у CLK.
У слейва нет, но она и не может повлиять при такой скорости.
duritskiy вне форума  
Непрочитано 28.08.2007, 22:24  
urry
Почётный гражданин KAZUS.RUN
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 107 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

Да, к сожалению, в протеусе посмотреть нельзя - 26 нет в библиотеке. То, что передача идет нормально, частично увидел - есть старт и 0А (5 и признак записи).
А зачем заремлен BUFFER_CONTROL ?
Еще попробуйте убрать NASK

А еще лучше - перепиши ручками и не мучайся.
urry вне форума  
Непрочитано 28.08.2007, 23:49  
duritskiy
Временная регистрация
 
Регистрация: 24.09.2006
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
duritskiy на пути к лучшему
По умолчанию

надо поразбираться как работает этот шифт регистр на выход.

В том то и всё неудобство, что в симуляторе посмотреть нельзя
duritskiy вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Mega 8 + TWI (I2C) Slave Помогите. west1111 Микроконтроллеры, АЦП, память и т.д 46 10.07.2013 01:40
USI в ATTiny25 kassiopay Микроконтроллеры, АЦП, память и т.д 1 05.10.2009 12:05
Solis Master 5000 digital alberio Поиск схем. Делимся схемами 0 28.11.2008 02:57
ATMega16L TWI Master + ATTiny26L USI SLAVE duritskiy Микроконтроллеры, АЦП, память и т.д 1 21.11.2006 15:11
Симулируется ли USI в AvrStudio v4.12? graham Микроконтроллеры, АЦП, память и т.д 3 30.11.2005 09:33


Часовой пояс GMT +4, время: 03:13.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.