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

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

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

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

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

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

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

 
Опции темы
Непрочитано 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
Сообщений: 360
Сказал спасибо: 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
Сообщений: 360
Сказал спасибо: 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.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 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.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 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, время: 20:30.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot