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

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

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

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

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

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

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

 
Опции темы
Непрочитано 22.11.2007, 01:29  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,956
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
nml на пути к лучшему
По умолчанию

Сообщение от dimonbest
Получается так: если слейв знает, что ему отсылать во время приема байта от мастера, то он это значение должен поместить в дата регистр. При этом за 8 тактов от мастера, значение дата регистра получит слейв, одновременно свое значение дата регистра отдаст мастеру.
Ну если только слейв поместит данные в SPDR до того, как мастер запустит цикл обмена.

Вообще такая система - master/slave - изначально не заточена под двусторонний обмен (я не принимаю во внимание реализации SPI в которых слейв может запросить переход мастера в слейв режим - не у всех это есть, да и как-то заумно и на мой взгляд ненадежно).

Когда мне однажды все же пришлось такое сделать на SPI - я поступил так. Организовал два независимых потока информации, посылками вида МАРКЕР-ДАННЫЕ-КС. Мастер по прерыванию сразу инициировал новый обмен, а если передавать было нечего - вместо маркера передавал нуль, который слейвом игнорировался. Слейв со своей стороны поступал точно так же. Работало вполне приемлемо, слейв всегда мог донести свои данные до мастера - благодаря постоянному потоку бесполезных нулей
Реклама:
nml вне форума  
Непрочитано 23.11.2007, 16:00  
Zhyk_k_k
Прохожий
 
Регистрация: 25.10.2007
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Zhyk_k_k на пути к лучшему
По умолчанию

Я поступал также как предложил nml. Ну или почти также. Уважаемый nml обсалютно прав. Работало все сносно. Но мне нужна была скорость. Пришлость делать кучу ходов конем. А то вход и выход в прерывание если пишеш на CVAVR многовато тактов жрет в холостую.
Zhyk_k_k вне форума  
Непрочитано 23.11.2007, 16:32  
delamoure
Прописка
 
Аватар для delamoure
 
Регистрация: 22.09.2006
Адрес: Днепропетровск
Сообщений: 114
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
delamoure на пути к лучшему
По умолчанию

Сообщение от Zhyk_k_k
А то вход и выход в прерывание если пишеш на CVAVR многовато тактов жрет в холостую.
А CvAVR перед прерыванием еще можно такую директиву ставить #pragma savereg- ?
delamoure вне форума  
Непрочитано 23.11.2007, 16:36  
Beduin
Прописка
 
Регистрация: 21.10.2005
Сообщений: 251
Сказал спасибо: 11
Сказали Спасибо 22 раз(а) в 17 сообщении(ях)
Beduin на пути к лучшему
По умолчанию

А вот если нужно оединить не 2 а скажем 5 устройств по SPI или USI,тогда как это будет оформлятся.Включить все устройства последовательно в кольцо ....... ,а если в процессе сдвига данных одно из устройств возмет и подменит данные предидущего своими ........ 8O .Что-то не хорошо получается
Beduin вне форума  
Непрочитано 23.11.2007, 18:45  
delamoure
Прописка
 
Аватар для delamoure
 
Регистрация: 22.09.2006
Адрес: Днепропетровск
Сообщений: 114
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
delamoure на пути к лучшему
По умолчанию

Сообщение от Beduin
А вот если нужно оединить не 2 а скажем 5 устройств по SPI или USI,тогда как это будет оформлятся.Включить все устройства последовательно в кольцо ....... ,а если в процессе сдвига данных одно из устройств возмет и подменит данные предидущего своими ........ 8O .Что-то не хорошо получается
Зачем в кольцо, можно - в квадрат
Одновременно на SPI обычно работают только два устройства.
delamoure вне форума  
Непрочитано 24.11.2007, 10:35  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию

Сообщение от Beduin
А вот если нужно оединить не 2 а скажем 5 устройств по SPI или USI, ... Включить все устройства последовательно в кольцо .......
Ну, как-как... так же, как соединяют в кольцо "скажем 5" принтеров с одним компьютером... Печатать, правда, такая фигня не печатает, но простор для фантазии - огроменный! В протоколе SPI предусмотрены только двое - master и slave, все остальные - это уже к терапевту.
tempora вне форума  
Непрочитано 26.11.2007, 02:14  
Zhyk_k_k
Прохожий
 
Регистрация: 25.10.2007
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Zhyk_k_k на пути к лучшему
По умолчанию

Я бы ни когда в жизни не догодался соединить 5 устроиств по SPI кольцом. Личный маленький респект tempor_ю за грамотно описаную ситуацию. :P На практике соединял больше, причем в кучу и память и ведомые м/к. Но чтобы кольцом или квадратом. Кроме шуток, как время появится попробую 100%. И к вопросу о том что подменит. Конечно подменит. Если хоть в одном ведомом чтото будет. Он же их сдвигать будет и передоватьна следуюшие. Короче в моем понимании не разумно как минимум, но теоритически возможно.

Уважаемый delamoure, не пробовал ставить(#pragma savereg). Но как-то внутренее чутье говорит что сей момент работать будет навряд. Вопрос чисто ради интереса, ты после компиляции проэкта *.asm файлик глядиш? Так вот он там такое ТВАРит.... Все что может сохраняет и пере сохраняет (стеки итд.). Но могу тоже попробовать проверить. Правда не очень скоро есть срочная работа.
Zhyk_k_k вне форума  
Непрочитано 27.11.2007, 10:42  
Beduin
Прописка
 
Регистрация: 21.10.2005
Сообщений: 251
Сказал спасибо: 11
Сказали Спасибо 22 раз(а) в 17 сообщении(ях)
Beduin на пути к лучшему
По умолчанию

Вы немножко неправильно меня поняли .То что я хочу сказать на приложенном рисунке. Данные перекачиваются последовательно по кольцу .Мастер разумеется один ,а вот количество слейвов никто не ограничивал

-- Прилагается рисунок: --

-- Прилагается рисунок: --
Beduin вне форума  
Непрочитано 27.11.2007, 10:59  
tempora
Почётный гражданин KAZUS.RU
 
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
tempora на пути к лучшему
По умолчанию

Сообщение от Beduin
Вы немножко неправильно меня поняли...
Да, нет - именно так и поняли... Можешь привести пример, когда это нужно?
tempora вне форума  
Непрочитано 27.11.2007, 11:45  
delamoure
Прописка
 
Аватар для delamoure
 
Регистрация: 22.09.2006
Адрес: Днепропетровск
Сообщений: 114
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
delamoure на пути к лучшему
По умолчанию

Сообщение от Zhyk_k_k
Уважаемый delamoure, не пробовал ставить(#pragma savereg). Но как-то внутренее чутье говорит что сей момент работать будет навряд. Вопрос чисто ради интереса, ты после компиляции проэкта *.asm файлик глядиш? Так вот он там такое ТВАРит.... Все что может сохраняет и пере сохраняет (стеки итд.). Но могу тоже попробовать проверить. Правда не очень скоро есть срочная работа.
Конечно, гляжу. Недавно писал модуль для работы с USB. Там обработчик прерывания написан на ассемблере. Использовал pragma savereg- для ускорения работы. Плюс к тому ассемблерный код работает и с ранее объявленными в C переменными. Без всяких извратов. Могу дать пример.
delamoure вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Протокол CANopen??? phoenix84 Proteus, KiCAD и другие ECAD 4 20.03.2012 18:13
протокол C-Bus magneat Микроконтроллеры, АЦП, память и т.д 0 23.09.2008 20:44
Протокол Атлас-3 spin722 Автоматика и аппаратура связи 7 20.09.2008 16:40
Протокол Wiegand Beduin Микроконтроллеры, АЦП, память и т.д 0 05.06.2007 16:39
протокол sergey2000 Микроконтроллеры, АЦП, память и т.д 1 28.05.2006 10:55


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


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