Решил сделать краткое описание интерфейса rs485.
1) У микроконтроллеров выходы имеют TTL уровни, а rs485 работает по дифференциальной паре. Следовательно нужен преобразователь уровней, например adm485
Обозначение выводов преобразователя rs485
- RO — Receiver Output — Выход приемника.
- RE/ — Receiver Output Enable — Разрешение выхода приемника
- DE — Driver Output Enable — Разрешение выходов передатчика.
- DI — Driver Input — Вход передатчика.
- A — Noninverting Receiver Input and Driver Output — Неинвертирующий вход/выход.
- B — Inverting Receiver Input and Driver Output — Инвертирующий вход/выход.
2) Интерфейс rs485 полудуплексный, т.е. может работать на передачу данных только в одну сторону. Для переключения направления используют выводы DE и RE соединённые параллельно и подключенные к выводу микроконтроллера, который управляет направлением передачи.
3) Для построения сети по rs485 используется топология «шина».
Здравствуйте. Спасибо за статьи. На примерах становиться понятнее, разбираюсь. Собираю конструкцию (сеть устройств + ПК):
В планах создать как пользовательское приложение для ПК, так и проишивку для tiny2313. По моим соображениям ПК рассылает всем сообщения (запрос конкретному микроконтроллеру+сама команда) — кто подхватит, тот исполняет и после отправляет сообщение “Готово”.
Есть вопросы:
Нужен ли терминальный резистор, если на концах кабеля с одной стороны ПК с другой последний микроконтроллер (устройство). Нигде не смог найти реальной такой сети (возможно фотки)… Также ”Земля” едина для передатчика и приемника и нужна ли она вообще?
Про землю не могу сказать, я по железу больше теоретик :)
По поводу терминальных резисторов — на малых скоростях и расстояних будет и без них работатать. Лучший способ понять надо ли их ставить, сгененрировать прямоугольный сигнал и посмотреть на другом конце осциллогорафом форму сигнала. Сравнить с резистором и без. Выбрать лучший вариант.
И номинал резистора зависит от волнового сопративления кабеля.
У Вас есть какие-нибудь статьи по AVR — как он прнимает сиганл (запрос?)
тут http://mainloop.ru/avr-atmega/avr-usart-setting.html
и тут http://mainloop.ru/avr-atmega/avr-uart-fifo-irq.html
Спасибо.
+ Ещё вопрос (хоть как и от теоретика): каими параметрами должен обладать преобразователь, например USB к RS485 — нужен ли ему отдельное питание?
И как с компьютера послать (указать), что сейчас будет послана команда? Работа с RE и DE?
Питание внешнее не нужно.
Большинство преобразователей автоматически переключаются. Т.е. по умолчанию они в режиме приема, но как только в буфере передачи что-то появилось, они переключаются на передачу, как только буфер пуст — переключаются обратно на прием.
Спасибо!