AndreysRTS 0 26 сентября, 2007 Опубликовано 26 сентября, 2007 (изменено) · Жалоба предистория: я новичок, работаю с МК ~2 месяца, и не все еще попробовал и испытал. стоит задача обмена данными между контроллерами по шине RS-485, т.е. нужно использовать UART на МК. Какова должна быть концепция обмена? правила? Как сделать односторонний обмен написано в книге, а как чтобы был 1 главный(например) МК, который мог и посылать в определенный удаленный МК байты, и принимать тоже? и чтобы никто друг другу не мешал? :05: Изменено 26 сентября, 2007 пользователем Andrеys Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
muravei 3 26 сентября, 2007 Опубликовано 26 сентября, 2007 · Жалоба 1 главный(например) МК, который мог и посылать в определенный удаленный МК байты, и принимать тоже? и чтобы никто друг другу не мешал? :05: Посмотрите wake , например. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
КСПшник 0 27 сентября, 2007 Опубликовано 27 сентября, 2007 · Жалоба Посмотрите wake , например. ИМХО, да... С разработки протокола... Можно и что-нибудь проприетарное... С опросом, либо с гарантированными тайм-слотами и т.д.... Может быть следует немного литературу почитать по протоколам... Заодно и кругозор увеличите... Ну а если срочно - то wake годится... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Дени© 0 27 сентября, 2007 Опубликовано 27 сентября, 2007 · Жалоба Если не охото заморачиватся с протоколом или если необходимо опрашивать какие либо устройства работающие по собственному протоколу, то можно применить мультиплексор и демультиплексор. Хотя в данном случае я бы посоветовал сделать выбор устройства именно по протоколу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreysRTS 0 29 октября, 2007 Опубликовано 29 октября, 2007 · Жалоба Решил делать с опросом, главный МК выдает байт-адрес, затем байт-data. Приняли все, а укого адрес совпал - работает с принятым байтом-data. Этот байт в себе содержит либо указания к работе ус-ва, либо вопрос "что передать?", на что ус-во всегда отвечает, в ответе либо "ничего не надо" либо "вам data!", и всем хорошо) Передавать от ус-ва А к ус-ву Б получлось, но вот чтоб после этого Б вернуло что-то А такого еще не было В схеме, с которой работаю, для обеспечения связи стоят ADM1485, они превращают уровни атмеги в уровни RS-485, передача возможно только в одном направлении в одно и тоже время, т.е. в ус-вах постоянно нужно переключать эти ADM то на прием, то на передачу, так вот я переключаю, но не работает что-то совсем, может переключение происходит слишком медленно??? и нужно выдерживать какое-то время? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nss__ 0 29 октября, 2007 Опубликовано 29 октября, 2007 · Жалоба Решил делать с опросом, главный МК выдает байт-адрес, затем байт-data. Приняли все, а укого адрес совпал - работает с принятым байтом-data. Этот байт в себе содержит либо указания к работе ус-ва, либо вопрос "что передать?", на что ус-во всегда отвечает, в ответе либо "ничего не надо" либо "вам data!", и всем хорошо) Передавать от ус-ва А к ус-ву Б получлось, но вот чтоб после этого Б вернуло что-то А такого еще не было В схеме, с которой работаю, для обеспечения связи стоят ADM1485, они превращают уровни атмеги в уровни RS-485, передача возможно только в одном направлении в одно и тоже время, т.е. в ус-вах постоянно нужно переключать эти ADM то на прием, то на передачу, так вот я переключаю, но не работает что-то совсем, может переключение происходит слишком медленно??? и нужно выдерживать какое-то время? У вас одномастерная архитектура. Соответственно в режиме простоя мастер должен находится в режиме передачи, а слейвы в режиме приема. Мастер передал пакет и переключился в режим приема. Вот сдесь первый нюанс: вы уверены в том что вы переключили мастер в режим приема после отправки всего пакета? (собственно это относится и к слайвам) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreysRTS 0 30 октября, 2007 Опубликовано 30 октября, 2007 (изменено) · Жалоба да, мастер после отправки переключен на прием, подан "0" на ADM, что значит встать на прием, бит RXEN в "1", TXEN в "0", смотрю осциллографом, на ногу PD2/RXD конттроллера приходит сигнал, но в прерывание по приему заходить никто не собирается.. ставил там для проверки флажок. очень странно... а слайв после приема отлично работает, переключается на передачу и шлет (в данный момент байт за байтом, это для отладки) число, которое я вижу на ноге контроллера.. Причина была найдена! Спасибо за совет и советы, думаю, дальше я сам. А дело, как всегда, было в одной строчке, я на что только не грешил, оказалось в главном ус-ве (мастере) не было _SEI();, в прерывания мы поэтому не ходили, день ушел на перепроверку, но все равно УРА! :laugh: Изменено 30 октября, 2007 пользователем Andrеys Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndryG 0 31 октября, 2007 Опубликовано 31 октября, 2007 · Жалоба Позвольте разбавить тему немного ... упоминался здесь WAKE ... интересно узнать сколько места занимает его реализация в контроллере? Пробовал прицепить его к Tiny (своя реализация ... исходники на страничке протокола не компилил - юзаю CV)... получается, что только протоколом и заниматься ей -- маловато памяти (для кода) остается :-( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 5 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба AndryG По ссылке на протокол wake, которая была дана выше есть иходники на Си для AVR. Посмотрите. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndryG 0 8 ноября, 2007 Опубликовано 8 ноября, 2007 · Жалоба Я не использовал никогда компилятора того (кажется там ИАР) ... вот и прошу общественность, если не трудно, поделится знаниями. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreysRTS 0 14 ноября, 2007 Опубликовано 14 ноября, 2007 · Жалоба появилась какая-то празитная вещь :) , природу которой я не знаю, 2 устройства в любой момент времени могут обмениваться информацией(все также по RS-485 через ADMы1485), но раз из ~20 приходит информация некорректно, мусор какой-то, то все единицы, то число 2 в любой степени :mellow: :dry: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 14 ноября, 2007 Опубликовано 14 ноября, 2007 · Жалоба появилась какая-то празитная вещь :) , природу которой я не знаю, 2 устройства в любой момент времени могут обмениваться информацией(все также по RS-485 через ADMы1485), но раз из ~20 приходит информация некорректно, мусор какой-то, то все единицы, то число 2 в любой степени :mellow: :dry: А расскажите про задержки от момента внезапно появившегося желания передать : разворот драйвера RS485 на передачу => начало передачи => передача => окончание передачи => разворот драйвера на прием. Как оно работает то? Принимает ли приемник, когда передатчик передает? Передает ли передатчик, когда приемник принимает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
msalov 0 15 ноября, 2007 Опубликовано 15 ноября, 2007 · Жалоба А расскажите про задержки от момента внезапно появившегося желания передать : разворот драйвера RS485 на передачу => начало передачи => передача => окончание передачи => разворот драйвера на прием. Как оно работает то? Принимает ли приемник, когда передатчик передает? Передает ли передатчик, когда приемник принимает? Про задержки написано в спецификации на драйвер. По задумке RS485 - шина полудуплексная, то есть данные могут передаваться ТОЛЬКО В ОДНОМ НАПРАВЛЕНИИ, причём направление выбирается подтягиванием ног драйвера nRE и DE, если их обьеденить - то получим переключатель приём/передача Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreysRTS 0 19 ноября, 2007 Опубликовано 19 ноября, 2007 · Жалоба А расскажите про задержки от момента внезапно появившегося желания передать : разворот драйвера RS485 на передачу => начало передачи => передача => окончание передачи => разворот драйвера на прием. Как оно работает то? Принимает ли приемник, когда передатчик передает? Передает ли передатчик, когда приемник принимает? Да нет, алгоритм мой рабочий! опыта-то мало, откуда ж первопроходцу знать что оба ус-ва одновременно на приеме стоять не должны и будет болтанка??(для отладки ставил на примем их) подсказал человек - запаял по резистору к линии, на землю и на питание по 10К и все дела Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
PSP 0 21 ноября, 2007 Опубликовано 21 ноября, 2007 · Жалоба По поводу использования резисторной растяжки линии есть разные мнения, но мне представляется правильным, что-бы все работало и без нее. Для этого нужно обеспечить перед началом передачи пакета активное состояние передатчика на время не менее 1-го байта, что-бы приемник, при необходимости, завершил прием "мусорного" байта, а на уровне протокола обеспечить отфильтровывание "мусора" используя признаки начала/конца пакета и контрольные суммы. Дело в том, что когда линия растянута 10 кОм, то ее помехоустойчивость значительно ниже, чем в случае работы мощного драйвера. Т.е. в условиях внешних помех все равно будет "мусор" на входе и с ним придется бороться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться