roboforum.ru

Технический форум по робототехнике.

Два Atmega32 по SPI, одна переключается из slave

Два Atmega32 по SPI, одна переключается из slave

grek » 13 янв 2012, 14:34

Есть два микроконтроллера Atmega32 оба по SPI.Atmega1 считает данные с АЦП являясь мастером.На этих же проводах висит Atmega2 выполняет обмен данными с другими микроконтроллерами по SPI и все это одновременно. В определенный момент atmega2 переводит atmega1 в режим мастер и считывает с нее данные.Но это все на одних и тех же проводах и нужно отключать один микроконтроллер от другого физически,например контактами реле.Использовать контакты по скорости по моему не очень целесообразно.Как это сделать по другому с помощью логики или еще как,пока варианта не нашел.Подскажите как быть в данном случае.Возможно еще использовать usart тогда все получается,но хотелось бы все же реализовать по SPI. Или все же это немного не реально.

Добавлено спустя 47 минут 28 секунд:
Вроде как решение опторазвязки,буду пробовать.

Re: Два Atmega32 по SPI, одна переключается из slave

Grofus » 13 янв 2012, 15:24

Какая задача всей этой системы? Не проще для этих целей I2С использовать ну или RS-485? На usart можно организовать, это мультипроцессорный режим называется и не потребуется никаких доп.железяк.

Re: Два Atmega32 по SPI, одна переключается из slave

grek » 13 янв 2012, 21:44

Хотел мульти режим на SPI организовать,вроде все получается.

Re: Два Atmega32 по SPI, одна переключается из slave

Петруччо » 16 янв 2012, 09:36

Если мультипроцесcорный режим по SPI, да ещё и на атмегах, то должен быть жёсткий алгоритм работы системы (согласования) ибо всё упирается в прерывания. Я так понял у вас процессы асинхронные? Или есть заданный алгоритм?

Re: Два Atmega32 по SPI, одна переключается из slave

vadinator » 16 янв 2012, 09:47

Используйте пин ss в режиме slave и один мастер. В режиме slave, интерфейс SPI находится в состоянии ожидания, в котором MISO переводится в третье состояние, до тех пор, пока на выводе SS присутствует высокий уровень...

Re: Два Atmega32 по SPI, одна переключается из slave

grek » 16 янв 2012, 20:54

Есть алгоритм и есть главный контроллер(он включает нужный и забирает с него данные) и ему подчиненные контроллеры.Все они имеют разрешения SS. Вопрос сейчас стоит в том потянет ли линия из 10 подчиненных одновременную команду на все(она будет одинаковая),то есть осилит ли главный контроллер тактирование 10 штук,вроде как должен, но четкого ответа пока не нашел.А так на каждом есть разрешения и в основном будут работать по очереди.

Re: Два Atmega32 по SPI, одна переключается из slave

Romikgy » 17 янв 2012, 01:16

spi это синхроная передача и прием , если нужно просто отослать 10 сразу то думаю проблем не будет ... а вот если принять .... то будет каша...

Re: Два Atmega32 по SPI, одна переключается из slave

grek » 17 янв 2012, 08:33

Нужно отослать 10 абонентам slave команду и они эту команду должны принять,и очень желательно синхронно.Возможно такое? Может кто то уже использовал?

Re: Два Atmega32 по SPI, одна переключается из slave

vadinator » 17 янв 2012, 08:39

Думаю заработает... но лучше проверить на макетке перед заказом ПП...

Re: Два Atmega32 по SPI, одна переключается из slave

Петруччо » 17 янв 2012, 10:05

Процы-то должны всё понять, им-то какая разница что им в слэйв-режиме втирают. Мне кажется вопрос чисто технологический: хватит ли у главного проца мощности на параллельную нагрузку и как далеко стоят слейвы от мастера.

Re: Два Atmega32 по SPI, одна переключается из slave

grek » 17 янв 2012, 10:16

Да вот и вопрос, хватит ли мощности главному процессору.Должны все контроллеры в корпус 30 см на 30см поместится.

Re: Два Atmega32 по SPI, одна переключается из slave

Петруччо » 17 янв 2012, 14:15

ВЧ повторитель на ОУ спасёт мир)))

Re: Два Atmega32 по SPI, одна переключается из slave

grek » 17 янв 2012, 14:30

ВЧ повторитель на ОУ спасёт мир)))

А нужен ли он.?Можно и репитер поставить или что то подобное.

Re: Два Atmega32 по SPI, одна переключается из slave

grek » 02 окт 2013, 16:50

Подскажите по вопросу. Есть микроконтроллер в режиме master и еще в режиме slave. От slave хочу передать данные master. На SS на slave всегда висит 0. Подаю импульсы на slave мастером spi(0xff), а ответа не получаю.В регистр slave просто пишу в SPDR = 0x54; Получаю ответ всегда 0xFF. Нужно ли дергать ножку SS из 1 в 0. Может у кого есть программная реализация кинте если не жалко.

Все спасибо, разобрался.


Rambler\'s Top100 Mail.ru counter