реклама на сайте
подробности

 
 
> Сопряжение нескольких atmega, у кого нибудь может есть примеры??
Станис
сообщение Apr 4 2010, 14:00
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 12-11-09
Из: Perm
Пользователь №: 53 565



Нужна связь между атмегами32. расстояние не больше полуметра незнаю с чего даже начать.. только начинаю осваивать..
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 29)
SasaVitebsk
сообщение Apr 4 2010, 14:30
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Какой объём информации? Насколько регулярный обмен?

Если скорость не большая, то можно обрабатывать и без приёмопередатчиков. Если объём значительный, то лучше использовать интерфейс rs485.
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 4 2010, 14:40
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Связь внутри прибора на одной плате или между платами или межприборная? Условия эксплуатации какие (электромагнитная обстановка)? Гальваническая изоляция нужна или нет? Ведущий всегда один или любой МК может быть ведущим? Какие интерфейсы свободны? Наверное самое простое - использовать UART совместно с маркерным адресным протоколом связи.
Go to the top of the page
 
+Quote Post
Станис
сообщение Apr 5 2010, 05:41
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 12-11-09
Из: Perm
Пользователь №: 53 565



связь внутри прибора, информации мало.. нужно только отправлять числа от ведущего МК в ведомые, свободны все интерфейсы..
Go to the top of the page
 
+Quote Post
Skaf
сообщение Apr 5 2010, 06:27
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 228
Регистрация: 4-06-09
Пользователь №: 49 940



Смотря сколько мег и какая нужна скорость.

Если скорость нужна не очень большая я бы сделал на UART. Если скорость нужна большая- то SPI.
Go to the top of the page
 
+Quote Post
Станис
сообщение Apr 5 2010, 07:23
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 12-11-09
Из: Perm
Пользователь №: 53 565



Цитата(Skaf @ Apr 5 2010, 12:27) *
Смотря сколько мег и какая нужна скорость.

Если скорость нужна не очень большая я бы сделал на UART. Если скорость нужна большая- то SPI.


Мег не больше 10... скорость некритична...
а примеров нет реализации?
Go to the top of the page
 
+Quote Post
Станис
сообщение Apr 6 2010, 09:53
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 12-11-09
Из: Perm
Пользователь №: 53 565



Всетаки выбрал USART..

отправляю число с ведущего МК на ведомый:
printf("125");

на втором опрашивая getchar() получаю по порядку коды символов:
49;50;53

Дк вот вопрос как мне теперь эти когда можно преобразовать в число 125.
мозги догнали только до этого.. но я думаю это не гуманно biggrin.gif

//цыкл
s=getchar();
if (i2>0) { i3=((s-48)); i=i1+i2+i3; i1=0; i2=0; i3=0;// получаем единицы и потом все складываем и обнуляем
if (i1>0) i2=((s-48)*10);//получаем десятки
if (i1==0) i1=((s-48)*100); //получаем сотни

он конечно работает но не всегда при повторной отправке числа 125 число насчитывает уже 512 почемуто.. а следующая отправка снова 125..
может подкажет как это делают умные люди?

Сообщение отредактировал Станис - Apr 6 2010, 10:37
Go to the top of the page
 
+Quote Post
baralgin
сообщение Apr 6 2010, 14:07
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 23-12-08
Из: Кишинёв
Пользователь №: 42 680



Станис Числа посылать числами:
printf("%c",125)
...
s = getchar(); // s равно 125

ps: гланды вырезаются через анальное отверстие...
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Apr 6 2010, 16:47
Сообщение #9


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



А для достоверности работы не хотите ли использовать какой-нибудь протокол для передачи данных? Точно определяются в этом случае начало пакета, конец, CRC.

Сам использовал WAKE протокол.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
rezident
сообщение Apr 6 2010, 17:43
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(Станис @ Apr 6 2010, 15:53) *
может подкажет как это делают умные люди?
Я же вам уже посоветовал использовать адресный протокол связи. Как пример, упомянутый mdmitry протокол Wake.
Go to the top of the page
 
+Quote Post
Станис
сообщение Apr 7 2010, 04:08
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 12-11-09
Из: Perm
Пользователь №: 53 565



printf("%c",125) можно отправить только чар число?

Реализации протокола Wake на CVAVR ни у кого нет??
Go to the top of the page
 
+Quote Post
Станис
сообщение Apr 7 2010, 08:45
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 12-11-09
Из: Perm
Пользователь №: 53 565



скажите пожалуйста какое значение принимает getchar(); после того как все данные будут прочтены?? (не могу сделать условие чтоб при положительном значении только брались числа от туда..)
Go to the top of the page
 
+Quote Post
smalcom
сообщение Apr 7 2010, 14:49
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



уже сразу ищи компонент для Делфи
Go to the top of the page
 
+Quote Post
Станис
сообщение Apr 8 2010, 03:45
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 12-11-09
Из: Perm
Пользователь №: 53 565



Цитата(smalcom @ Apr 7 2010, 21:04) *
уже сразу ищи компонент для Делфи


Вопрос о сопряжении с ПК не рассматривается вообще.
Go to the top of the page
 
+Quote Post
Станис
сообщение Apr 8 2010, 05:35
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 12-11-09
Из: Perm
Пользователь №: 53 565



Вот настроил USART на двух Мегах все работет.. общаются отлично.. а вот как третий мк к линии подсоединю так сразу все молчат... подскажите в чем дело?
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 8 2010, 05:50
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Станис @ Apr 8 2010, 09:50) *
Вот настроил USART на двух Мегах все работет.. общаются отлично.. а вот как третий мк к линии подсоединю так сразу все молчат... подскажите в чем дело?
Прямое соединение USARTов возможно только в конфигурации точка-точка, т.е. ровно 2 штуки. Если нужно больше, то нужно делать либо шину (драйверами RS485 или буферами с 3мя состояниями) либо кольцо.
Go to the top of the page
 
+Quote Post
Станис
сообщение Apr 8 2010, 10:41
Сообщение #17


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 12-11-09
Из: Perm
Пользователь №: 53 565



Цитата(XVR @ Apr 8 2010, 12:05) *
Прямое соединение USARTов возможно только в конфигурации точка-точка, т.е. ровно 2 штуки. Если нужно больше, то нужно делать либо шину (драйверами RS485 или буферами с 3мя состояниями) либо кольцо.

если в кольцо нужно делать последовательную пересылку от МК до МК?
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 8 2010, 10:52
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Станис @ Apr 8 2010, 14:56) *
если в кольцо нужно делать последовательную пересылку от МК до МК?
Да. TX первого соединяешь с RX 2го. TX 2го с RX 3го. TX 3го с RX 1го. (3 штуки в кольце). Топология крайне нестандартная и такая же ненадежная - выход из строя (или подвисание) одного МК блокирует все кольцо
Go to the top of the page
 
+Quote Post
Stas_R
сообщение Apr 11 2010, 17:03
Сообщение #19





Группа: Участник
Сообщений: 12
Регистрация: 18-10-05
Из: г.Донецк
Пользователь №: 9 806



Читаете раздел Multi-processor Communication Mode для ATmega32. Соединял по USART 6 МК, один мастер 5 подчиненых. На линию TXD ставится резистор, выходы 5 передатчиков подчиненых в третьем состоянии, при передаче выход переключается на передачу. Все описано в DS, читайте и все у Вас получится.
Go to the top of the page
 
+Quote Post
Станис
сообщение Apr 12 2010, 03:48
Сообщение #20


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 12-11-09
Из: Perm
Пользователь №: 53 565



Цитата(Stas_R @ Apr 11 2010, 23:18) *
Читаете раздел Multi-processor Communication Mode для ATmega32. Соединял по USART 6 МК, один мастер 5 подчиненых. На линию TXD ставится резистор, выходы 5 передатчиков подчиненых в третьем состоянии, при передаче выход переключается на передачу. Все описано в DS, читайте и все у Вас получится.


А вы не поделитесь наработками в этом направлении?
Go to the top of the page
 
+Quote Post
Stas_R
сообщение Apr 12 2010, 12:24
Сообщение #21





Группа: Участник
Сообщений: 12
Регистрация: 18-10-05
Из: г.Донецк
Пользователь №: 9 806



Что Вас интересует. Спрашивайте.
Go to the top of the page
 
+Quote Post
Станис
сообщение Apr 13 2010, 04:02
Сообщение #22


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 12-11-09
Из: Perm
Пользователь №: 53 565



Цитата(Stas_R @ Apr 12 2010, 18:39) *
Что Вас интересует. Спрашивайте.


с битами не могу разобраться... первый раз с даташитом работаю.. а так все какими то кусочками кодов в нете питался.. laughing.gif вы уж извените.. я только начал изучять и не все так сразу мне дается..
я вот понял что можно настроить это все в мастере кодвизиона.. толко не все понятно..

вроде как так? для мастера/слейва
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 13 2010, 04:31
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
вроде как так?
Режим наверное все таки асинхронный (Mode)
Go to the top of the page
 
+Quote Post
Станис
сообщение Apr 13 2010, 05:18
Сообщение #24


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 12-11-09
Из: Perm
Пользователь №: 53 565



Цитата(XVR @ Apr 13 2010, 10:46) *
Режим наверное все таки асинхронный (Mode)


UCPOL - полярность синхронизации. используется только в синхронном режиме. В асинхронном UCPOL=0.
или я не правильно чтото понял?
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 13 2010, 06:20
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
UCPOL - полярность синхронизации. используется только в синхронном режиме. В асинхронном UCPOL=0.
или я не правильно чтото понял?
У меня нет CW, так что сказать не могу. А какие еще есть варианты в списке Mode?
Go to the top of the page
 
+Quote Post
Станис
сообщение Apr 13 2010, 06:27
Сообщение #26


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 12-11-09
Из: Perm
Пользователь №: 53 565



Цитата(XVR @ Apr 13 2010, 12:35) *
У меня нет CW, так что сказать не могу. А какие еще есть варианты в списке Mode?


Asynchronous
Sync. master UCPOL=0
Sync. master UCPOL=1
Sync. slave UCPOL=0
Sync. slave UCPOL=1

Если поставить Asynchronous, то как тогда различить мастер и слэйв?
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 13 2010, 07:04
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
Asynchronous
Вот его
Цитата
Если поставить Asynchronous, то как тогда различить мастер и слэйв?
Изнутри контролера они не отличаются. Все отличие в схеме включения выводов TX и RX и в протоколе обмена
Go to the top of the page
 
+Quote Post
Станис
сообщение Apr 13 2010, 07:33
Сообщение #28


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 12-11-09
Из: Perm
Пользователь №: 53 565



я хочу построить многопроцессорную систему.. но в ДШ не могу разобраться...
но там написано про бит UCPOL..
Go to the top of the page
 
+Quote Post
Stas_R
сообщение Apr 13 2010, 08:19
Сообщение #29





Группа: Участник
Сообщений: 12
Регистрация: 18-10-05
Из: г.Донецк
Пользователь №: 9 806



Читайте описание на регистр UCSRB. Там есть бит 3 TXEN который фактически переключает вывод порта как линия передачи TX или бит порта.
Мастер всегда скоммутирован как линия TX. Подчиненый скомутирован как бит порта. При необходимости передачи данных бит TXEN устанавливается в 1 и после окончания передачи сбрасывается в 0. На линии TX подчиненых МК которые паралелятся устанавливается подтягивающий резистор.
Go to the top of the page
 
+Quote Post
Станис
сообщение Apr 13 2010, 09:40
Сообщение #30


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 12-11-09
Из: Perm
Пользователь №: 53 565



Решил использовать мегу2560 у него есть три USART... вот мне как раз и хватит.. и памяти графического меню предостаточно..
Всем спасибо за помошь!
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 05:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01702 секунд с 7
ELECTRONIX ©2004-2016