roboforum.ru

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


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

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

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

Сообщение grek » 13 янв 2012, 14:34

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

Добавлено спустя 47 минут 28 секунд:
Вроде как решение опторазвязки,буду пробовать.
grek
 
Сообщения: 159
Зарегистрирован: 16 сен 2009, 15:41
Откуда: Арзамас

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

Сообщение Grofus » 13 янв 2012, 15:24

Какая задача всей этой системы? Не проще для этих целей I2С использовать ну или RS-485? На usart можно организовать, это мультипроцессорный режим называется и не потребуется никаких доп.железяк.
Алокоголизм - излечим, пьянство - нет.
Peace-death.
Аватара пользователя
Grofus
 
Сообщения: 104
Зарегистрирован: 25 июл 2009, 16:35
Откуда: Ессентуки
прог. языки: ASM , Lisp , C# :)
ФИО: Алексей

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

Сообщение grek » 13 янв 2012, 21:44

Хотел мульти режим на SPI организовать,вроде все получается.
grek
 
Сообщения: 159
Зарегистрирован: 16 сен 2009, 15:41
Откуда: Арзамас

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

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

Если мультипроцесcорный режим по SPI, да ещё и на атмегах, то должен быть жёсткий алгоритм работы системы (согласования) ибо всё упирается в прерывания. Я так понял у вас процессы асинхронные? Или есть заданный алгоритм?
Петруччо
 
Сообщения: 20
Зарегистрирован: 28 июл 2011, 11:19
Откуда: www.rcdesign.ru
прог. языки: C

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

Сообщение vadinator » 16 янв 2012, 09:47

Используйте пин ss в режиме slave и один мастер. В режиме slave, интерфейс SPI находится в состоянии ожидания, в котором MISO переводится в третье состояние, до тех пор, пока на выводе SS присутствует высокий уровень...
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)
Аватара пользователя
vadinator
 
Сообщения: 979
Зарегистрирован: 19 янв 2010, 14:51
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим

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

Сообщение grek » 16 янв 2012, 20:54

Есть алгоритм и есть главный контроллер(он включает нужный и забирает с него данные) и ему подчиненные контроллеры.Все они имеют разрешения SS. Вопрос сейчас стоит в том потянет ли линия из 10 подчиненных одновременную команду на все(она будет одинаковая),то есть осилит ли главный контроллер тактирование 10 штук,вроде как должен, но четкого ответа пока не нашел.А так на каждом есть разрешения и в основном будут работать по очереди.
grek
 
Сообщения: 159
Зарегистрирован: 16 сен 2009, 15:41
Откуда: Арзамас

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

Сообщение Romikgy » 17 янв 2012, 01:16

spi это синхроная передача и прием , если нужно просто отослать 10 сразу то думаю проблем не будет ... а вот если принять .... то будет каша...
die Wahrheit ist irgendwo da draußen
Аватара пользователя
Romikgy
 
Сообщения: 750
Зарегистрирован: 15 ноя 2009, 13:37
Откуда: Porto Franco "Odessa"

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

Сообщение grek » 17 янв 2012, 08:33

Нужно отослать 10 абонентам slave команду и они эту команду должны принять,и очень желательно синхронно.Возможно такое? Может кто то уже использовал?
grek
 
Сообщения: 159
Зарегистрирован: 16 сен 2009, 15:41
Откуда: Арзамас

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

Сообщение vadinator » 17 янв 2012, 08:39

Думаю заработает... но лучше проверить на макетке перед заказом ПП...
Роботы, уже среди нас...
Прошу прощения за аватар, никак схему динамической индикации не могу настроить :)
Аватара пользователя
vadinator
 
Сообщения: 979
Зарегистрирован: 19 янв 2010, 14:51
Откуда: Петрозаводск
прог. языки: C, FBD, Wiring-Processimg,,,LD, SFC, ST...
ФИО: Вадим

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

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

Процы-то должны всё понять, им-то какая разница что им в слэйв-режиме втирают. Мне кажется вопрос чисто технологический: хватит ли у главного проца мощности на параллельную нагрузку и как далеко стоят слейвы от мастера.
Петруччо
 
Сообщения: 20
Зарегистрирован: 28 июл 2011, 11:19
Откуда: www.rcdesign.ru
прог. языки: C

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

Сообщение grek » 17 янв 2012, 10:16

Да вот и вопрос, хватит ли мощности главному процессору.Должны все контроллеры в корпус 30 см на 30см поместится.
grek
 
Сообщения: 159
Зарегистрирован: 16 сен 2009, 15:41
Откуда: Арзамас

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

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

ВЧ повторитель на ОУ спасёт мир)))
Петруччо
 
Сообщения: 20
Зарегистрирован: 28 июл 2011, 11:19
Откуда: www.rcdesign.ru
прог. языки: C

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

Сообщение grek » 17 янв 2012, 14:30

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

А нужен ли он.?Можно и репитер поставить или что то подобное.
grek
 
Сообщения: 159
Зарегистрирован: 16 сен 2009, 15:41
Откуда: Арзамас

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. Может у кого есть программная реализация кинте если не жалко.

Все спасибо, разобрался.
grek
 
Сообщения: 159
Зарегистрирован: 16 сен 2009, 15:41
Откуда: Арзамас


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 31