Артемko 0 10 февраля, 2016 Опубликовано 10 февраля, 2016 · Жалоба Всем здравствуйте! Недавно начал разбираться с МК , точнее с их передачей данных на другие МК, остановился на USART, такой вопрос: Мне нужно обмениваться данными между 3 МК, но мне не понятно, допустим 1 передает, а 2 других принимают, как передатчик понимает, что приемник готов принять данные? Вдруг случится так, что в регистр передатчика я уже записал какие либо данные, а другие МК еще не успели включиться на прием(МК включился с задержкой), как это решается? Будет ли передатчик ждать появления приемника и как он это поймет? Не могли бы направить в какую сторону мне рыть по правильному алгоритму обмена. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tarbal 4 10 февраля, 2016 Опубликовано 10 февраля, 2016 · Жалоба Эти проблемы решаются протоколом. Например. Одно устройство мастер и оно всем посылает сообщения с инструкциями, после чего переключается на прием, чтобы принять ответ. Допустим устройство 2 должно переслать пакет устройству 3. Мастер устройство 1 посылает команду устройству 2. Устройство 2 после обработки команды переключается на передачу и передает требуемый пакет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артемko 0 11 февраля, 2016 Опубликовано 11 февраля, 2016 · Жалоба Эти проблемы решаются протоколом. Например. Одно устройство мастер и оно всем посылает сообщения с инструкциями, после чего переключается на прием, чтобы принять ответ. Допустим устройство 2 должно переслать пакет устройству 3. Мастер устройство 1 посылает команду устройству 2. Устройство 2 после обработки команды переключается на передачу и передает требуемый пакет. Понятно. А вот если я записал в регистр передатчика 1 байт и продолжаю выполнять свою программу дальше, судя из описания на микроконтроллер передача начнется немедленно, а что если в тот момент когда я записывал на микроконтроллере приемнике еще даже питания нету или его код еще не дошел до строчки включения приемника uart , будет ли передатчик ждать подключения приемника или этот байт просто пропадет куда то? Как происходит эта синхронизация? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
theBMV 0 11 февраля, 2016 Опубликовано 11 февраля, 2016 · Жалоба Вы сейчас говорите о контроле потока. Существуют разные методы контроля: программные (например XON XOFF) и аппаратные (например CTS/RTS в RS-232), в которых сигналы готов/занят передаются по отдельным проводам. В случае простого полудуплексного RS-485 никто конечно же никого ждать не будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артемko 0 11 февраля, 2016 Опубликовано 11 февраля, 2016 (изменено) · Жалоба Вы сейчас говорите о контроле потока. Существуют разные методы контроля: программные (например XON XOFF) и аппаратные (например CTS/RTS в RS-232), в которых сигналы готов/занят передаются по отдельным проводам. В случае простого полудуплексного RS-485 никто конечно же никого ждать не будет. Вот это я и хотел узнать... Спасибо Изменено 11 февраля, 2016 пользователем Артемko Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артемko 0 16 марта, 2016 Опубликовано 16 марта, 2016 · Жалоба Еще раз здравствуйте! Появился у меня тут новый вопрос. Вот к примеру есть приемник и передатчик UART, идет передача- всё нормально, передача заканчивается- и тут приемник должен освободить буфер для приема новых данных, мы копируем содержимое буфера в какую либо переменную и буфер пуст. На это ушло у нас допустим 10 тактов. А передатчик тем самым временем готовит новую партию данных сразу после отправки и допустим он эти данные закинул за 8 тактов, это получается буфер приемника еще не готов и произойдет рассинхронизация? Что делать в этом случае, добавлять задержку перед посылкой очередного байта? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Baser 5 16 марта, 2016 Опубликовано 16 марта, 2016 · Жалоба Ждать не нужно. В приемнике УАРТа есть сдвиговый регистр, который принимает байт и есть регистр приемника, из которого вы читаете байт, когда он весь принят и переписан УАРТом в регистр приемника. Прерывание возникает когда принятый байт уже в регистре приемника и сдвиговый регистр пустой и готов принимать следующий байт. У вас есть время в один байт, чтобы прочесть принятый байт, иначе возникнет ошибка Overrun. В ПИКах кроме того есть фифо на прием, от одного до четырех байт. А вообще, вам лучше скачать с сайта Микрочипа примеры и в них поразбираться, сразу большая часть вопросов отпадет :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артемko 0 17 марта, 2016 Опубликовано 17 марта, 2016 · Жалоба Ждать не нужно. В приемнике УАРТа есть сдвиговый регистр, который принимает байт и есть регистр приемника, из которого вы читаете байт, когда он весь принят и переписан УАРТом в регистр приемника. Прерывание возникает когда принятый байт уже в регистре приемника и сдвиговый регистр пустой и готов принимать следующий байт. У вас есть время в один байт, чтобы прочесть принятый байт, иначе возникнет ошибка Overrun. В ПИКах кроме того есть фифо на прием, от одного до четырех байт. А вообще, вам лучше скачать с сайта Микрочипа примеры и в них поразбираться, сразу большая часть вопросов отпадет :) Спасибо, да байта для чтения вполне должно быть достаточно... А на сайте микрочипа на оффициальном? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
siargy 6 17 марта, 2016 Опубликовано 17 марта, 2016 · Жалоба возьмите к примеру проект бутлоадера на уарт. там сразу и рабочий протокол будет. например мастер посылает пакет, заканчивающийся контрольной суммой ведомый отвечает <ок> если пакет принят. http://ww1.microchip.com/downloads/en/AppNotes/01310a.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Baser 5 17 марта, 2016 Опубликовано 17 марта, 2016 · Жалоба А на сайте микрочипа на оффициальном? Конечно. Документацию лучше читать в оригинале, меньше ошибок :) возьмите к примеру проект бутлоадера на уарт. там сразу и рабочий протокол будет. Думаю, для начинающего тяжеловато будет, там описание краткое и картинок нет :rolleyes: Какое у вас семейство ПИКов? Вот для 8-битных можете посмотреть: Asynchronous Communications with the PICmicro® USART Там и описание и код есть. з.ы. глянул код, он там на асме. Да, старая Апликуха. Ну хоть почитайте описание. И поищите что-нибудь новее. Хотя знание ассемблера никогда не повредит, хотя сейчас программировать нужно на Си, время ускоряется... :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артемko 0 21 марта, 2016 Опубликовано 21 марта, 2016 · Жалоба Конечно. Документацию лучше читать в оригинале, меньше ошибок :) Думаю, для начинающего тяжеловато будет, там описание краткое и картинок нет :rolleyes: Какое у вас семейство ПИКов? Вот для 8-битных можете посмотреть: Asynchronous Communications with the PICmicro® USART Там и описание и код есть. з.ы. глянул код, он там на асме. Да, старая Апликуха. Ну хоть почитайте описание. И поищите что-нибудь новее. Хотя знание ассемблера никогда не повредит, хотя сейчас программировать нужно на Си, время ускоряется... :) У меня пики 8 битные, pic18. Ассемблер я знаю, но давно им не пользовался и еще сейчас с ним разбираться не очень хочется, понадобится много времени на продумывание кода... Спасибо. в принципе мне бы алгоритм, а как написать я разберусь. Пишу всё дело в МИКРОС , там есть встроенная библиотека, но там тупо передача и прием, а мне нужно, чтоб еще адрес распознавался, 9 бит... Спасибо, читаю мануал, там вроде есть, как делается, буду пробывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 21 марта, 2016 Опубликовано 21 марта, 2016 · Жалоба Откуда взялось это идиотское "пробЫвать" у каждого третьего? Вы, что, в школах не учились? Задрали уже! Предлагаю банить на день за такое написание. Включая модераторов (есть). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
siargy 6 9 февраля, 2018 Опубликовано 9 февраля, 2018 · Жалоба Предлагаю банить на день за такое написание. к вашэму нещастью это не форум грамарнацы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться