Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
10.09.2015, 16:46
|
#1
|
Почётный гражданин KAZUS.RU
Регистрация: 03.12.2004
Сообщений: 1,306
Сказал спасибо: 337
Сказали Спасибо 76 раз(а) в 33 сообщении(ях)
|
Неправильная работа Proton с RS485
Уважаемые форумчане. Прошу помочь разрешить мою "затыку". Мне необходимо связать два PIC16F877A контроллера по интерфейсу RS485. Программы работы я пишу на Бейсике. В случае PIC это Proton. Если соединить два МК по UART то все(и модель в Протеусе, и живая схема) работает. Но как только я начинаю переходить на RS485 все начинает работать непонятно. Вот и в прикрепленном примере вроде как все работает нормально. Но вот если в программе приемника в строках 47 и 50 отключить команды откл/вкл прерывания, то в результате прием прекращается. Почему? Вообще говоря эти команды как бы здесь и не нужны. Вживую, вначале прием идет но через несколько строк у дисплея пропадает синхронизация(если что у меня OLED дисплей). Или если в 33 строке включить команду очистки экрана, то результат будет похожий. Почему? Если в программе передатчика в строке 38 уменьшить время задержки менее 5 мс, то результат опять будет похожий. Почему? Здесь задержка как бы и не очень нужна.
И ещё. Время цикла работы приемника в несколько тысяч раз меньше времени цикла передатчика. Т.е. передатчик достаточно редко передает данные приемнику, чтобы внести сумятицу в его работу. А на вид получается, что он(приемник) начинает путать порядок принимаемых переменных.
|
|
|
|
10.09.2015, 19:34
|
#2
|
Почётный гражданин KAZUS.RU
Регистрация: 19.10.2004
Адрес: Нижний Новгород
Сообщений: 1,746
Сказал спасибо: 416
Сказали Спасибо 1,240 раз(а) в 551 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
vladh, не плоди темы в интернете. Достаточно на родном сайте. Протокол обмена RS485 не равен RS232 (UART). PIC16F877A аппаратного RS485 на борту не имеет. Схему, связи между контроллерами, вы не приводите. Протеусе не у всех установлен. Так о чем просите.
Ознакомтесь с этим, особенно внимательно часть 5, 8 и ссылки.
__________________
Решил посоветовать, да забыл что...
|
|
|
|
10.09.2015, 21:22
|
#3
|
Почётный гражданин KAZUS.RU
Регистрация: 03.12.2004
Сообщений: 1,306
Сказал спасибо: 337
Сказали Спасибо 76 раз(а) в 33 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
Сообщение от anatol378
|
vladh, не плоди темы в интернете. Достаточно на родном сайте.
|
anatol378 Если было бы достаточно я бы здесь не спрашивал.
Цитата:
|
Протокол обмена RS485 не равен RS232 (UART). PIC16F877A аппаратного RS485 на борту не имеет.
|
Я этого нигде в своем сообщении и не утверждаю. Я и не говорю об этом. С чего Вы это вообразили?
Цитата:
|
Схему, связи между контроллерами, вы не приводите. Протеус не у всех установлен. Так о чем просите.
|
Хорошо, я думаю RAR у Вас есть?
Цитата:
|
Ознакомьтесь с этим, особенно внимательно часть 5, 8 и ссылки.
|
За ссылку спасибо. Попробую воспользоваться.
|
|
|
|
10.09.2015, 21:42
|
#4
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,221 раз(а) в 1,319 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
Ну потому что писать надо не на каком то там бейсике и протоне.
Текст программы не смотрел - это неблагодарное дело, читать автоматически ассемблированный текст каким-то там бейсиком и искать где-то строчки 33, 47, 50. Они ж не помечены. Там хз вообще че такое.
И вообще, UART может работать с любым протоколом, лишь бы был старт-бит, стоп-бит и 8 (9) битов между ними, и работать он может на любой, в том числе и нестандартной скорости, в пределах допуска МК.
А RS485 - это всего лишь физический уровень, через который чего-то там передается. И передавать можно че угодно и как угодно, вообще без разницы, хоть щадом наперед, лишь бы битовая скорость была рассчитана на возможности "железного" трансмиттера.
Если приемник работает ТОЛЬКО в режиме приема, то не надо задействовать переключение направления передачи через линию RS485. Не переключай ее, оставь у передатчика на передачу, а у приемника - на прием.
Вероятно, где-то в программе приемника МК происходит какое-то передергивание управляющего направлением вывода и RO оказывается в воздухе, и на него идут помехи, воспринимаемые как ложный старт-бит.
Последний раз редактировалось NewWriter; 10.09.2015 в 22:01.
|
|
|
|
10.09.2015, 21:57
|
#5
|
Почётный гражданин KAZUS.RU
Регистрация: 19.10.2004
Адрес: Нижний Новгород
Сообщений: 1,746
Сказал спасибо: 416
Сказали Спасибо 1,240 раз(а) в 551 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
vladh, в передаче данных много тонкостей. В частности количество ошибок UART зависит от кварца (ноль при скорости умноженной на два в степени, есть в ДШ). Второе есть большое различие в протоколах программных, не только в физических. Если у вас передача в одну сторону, то физически переключите направление и "заглушите" вход приемника на передающей стороне. Если намереваетесь двухсторонний обмен - разберитесь как работает USART в PICе и как требуется управлять трансмиттером для изменения направления приема передачи. И что такое арбитр шины.
NewWriter - не лайся. Протон отличный бейсик для ПИКов и только для ПИКов. Простой, не заумный, прозрачный, легко читаемый. Не транслируемый на другие процы -это да. А текстушки как и в СИ прочитать легко в обычном текстовом редакторе - расширение *.bas
__________________
Решил посоветовать, да забыл что...
Последний раз редактировалось anatol378; 10.09.2015 в 22:04.
|
|
|
Сказали "Спасибо" anatol378
|
|
|
10.09.2015, 22:12
|
#6
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
anatol378, фуфло эти ваши барсики.
__________________
Осторожно , злой кот
|
|
|
|
10.09.2015, 22:17
|
#7
|
Почётный гражданин KAZUS.RU
Регистрация: 03.12.2004
Сообщений: 1,306
Сказал спасибо: 337
Сказали Спасибо 76 раз(а) в 33 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
Сообщение от NewWriter
|
Ну потому что писать надо не на каком то там бейсике и протоне. Текст программы не смотрел - это неблагодарное дело, читать автоматически ассемблированный текст каким-то там бейсиком и искать где-то строчки 33, 47, 50. Они ж не помечены. Там хз вообще че такое.
|
Это Вы о чем?
Цитата:
|
И вообще, UART может работать с любым протоколом, лишь бы был старт-бит, стоп-бит и 8 (9) битов между ними, и работать он может на любой, в том числе и нестандартной скорости, в пределах допуска МК.
А RS485 - это всего лишь физический уровень, через который чего-то там передается. И передавать можно че угодно и как угодно, вообще без разницы, хоть щадом наперед, лишь бы битовая скорость была рассчитана на возможности "железного" трансмиттера.
|
В основном с Вами здесь согласен.
Цитата:
|
Если приемник работает ТОЛЬКО в режиме приема, то не надо задействовать переключение направления передачи через линию RS485. Не переключай ее, оставь у передатчика на передачу, а у приемника - на прием.
Вероятно, где-то в программе приемника МК происходит какое-то передергивание управляющего направлением вывода и RO оказывается в воздухе, и на него идут помехи, воспринимаемые как ложный старт-бит.
|
Приведенный пример работает без вопросов! Разговор идет о том, что если сделать в нем описанные изменения, которые не должны влиять на прием и на передачу, а они влияют. Вот в этом вопрос. Почему это так влияет?
|
|
|
|
10.09.2015, 22:24
|
#8
|
Почётный гражданин KAZUS.RU
Регистрация: 03.12.2004
Сообщений: 1,306
Сказал спасибо: 337
Сказали Спасибо 76 раз(а) в 33 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
Сообщение от anatol378
|
NewWriter - не лайся. Протон отличный бейсик для ПИКов и только для ПИКов. Простой, не заумный, прозрачный, легко читаемый
|
Правильно, лаяться не стоит. Есть хороший Бейсик и для AVR(BascomAVR). И для решения задач выдвигаемых передо мной жизнью их вполне хватало.
|
|
|
|
10.09.2015, 22:30
|
#9
|
Почётный гражданин KAZUS.RU
Регистрация: 03.12.2004
Сообщений: 1,306
Сказал спасибо: 337
Сказали Спасибо 76 раз(а) в 33 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
Сообщение от anatol378
|
Если намереваетесь двухсторонний обмен - разберитесь как работает USART в PICе и как требуется управлять трансмиттером для изменения направления приема передачи.
|
Я в стартовом сообщении писал, что по обычному UART контроллеры обмениваются без проблем(двухсторонний обмен в моей основной программе). Но мне надо разнести контроллеры на 20 м и я подозреваю, что в этом случае можно будет наловить блох. Поэтому решил добавить RS485. И когда я начал пробовать с эти протоколом пошли чудеса. Я сделал простую(урезанную схему) и урезанный же код. И тогда стал обнаруживать разные чудеса.
Последний раз редактировалось vladh; 10.09.2015 в 22:44.
|
|
|
|
10.09.2015, 22:39
|
#10
|
Почётный гражданин KAZUS.RU
Регистрация: 03.12.2004
Сообщений: 1,306
Сказал спасибо: 337
Сказали Спасибо 76 раз(а) в 33 сообщении(ях)
|
Re: Неправильная работа Proton с RS485
Сообщение от dosikus
|
anatol378, фуфло эти ваши барсики.
|
Обижаешь, начальник . Хотя в данном случае у меня есть ощущение, что дело в компиляторе.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:43.
|
|