|
|
|
3 PICа по RS485 |
|
|
|
Feb 10 2016, 12:12
|
Группа: Участник
Сообщений: 6
Регистрация: 10-02-16
Пользователь №: 90 408
|
Всем здравствуйте! Недавно начал разбираться с МК , точнее с их передачей данных на другие МК, остановился на USART, такой вопрос: Мне нужно обмениваться данными между 3 МК, но мне не понятно, допустим 1 передает, а 2 других принимают, как передатчик понимает, что приемник готов принять данные? Вдруг случится так, что в регистр передатчика я уже записал какие либо данные, а другие МК еще не успели включиться на прием(МК включился с задержкой), как это решается? Будет ли передатчик ждать появления приемника и как он это поймет? Не могли бы направить в какую сторону мне рыть по правильному алгоритму обмена.
|
|
|
|
|
Feb 11 2016, 06:01
|
Группа: Участник
Сообщений: 6
Регистрация: 10-02-16
Пользователь №: 90 408
|
Цитата(Tarbal @ Feb 10 2016, 19:26) Эти проблемы решаются протоколом. Например. Одно устройство мастер и оно всем посылает сообщения с инструкциями, после чего переключается на прием, чтобы принять ответ.
Допустим устройство 2 должно переслать пакет устройству 3. Мастер устройство 1 посылает команду устройству 2. Устройство 2 после обработки команды переключается на передачу и передает требуемый пакет. Понятно. А вот если я записал в регистр передатчика 1 байт и продолжаю выполнять свою программу дальше, судя из описания на микроконтроллер передача начнется немедленно, а что если в тот момент когда я записывал на микроконтроллере приемнике еще даже питания нету или его код еще не дошел до строчки включения приемника uart , будет ли передатчик ждать подключения приемника или этот байт просто пропадет куда то? Как происходит эта синхронизация?
|
|
|
|
|
Feb 11 2016, 13:57
|
Группа: Участник
Сообщений: 6
Регистрация: 10-02-16
Пользователь №: 90 408
|
Цитата(theBMV @ Feb 11 2016, 11:22) Вы сейчас говорите о контроле потока. Существуют разные методы контроля: программные (например XON XOFF) и аппаратные (например CTS/RTS в RS-232), в которых сигналы готов/занят передаются по отдельным проводам. В случае простого полудуплексного RS-485 никто конечно же никого ждать не будет. Вот это я и хотел узнать... Спасибо
Сообщение отредактировал Артемko - Feb 11 2016, 13:58
|
|
|
|
|
Mar 16 2016, 14:19
|
Группа: Участник
Сообщений: 6
Регистрация: 10-02-16
Пользователь №: 90 408
|
Еще раз здравствуйте! Появился у меня тут новый вопрос. Вот к примеру есть приемник и передатчик UART, идет передача- всё нормально, передача заканчивается- и тут приемник должен освободить буфер для приема новых данных, мы копируем содержимое буфера в какую либо переменную и буфер пуст. На это ушло у нас допустим 10 тактов. А передатчик тем самым временем готовит новую партию данных сразу после отправки и допустим он эти данные закинул за 8 тактов, это получается буфер приемника еще не готов и произойдет рассинхронизация? Что делать в этом случае, добавлять задержку перед посылкой очередного байта?
|
|
|
|
|
Mar 17 2016, 05:35
|
Группа: Участник
Сообщений: 6
Регистрация: 10-02-16
Пользователь №: 90 408
|
Цитата(Baser @ Mar 16 2016, 17:51) Ждать не нужно. В приемнике УАРТа есть сдвиговый регистр, который принимает байт и есть регистр приемника, из которого вы читаете байт, когда он весь принят и переписан УАРТом в регистр приемника. Прерывание возникает когда принятый байт уже в регистре приемника и сдвиговый регистр пустой и готов принимать следующий байт. У вас есть время в один байт, чтобы прочесть принятый байт, иначе возникнет ошибка Overrun. В ПИКах кроме того есть фифо на прием, от одного до четырех байт. А вообще, вам лучше скачать с сайта Микрочипа примеры и в них поразбираться, сразу большая часть вопросов отпадет Спасибо, да байта для чтения вполне должно быть достаточно... А на сайте микрочипа на оффициальном?
|
|
|
|
|
Mar 17 2016, 07:12
|
Местный
Группа: Свой
Сообщений: 253
Регистрация: 28-01-10
Из: Минск
Пользователь №: 55 126
|
возьмите к примеру проект бутлоадера на уарт. там сразу и рабочий протокол будет. например мастер посылает пакет, заканчивающийся контрольной суммой ведомый отвечает <ок> если пакет принят. http://ww1.microchip.com/downloads/en/AppNotes/01310a.pdf
--------------------
Святло ў цемры заўседы свеціць
|
|
|
|
|
Mar 17 2016, 11:00
|
Просто Che
Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881
|
Цитата(Артемko @ Mar 17 2016, 07:35) А на сайте микрочипа на оффициальном? Конечно. Документацию лучше читать в оригинале, меньше ошибок Цитата(Siargy @ Mar 17 2016, 09:12) возьмите к примеру проект бутлоадера на уарт. там сразу и рабочий протокол будет. Думаю, для начинающего тяжеловато будет, там описание краткое и картинок нет Какое у вас семейство ПИКов? Вот для 8-битных можете посмотреть: Asynchronous Communications with the PICmicro® USARTТам и описание и код есть. з.ы. глянул код, он там на асме. Да, старая Апликуха. Ну хоть почитайте описание. И поищите что-нибудь новее. Хотя знание ассемблера никогда не повредит, хотя сейчас программировать нужно на Си, время ускоряется...
|
|
|
|
|
Mar 21 2016, 06:09
|
Группа: Участник
Сообщений: 6
Регистрация: 10-02-16
Пользователь №: 90 408
|
Цитата(Baser @ Mar 17 2016, 14:00) Конечно. Документацию лучше читать в оригинале, меньше ошибок Думаю, для начинающего тяжеловато будет, там описание краткое и картинок нет Какое у вас семейство ПИКов? Вот для 8-битных можете посмотреть: Asynchronous Communications with the PICmicro® USARTТам и описание и код есть. з.ы. глянул код, он там на асме. Да, старая Апликуха. Ну хоть почитайте описание. И поищите что-нибудь новее. Хотя знание ассемблера никогда не повредит, хотя сейчас программировать нужно на Си, время ускоряется... У меня пики 8 битные, pic18. Ассемблер я знаю, но давно им не пользовался и еще сейчас с ним разбираться не очень хочется, понадобится много времени на продумывание кода... Спасибо. в принципе мне бы алгоритм, а как написать я разберусь. Пишу всё дело в МИКРОС , там есть встроенная библиотека, но там тупо передача и прием, а мне нужно, чтоб еще адрес распознавался, 9 бит... Спасибо, читаю мануал, там вроде есть, как делается, буду пробывать.
|
|
|
|
|
Feb 9 2018, 09:30
|
Местный
Группа: Свой
Сообщений: 253
Регистрация: 28-01-10
Из: Минск
Пользователь №: 55 126
|
Цитата(ViKo @ Mar 21 2016, 09:20) Предлагаю банить на день за такое написание. к вашэму нещастью это не форум грамарнацы
--------------------
Святло ў цемры заўседы свеціць
|
|
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|