Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
02.12.2006, 23:19
|
|
Частый гость
Регистрация: 09.11.2005
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Кто-нибудь програмил несколько AVRов по UART-у ?
Столкнулся с проблемой связи по UART (USART) одного ведущего (Master) и трёх ведомых (Slave). Не могу понять, как их надо адресовать. Подскажите!!!
|
|
|
|
03.12.2006, 02:10
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,381
Сказал спасибо: 1,962
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Re: Кто-нибудь програмил несколько AVRов по UART-у ?
Сообщение от alll
|
Столкнулся с проблемой связи по UART (USART) одного ведущего (Master) и трёх ведомых (Slave). Не могу понять, как их надо адресовать. Подскажите!!!
|
Делал такое. У меня для усиления достоверности вся передача данных ведется посылками типа:
Код:
|
служебный, номер_посылки, опционально_данные,контрсумма. |
Прием байта в прерывании, обработка - в голове по флагу. Обработка одинаковая для всех slave! То есть - ждем служебного, запоминаем номер, по нему - определяем количество байт данных. Ну, конечно, все это в буфер. Как все данные приняты и контрсумма==0 - по запомненному номеру команды полученные данные кладем на место (ну и флаг, ессно). И каждый слейв просто принимает определенные номера посылок.
Работает надежно как трактор.
Ну а если заложить в систему 9-й бит - там вообще красиво получается. Но в этом случае не выйдет отлаживаться от компа.
|
|
|
|
03.12.2006, 16:17
|
|
Частый гость
Регистрация: 09.11.2005
Сообщений: 10
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Спасибо! Переварю, потом ещё пару вопросиков задам! Можно?
|
|
|
|
03.12.2006, 18:55
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,381
Сказал спасибо: 1,962
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Сообщение от alll
|
Спасибо! Переварю, потом ещё пару вопросиков задам! Можно?
|
Задать-то можно
Кстати, использование 9-го бита очень интересные возможности дает. Например, все стоят на приеме в обычном режиме. Мастер передает номер девайса, которому собирается передавать. И тот переводит свой
USART в режим приема 9-ти битных. Мастер - тоже, и 9-й бит делает=0.
В результате то, что он передает, принимает ТОЛЬКО тот кому надо, у остальных - 0 на месте стоп-бита - приема нет, ошибка. То есть зазря не напрягаются приемом-анализом.
|
|
|
|
03.12.2006, 20:20
|
|
Гражданин KAZUS.RU
Регистрация: 17.07.2006
Адрес: PV.DP.UA
Сообщений: 620
Сказал спасибо: 3
Сказали Спасибо 60 раз(а) в 48 сообщении(ях)
|
Сообщение от nml
|
...В результате то, что он передает, принимает ТОЛЬКО тот кому надо, у остальных - 0 на месте стоп-бита - приема нет, ошибка. То есть зазря не напрягаются приемом-анализом.
|
А подскажите, это только для PICов или в AVR UART тоже на такое способен(в смысле аппаратный 9-битный режим)?
|
|
|
|
03.12.2006, 20:51
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,381
Сказал спасибо: 1,962
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Сообщение от vdlab
|
А подскажите, это только для PICов или в AVR UART тоже на такое способен(в смысле аппаратный 9-битный режим)?
|
Вообще я именно о АВРках и говорил.
PICи, думаю, такое умеют тоже. А лучше всего заглянуть в даташит
|
|
|
|
04.12.2006, 11:11
|
|
Прописка
Регистрация: 03.08.2006
Сообщений: 267
Сказал спасибо: 0
Сказали Спасибо 4 раз(а) в 2 сообщении(ях)
|
Re: Кто-нибудь програмил несколько AVRов по UART-у ?
Сообщение от nml
|
Ну а если заложить в систему 9-й бит - там вообще красиво получается. Но в этом случае не выйдет отлаживаться от компа.
|
У компа, вроде, в адресном байте можно использовать в качестве 9-го бита - бит контроля чётности.
С уважением, Mike18.
|
|
|
|
04.12.2006, 20:55
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,381
Сказал спасибо: 1,962
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Re: Кто-нибудь програмил несколько AVRов по UART-у ?
Сообщение от mike18
|
У компа, вроде, в адресном байте можно использовать в качестве 9-го бита - бит контроля чётности.
|
Да, сформировать на передачу таким образом можно. Хотя не совсем уверен, что такое удастся под виндами - если только передавать по байту с паузами. Или писать в регистры USART напрямую, используя что-нить типа AllowIo.
А вот на прием ничего не выйдет.
|
|
|
|
06.12.2006, 16:47
|
|
Частый гость
Регистрация: 28.08.2006
Сообщений: 12
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
А не проще ли использовать стандартный Modbus
с резервными командами.
|
|
|
|
06.12.2006, 18:17
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,381
Сказал спасибо: 1,962
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Сообщение от GEN_4
|
А не проще ли использовать стандартный Modbus
с резервными командами.
|
Можно, отчего же нет. Правда, принцип тот же - служебный, адрес, инфо и контрсумма. И "стандартность" modbus-по моему, фикция - видел много весьма различающихся протоколов... И еще одна немаловажная особенность - modbus заточен под терминалку, а посему - приличная избыточность (образно - вместо байта 0x23 передавать два байта "23"). Да к тому же - затраты ресурсов МК на кодирование-раскодирование.
Так что применение modbus (на мой взгляд) особого смысла не имеет. Ну, разве что если в ТЗ так определено
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:22.
|
|