Перейти к содержанию

Артемko

Участник
  • Публикаций

    6
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. 3 PICа по RS485

    Цитата(Baser @ Mar 17 2016, 14:00) Конечно. Документацию лучше читать в оригинале, меньше ошибок Думаю, для начинающего тяжеловато будет, там описание краткое и картинок нет Какое у вас семейство ПИКов? Вот для 8-битных можете посмотреть: Asynchronous Communications with the PICmicro® USART Там и описание и код есть. з.ы. глянул код, он там на асме. Да, старая Апликуха. Ну хоть почитайте описание. И поищите что-нибудь новее. Хотя знание ассемблера никогда не повредит, хотя сейчас программировать нужно на Си, время ускоряется... У меня пики 8 битные, pic18. Ассемблер я знаю, но давно им не пользовался и еще сейчас с ним разбираться не очень хочется, понадобится много времени на продумывание кода... Спасибо. в принципе мне бы алгоритм, а как написать я разберусь. Пишу всё дело в МИКРОС , там есть встроенная библиотека, но там тупо передача и прием, а мне нужно, чтоб еще адрес распознавался, 9 бит... Спасибо, читаю мануал, там вроде есть, как делается, буду пробывать.
  2. 3 PICа по RS485

    Цитата(Baser @ Mar 16 2016, 17:51) Ждать не нужно. В приемнике УАРТа есть сдвиговый регистр, который принимает байт и есть регистр приемника, из которого вы читаете байт, когда он весь принят и переписан УАРТом в регистр приемника. Прерывание возникает когда принятый байт уже в регистре приемника и сдвиговый регистр пустой и готов принимать следующий байт. У вас есть время в один байт, чтобы прочесть принятый байт, иначе возникнет ошибка Overrun. В ПИКах кроме того есть фифо на прием, от одного до четырех байт. А вообще, вам лучше скачать с сайта Микрочипа примеры и в них поразбираться, сразу большая часть вопросов отпадет Спасибо, да байта для чтения вполне должно быть достаточно... А на сайте микрочипа на оффициальном?
  3. 3 PICа по RS485

    Еще раз здравствуйте! Появился у меня тут новый вопрос. Вот к примеру есть приемник и передатчик UART, идет передача- всё нормально, передача заканчивается- и тут приемник должен освободить буфер для приема новых данных, мы копируем содержимое буфера в какую либо переменную и буфер пуст. На это ушло у нас допустим 10 тактов. А передатчик тем самым временем готовит новую партию данных сразу после отправки и допустим он эти данные закинул за 8 тактов, это получается буфер приемника еще не готов и произойдет рассинхронизация? Что делать в этом случае, добавлять задержку перед посылкой очередного байта?
  4. 3 PICа по RS485

    Цитата(theBMV @ Feb 11 2016, 11:22) Вы сейчас говорите о контроле потока. Существуют разные методы контроля: программные (например XON XOFF) и аппаратные (например CTS/RTS в RS-232), в которых сигналы готов/занят передаются по отдельным проводам. В случае простого полудуплексного RS-485 никто конечно же никого ждать не будет. Вот это я и хотел узнать... Спасибо
  5. 3 PICа по RS485

    Цитата(Tarbal @ Feb 10 2016, 19:26) Эти проблемы решаются протоколом. Например. Одно устройство мастер и оно всем посылает сообщения с инструкциями, после чего переключается на прием, чтобы принять ответ. Допустим устройство 2 должно переслать пакет устройству 3. Мастер устройство 1 посылает команду устройству 2. Устройство 2 после обработки команды переключается на передачу и передает требуемый пакет. Понятно. А вот если я записал в регистр передатчика 1 байт и продолжаю выполнять свою программу дальше, судя из описания на микроконтроллер передача начнется немедленно, а что если в тот момент когда я записывал на микроконтроллере приемнике еще даже питания нету или его код еще не дошел до строчки включения приемника uart , будет ли передатчик ждать подключения приемника или этот байт просто пропадет куда то? Как происходит эта синхронизация?
  6. 3 PICа по RS485

    Всем здравствуйте! Недавно начал разбираться с МК , точнее с их передачей данных на другие МК, остановился на USART, такой вопрос: Мне нужно обмениваться данными между 3 МК, но мне не понятно, допустим 1 передает, а 2 других принимают, как передатчик понимает, что приемник готов принять данные? Вдруг случится так, что в регистр передатчика я уже записал какие либо данные, а другие МК еще не успели включиться на прием(МК включился с задержкой), как это решается? Будет ли передатчик ждать появления приемника и как он это поймет? Не могли бы направить в какую сторону мне рыть по правильному алгоритму обмена.