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

 
 
5 страниц V  < 1 2 3 4 5 >  
Reply to this topicStart new topic
> USART - интересно мнение специалистов!
Rash
сообщение Nov 24 2005, 10:05
Сообщение #31


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



Цитата
Неа так нельзя дело в том что это у TWI open drain выход а у UART обычный выход


ну значит надо поставить пару транзюков (лишнее место на плате конечно), если хочется иметь UART, а не TWI.
Go to the top of the page
 
+Quote Post
KRS
сообщение Nov 24 2005, 10:17
Сообщение #32


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

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Еще не совсем понятно как общаются контроллеры

например если нужно два логических соеденения например 1 контроллер общается со 2 (точка точка) и с 3 (точка точка) то тут можно использовать USART для одного соеденения и SPI для второго

елси все три обящются между собой то самое просто использовать TWI, можно даже и мастера шины менять в TWI это предусмотрено.
Go to the top of the page
 
+Quote Post
IEC
сообщение Nov 24 2005, 10:31
Сообщение #33


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



Вопрос по существу: На данной шине какая приоритетность обмена?
Т.Е. сколько мастеров (инициаторов обмена)? Если один, тогда можно и UART. Там есть режим многопроцессорного обмена и ведущий может обращаться к ведомым путем указания его прядкового номера. У меня в проэкте есть один ведущий и 10 ведумых - все работает великолепно. При большем количестве мастеров возникнет усложнение алгоритма обмена. По поводу TWI (уж очень он смахивает на I2C) сам не разбирался, но там должна быть по протоколу предусмотрена процедура обмена с разными устройствами, находящимися на одной шине. Скорее всего упустили какой-нибудь ньюанс.
Go to the top of the page
 
+Quote Post
Miron
сообщение Nov 24 2005, 11:25
Сообщение #34


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

Группа: Validating
Сообщений: 149
Регистрация: 11-02-05
Из: Рязань
Пользователь №: 2 574



Задача на USART вполне решаемая если у вас один мастер в линии соединял так до 8 МК с реализацией мультипроцессорного режима причем стояли вперемешку 51 камни и AVR
Go to the top of the page
 
+Quote Post
James D.
сообщение Nov 24 2005, 12:06
Сообщение #35


Местный
***

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



Попробовал работать со SPI. Ввел простую прогу передачи (без прерываний) из даташита в один МК, два других стер.
Так вот, этот мастер-передатчик говорит, что передача прошла. Теперь вопрос - куда? Если кроме него на шине никого нет.
В TWI по-другому: если передачи нет - стоит и ждет, вплоть до зависания.
В чем тут дело?

Пояснение к моей задаче.
Мастер на шине один. Подчиненных - два. Мастер передает и принимает данные. Работает это все не по прерываниям. Сами проги приема-передачи находятся в обработчиках прерываний таймеров (по переполнению, сравнению - не важно), где наряду с другими задачами происходит и передача данных.

P.S. Ради интереса пробую разные интерфейсы связи, т.к. опыта работы с ними нет. Пока что TWI показал лучшие результаты по сравнению с другими. Но у меня получается надежно передавать данные только между двумя МК (в одну сторону: м32->м32), как только пытаюсь передать на третий (м32->м16) - передача не идет...

P.P.S. Ёлки-палки, у всех связь нескольких МК работает, а у меня нет! Хоть и делаю все по правилам. Я бы с удовольствием использовал TWI, но что-то не идет. А где ошибка не найду.

Сообщение отредактировал James D. - Nov 24 2005, 12:21
Go to the top of the page
 
+Quote Post
James D.
сообщение Nov 24 2005, 14:11
Сообщение #36


Местный
***

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



Моя тема, посвященная мучениям с TWI: http://forum.electronix.ru/index.php?showtopic=9473

Если кто-то может реально помочь, очень прошу - напишите. Если надо, предоставлю свои программы.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Nov 24 2005, 14:42
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(James D. @ Nov 24 2005, 19:06) *
Попробовал работать со SPI. Ввел простую прогу передачи (без прерываний) из даташита в один МК, два других стер.
Так вот, этот мастер-передатчик говорит, что передача прошла. Теперь вопрос - куда? Если кроме него на шине никого нет.
В TWI по-другому: если передачи нет - стоит и ждет, вплоть до зависания.
В чем тут дело?


SPI отличается от TWI. В нем нет ни каких аппаратных примочек, определяющих, прошла передача или нет. Если мастер выплюнул на шину MOSI (Master Output - Slave Input) байт данных, все слэйвы на шине MOSI приняли в регистр данных SPI байт от мастера, при этом, одновременно, при передаче мастера, все слэйвы выплюнут по шине MISO (Master Input - Slave Output) байт из своего регистра данных SPI, если у них на выводе SS присутствует лог. 0. Это если задействовать SS, что требует от мастера выделения двух портов IO для двух слэйвов. Можно эти линии (SS) и не использовать. Я говорил Вам выше о подключении через резисторы 470 Ом, так вот они как раз и пригодятся. О возможном алгоритме протокола по SPI я говорил Вам выше.

Вообще лучше досконально изучить интерфейс самому, прежде чем его использовать. Кстати, прислушайтесь к тому что сказал Вам IgorKossak...


--------------------
Go to the top of the page
 
+Quote Post
James D.
сообщение Nov 24 2005, 16:27
Сообщение #38


Местный
***

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



Остается только программно реализовать определение успешного прохода передачи.
Это касается и USART - он тоже никак не определяет, принял слэйв данные или нет.
Можно сделать так (USART):
1. Мастер выдает байт на шину, и сразу же переключается на прием.
2. Слэйв принял байт (сохранил), переключается на передачу, отсылает принятый байт мастеру, переключается на прием и ждет следующий байт.
3. Мастер, приняв байт от слэйв, берет следующий байт, отправляет, переключается на прием и т.д.
Или так: 3. Мастер, приняв байт от слэйв, сравнивает принятый байт с отправленным, если совпадают - отправляет следующий, иначе выдает сигнал ошибки, и опять выдает тот же байт.

Правильно будет так сделать или нет?
Go to the top of the page
 
+Quote Post
Rash
сообщение Nov 24 2005, 16:43
Сообщение #39


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



Цитата(James D. @ Nov 24 2005, 20:27) *
Остается только программно реализовать определение успешного прохода передачи.
Это касается и USART - он тоже никак не определяет, принял слэйв данные или нет.
Можно сделать так (USART):
1. Мастер выдает байт на шину, и сразу же переключается на прием.
2. Слэйв принял байт (сохранил), переключается на передачу, отсылает принятый байт мастеру, переключается на прием и ждет следующий байт.
3. Мастер, приняв байт от слэйв, берет следующий байт, отправляет, переключается на прием и т.д.
Или так: 3. Мастер, приняв байт от слэйв, сравнивает принятый байт с отправленным, если совпадают - отправляет следующий, иначе выдает сигнал ошибки, и опять выдает тот же байт.

Правильно будет так сделать или нет?


USART дуплексный зачём его переключать на приём и передачу, посмотри мои предыдущие посты (они на второй странице), вроде там есть нормальный протокол как сделать (я не настаиваю так совет)
Go to the top of the page
 
+Quote Post
prottoss
сообщение Nov 24 2005, 17:39
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Rash @ Nov 24 2005, 23:43) *
USART дуплексный зачём его переключать на приём и передачу, посмотри мои предыдущие посты (они на второй странице), вроде там есть нормальный протокол как сделать (я не настаиваю так совет)


При двух слэйвах реализовать дуплексность USART на этих слэйвах проблематично, хотя можно. Кому то из них придется отключаться от линии TxD, таким образом приняв первый байт (адрес слэйва), он (слэйв) должен будет определить его это адрес или нет. Если не его, он отключает линию TxD, если его, делает что то осмысленное, и передает ОК по TxD


--------------------
Go to the top of the page
 
+Quote Post
James D.
сообщение Nov 24 2005, 18:48
Сообщение #41


Местный
***

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



Так я же о чем говорю: мастер-передатчик передает данные не глядя - принял их приемник или нет. А приемник ждет данных, и пока они не поступят, ему некуда деваться. Поэтому, для того, чтобы передатчик передавал данные более осмысленно, его нужно постоянно переводить в режим приема, т.е. гонять байты данных от мастера к слэйву и обратно.
Вопрос адресации решил простейшим способом - от мастера идут две линии к слэйв1 и 2. На который надо передавать данные, та линия сбрасывается в "0". Не так изящно, конечно, как хотелось бы, но пока пусть будет так.
Go to the top of the page
 
+Quote Post
vm1
сообщение Nov 24 2005, 20:33
Сообщение #42


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 978



Цитата(KRS @ Nov 24 2005, 12:20) *
[Вообще есть Multi-processor Communication Mode
используется 9 бит для адресации и контроллер будет частично аппартно фильтровать данные

Но тут вопрос в подключении, просто так три UARTA на одну линию не подсоеденить нужны еще микросхемы типа драйвера 485


Можно поставить в TXD транзисторы, как справедливо упоминали выше,
а можно просто диоды шотки.
Так как обычно обмен идет в порядке запрос-ответ,
то достаточно полудуплексного режима,
поэтому TXD и RXD всех процессоров
можно объеденить общим проводом подключенным через резистор к питанию.
Только необходимо на отвечающей стороне обеспечить задержку не менее 0.5бита,
обычно это не проблема, такую задержку дает программа подготавливающая ответ.

UART применять удобнее чем SPI так как он имеет буферизацию и возможность
выделения заголовка с помощью 9 бита.
Бывают варианты UARTов с синхронизацией 1:8 и даже 1:1 если от внешнего источника.
Так что скорости UARTов могут быть достаточно высокими
и если программа еще чем то занимается кроме обмена
SPI может не дать выигрыша в скорости.
Что толку от скоростей SPI если полученные данные
программа не успеет забрать из за отсутствия буферизации.
Go to the top of the page
 
+Quote Post
Rash
сообщение Nov 25 2005, 09:44
Сообщение #43


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



Вопрос к TWI спецам, на плате резисторы подтяжки (4.7кОм) где лучьше ставить, ближе к Mege, в конце линии или всё равно? У меня три устройства (цифровые потенциометры), можно сказать расиданы на плате в разных местах, по TWI связаны, а между ними AT mega.
Go to the top of the page
 
+Quote Post
m16
сообщение Nov 25 2005, 09:49
Сообщение #44


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 27-01-05
Пользователь №: 2 225



Цитата(Rash @ Nov 25 2005, 12:44) *
Вопрос к TWI спецам, на плате резисторы подтяжки (4.7кОм) где лучьше ставить, ближе к Mege, в конце линии или всё равно? У меня три устройства (цифровые потенциометры), можно сказать расиданы на плате в разных местах, по TWI связаны, а между ними AT mega.

в конце линии
Go to the top of the page
 
+Quote Post
Rash
сообщение Nov 25 2005, 10:03
Сообщение #45


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



Цитата(m16 @ Nov 25 2005, 13:49) *
Цитата(Rash @ Nov 25 2005, 12:44) *

Вопрос к TWI спецам, на плате резисторы подтяжки (4.7кОм) где лучьше ставить, ближе к Mege, в конце линии или всё равно? У меня три устройства (цифровые потенциометры), можно сказать расиданы на плате в разных местах, по TWI связаны, а между ними AT mega.

в конце линии





Код
Расположение такое:

  |---------------------------Mega
  |                            (x)|------------------------------|
  |                               |                              |
1-ый резистор              2-ой резистор                    3-ий резистор


(x) - где сейчас стоят резюки.
И где оптимальней?
Go to the top of the page
 
+Quote Post

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

 


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


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