Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/103: Рейтинг темы: голосов - 103, средняя оценка - 4.78
nicolas2008
308 / 268 / 93
Регистрация: 30.04.2009
Сообщений: 855
Завершенные тесты: 1
1

AVR, работа с RS-485

29.11.2010, 00:07. Просмотров 19165. Ответов 11

Нужно написать программу для МК AVR (какая модель будет пока не знаю), которая будет общаться с другим устройством через RS-485.
Как это сделать пока не имею понятия .
Раньше писал только простенькие програмки для AVR Atmel Mega 8a на асме.
Посоветуйте хорошие статьи или книги на эту тему, исходники программ (предпочтительно на Си)
Буду благодарен за помощь.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2010, 00:07
Ответы с готовыми решениями:

USB -> AVR -> RS-485
Доброго всем времени суток! Понадобилось мне создать такой вот преобразователь...

Не работает сеть rs 485 на avr
Уважаемые дамы и господа. Помогите с проблемой. Суть проблемы в следующем:...

AVR RS-485 FreeModBus. Timeout Error
Вроде немного разобрался с FriiModBus версии 1.5. Подключил все необходимые...

AVR работа с указателями
Помогите разобраться с кодом. Нужно считать строку из порта и отправить ее...

Работа с портами в AVR
Здравствуйте! Столкнулся с задачей и не знаю как реализовать, надеюсь на...

11
PB
Просто прогер
1283 / 1070 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
29.11.2010, 09:55 2
RS-485 очень похож на RS-232.
Вот пример работы с RS-232 http://www.decada.org.ru/project/lessons/bascom_avr/14/
1
pincet
1367 / 951 / 130
Регистрация: 23.07.2010
Сообщений: 5,156
13.12.2010, 17:40 3
RS-485 - это шина. Три тупых провода. Ей все равно как и чего гонять. Здесь ключевое слово - протокол. Кури Profibus или Modbus - стандартные протоколы
1
Voland_
1685 / 1030 / 97
Регистрация: 04.01.2010
Сообщений: 3,474
25.12.2010, 01:19 4
pincet, rs-485, это два провода, а не три.

nicolas2008, специфика RS-485 в том, что надо управлять драйвером шины (например AD485) в направлении передачи в/от контроллера. Когда контроллер что-то принимает, нужно переводить драйвер в режим приема данных. В момент передачи нужно переключать драйвер в режим передачи. Все остальное - также как указано в даташите AVR в работе с UART'ом.
0
deadlock
376 / 356 / 23
Регистрация: 14.12.2010
Сообщений: 1,265
25.12.2010, 01:36 5
Цитата Сообщение от PB Посмотреть сообщение
RS-485 очень похож на RS-232
интересно чем)))))

RS-485 - не описывает логику взаимодействия, а только физику подключения. Если то устройство, с которым будет общаться ваше поддерживает один из протоколов, описанных pincet'ом имеет смысл использовать его, если нет - то не проблема разработать протокол самому. Знакомый программирует AVR'ки с помощью AVR Studio и в принципе доволен.
0
nicolas2008
308 / 268 / 93
Регистрация: 30.04.2009
Сообщений: 855
Завершенные тесты: 1
25.12.2010, 01:37  [ТС] 6
2 Voland: Извините, мне это мало о чем говорит), изучать все это с самых азов нет времени, и лучше всего для понимания будут подробные примеры, и по возможности эмуляция всего этого дела на ПК.
0
Voland_
1685 / 1030 / 97
Регистрация: 04.01.2010
Сообщений: 3,474
26.12.2010, 11:23 7
Цитата Сообщение от nicolas2008 Посмотреть сообщение
Посоветуйте хорошие статьи или книги на эту тему, исходники программ (предпочтительно на Си)
Цитата Сообщение от nicolas2008 Посмотреть сообщение
изучать все это с самых азов нет времени, и лучше всего для понимания будут подробные примеры, и по возможности эмуляция всего этого дела на ПК.
Чего ж вы в итоге хотите? ) я вам посоветовал посмотреть даташит, в котором есть пример на Си и ASMе по работе с USORT. Разница между примерами и работой RS-485 заключается в том, что вы подключаете входы WE и /RE на какой-нибудь выход AVR и устанавливаете на нем единицу, когда вам нужно что-то передать. Сразу после передачи выставляется на нем ноль.

Что касается самого протокола обмена, вы ж ничего не сказали о самой задаче В самом простейшем случае алгоритм может быть таким:
на одном устройстве вы пишете программу, которая отправляет какой-нибудь пакет данных известной длины. На другой стороне пишется программа, принимающая известное количество байт. Когда она их получает, происходит обработка данных. Вот и все. Протокол ужасный, счас меня закидают помидорами, но я намеренно упростил решение, т.к. о требованиях к создаваемой линии связи ничего не сказано.

deadlock, слишком категорично, по поводу поддерживаемых протоколов, ИМХО. По RS-485 могут работать все устройства, работающие по принципу "запрос-ответ", либо вообще в одну сторону. А их очень много, в том числе протоколов. Задача "общения" между устройствами топикстартером не обозначена, поэтому необоснованно говорить о протоколах Может ему нужна в итоге сеть с множеством мастеров с построением карты приоритетов? .
0
pincet
1367 / 951 / 130
Регистрация: 23.07.2010
Сообщений: 5,156
26.12.2010, 15:10 8
[QUOTE=Voland_;1236321]pincet, rs-485, это два провода, а не три.

не уверен - пока не смог добиться вменяемой работы без линии GND
0
Voland_
1685 / 1030 / 97
Регистрация: 04.01.2010
Сообщений: 3,474
26.12.2010, 15:23 9
pincet, ??? очень интересно. у меня есть проект на FT232+ADM485 на одной стороне и ADM485+AVR - на другой, все прекрасно работает, с разным питанием. Возможно, у вас есть привязка к сетевому напряжению? В этом случае может появиться разность потенциалов между приемником/источником и RS485 действительно не заработает без земли. Мало того, без земли он вероятно может выгореть.
0
pincet
1367 / 951 / 130
Регистрация: 23.07.2010
Сообщений: 5,156
26.12.2010, 15:27 10
да хз, что там происходит. просто всегда лучше перебдеть и добавить честную землю
0
denver
1610 / 280 / 5
Регистрация: 19.09.2009
Сообщений: 701
26.12.2010, 16:35 11
Хватит оффтопить...
0
ValeryS
Модератор
7444 / 5636 / 716
Регистрация: 14.02.2011
Сообщений: 19,188
Завершенные тесты: 1
16.02.2011, 22:28 12
RS 323 RS 485 для контроллера без разницы програмируй последовательный порт скорость битность
старт/стоп
разница в шине (уровень и кол-во проводов)
RS 485 три провода 2-витая пара один экран(земля)
я использую микросхему драйвер sn75176
C уважением Валерий
0
16.02.2011, 22:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2011, 22:28

Работа с памятью AVR C
Добрый вечер. RTFM помогает, но как-то медленно. У меня есть таблица...

AVR Studio. Работа с байтами
Имеются старший и младший 8 битных байта. Их нужно преобразовать в один 16...

CodeVision AVR C работа с EEPROM
На железе не работает, в протеусе все ОК. Как только отключаю запись в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru