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

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

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

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

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

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

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

 
Опции темы
Непрочитано 29.08.2007, 07:13  
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

Извините за недолгое отсутствие. Сам я не занимался USI. Но насколько я понимаю, ACK должен выдаваться по такту от мастера TWI. Выдает - ли такт мастер по шине SCL?
Удачи.
Реклама:
nokazus вне форума  
Непрочитано 29.08.2007, 21:10  
duritskiy
Временная регистрация
 
Регистрация: 24.09.2006
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
duritskiy на пути к лучшему
По умолчанию

да, девятый такт выдаётся
duritskiy вне форума  
Непрочитано 30.08.2007, 08:08  
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

Непонятно. Вроде все должно работать. Может с портами что-нибудь напутано? Или чип задан неправильно?
Кстати. Вот Вы пишите
Цитата:
Так вот установлено (загорается светодиодик 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; //Светодиодик

Но этого не происходит.
А где строка
Цитата:
USIDR = 0; /* Prepare ACK */
???
Ведь именно она определяет данные, которые будут переданы в линию, т.е. ACK=0. Если в регистре USIDR в старшем бите будет 1, то ACK и не будет выдаваться (будет выдана 1).
Удачи.
nokazus вне форума  
Непрочитано 30.08.2007, 08:12  
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

И еще. Светодиодик загорается когда
Цитата:
PORTA_Bit2=1; //Светодиодик
или он тут гасится?
Удачи.
nokazus вне форума  
Непрочитано 30.08.2007, 09:43  
duritskiy
Временная регистрация
 
Регистрация: 24.09.2006
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
duritskiy на пути к лучшему
По умолчанию

USIDR = 0;
есть чуть выше по коду.
Светодиодик именно загорается, хотя это и не принципиально, это я дебаг пытался делать.

Кстати пытался с помощью AVRStudio4 проследить как работает шифтрегистр в разных режимах, но никаким образом не удалось сместить ни одного битика.
Скорее всего - просто симуляция USI в нём не работает.
duritskiy вне форума  
Непрочитано 31.08.2007, 07:06  
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

Если светодиодик загорается, то строка
Цитата:
while ( !(USISR & ( (1‹‹USISIF)|(1‹‹USIOIF) )) ); // Wait until ACK sent. (Pass if Start Cond.)
выполняется. Т.е. либо приходит такт по SCL и тогда данные из USIDR (ACK) выданы, либо выполняется условие START STOP.
Если у Вас не выдается ACK, то может порт МК неисправен? Больше ничего в голову не приходит. И народ молчит. Люди, помогите человеку.
Цитата:
Сегодня ты мне поможешь, а завтра - я тебе помогу. А вместе делаем общее дело.
Удачи.
nokazus вне форума  
Непрочитано 03.09.2007, 13:46  
duritskiy
Временная регистрация
 
Регистрация: 24.09.2006
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
duritskiy на пути к лучшему
По умолчанию

Теперь я пытаюсь просто помигать светодиодиком,который присоединён к SDA. Но опять ничего не получается.

1) SDA настроен на выход:
PORTUSI_SDA=1;
DDR_SDA=1;

2) USISR показывает что 4битный счётчик работыет
PORTA=USISR; //через светодиоды

Блин, ну что за фигня такая происходит?

Прикрепленный файл: 8334415.rar
duritskiy вне форума  
Непрочитано 03.09.2007, 14:36  
duritskiy
Временная регистрация
 
Регистрация: 24.09.2006
Сообщений: 54
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
duritskiy на пути к лучшему
По умолчанию

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

Не ну вы можете себе представить! Я в шоке!

В Апноуте была ошибка - вместо логического И (&&) стояло унарное умножение (&)
вследствие чего терялся один такт сдвигового регистра!

while ( (PIN_USI & (1‹‹PORT_USI_SCL)) && !(tmpUSISR & (1‹‹USIPF)) ); // Wait for SCL to go low to ensure the "Start Condition" has completed.
// If a Stop condition arises then leave the interrupt to prevent waiting forever.
[/b]
duritskiy вне форума  
Непрочитано 06.09.2007, 07:20  
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

Сообщение от duritskiy
Не ну вы можете себе представить! Я в шоке!

В Апноуте была ошибка - вместо логического И (&&) стояло унарное умножение (&)
вследствие чего терялся один такт сдвигового регистра!
Бывает и не такое. Я всегда разбираю апноуты по косточкам. Все лишнее выкидываю, все нужное перепроверяю. Все комментарии переписываю посвоему.
Доверяю лишь даташитам.
Удачи.
nokazus вне форума  
 

Закладки
Опции темы

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

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, время: 16:30.


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