|
Несколько датчиков и UART, Варианты решений. |
|
|
|
 |
Ответов
|
Dec 24 2012, 18:10
|

Профессионал
    
Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339

|
Цитата RS232 - не поддерживает. Я не хочу вспоминать про 9 бит . Но хотелось уточнить модели датчиков туда сюда DS почитать
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Dec 24 2012, 18:59
|

Участник

Группа: Участник
Сообщений: 63
Регистрация: 29-01-09
Пользователь №: 44 159

|
Цитата(ILYAUL @ Dec 24 2012, 22:10)  Я не хочу вспоминать про 9 бит . Но хотелось уточнить модели датчиков туда сюда DS почитать Один датчик наш, питерский, optosense, (RS485) возможна поддержка адресации. http://www.optosense.ru/ru/welcome.htmlВторой датчик английский, Dynament, (RS232). http://www.dynament.com/ Цитата(novchok @ Dec 24 2012, 22:09)  Другой вариант, если один микроконтроллер обслуживает несколько датчиков, по аналоговой или цифровой линии, а наружу связан с RS485 интерфейсом. Тогда так, как описали выше, получили пакет, определили какой там датчик, выдали обратно информацию с данного датчика. Короче нужны подробности, как у Вас все это организовано. Ув. novchok, так я и хочу определиться КАК мне все организовать и каким образом организовать адресацию датчиков.
|
|
|
|
|
Dec 24 2012, 22:44
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(Белка12 @ Dec 24 2012, 20:59)  Ув. novchok, так я и хочу определиться КАК мне все организовать и каким образом организовать адресацию датчиков. На RS232 датчик должен быть один, если адресация не поддержана протоколом датчика. Алгоритм пожет быть такой: Код volatile uint8_t SensorRequestFlag; // таймер обеспечивает заданную частоту опроса - например 10 Гц void Timer_10Hz_Handler() { SensorRequestFlag=1; } #define RS_485_SENSOR_NUMBER 5 // для примера 5 датчиков void main() {
Init_periferals(); while (1) { if (SensorRequestFlag) { SensorRequestFlag=0;
// опрос датчика по RS485 RS232_DisableTx(); RS232_DisableRx();
for (unsigned char i=0; i<RS_485_SENSOR_NUMBER; i++) {
RS485_EnableTx(); RS485_DisableRx();
SendRequestTo_RS485( i ); // посылка запроса по RS485
// переключение на приём RS485_EnableRx(); RS485_DisableTx();
// ожидание ответа по RS485 заданное время WaitAnswerFromRS485(MAX_RS485_WAIT_TIME); }
// запрет RS485 RS485_DisableTx(); RS485_DisableRx();
// посылка запроса на RS232 RS232_EnableTx(); RS232_EnableRx();
SendRequestTo_RS232(); // посылка запроса по RS232
// ожидание ответа по RS232 заданное время WaitAnswerFromRS232(MAX_RS232_WAIT_TIME); RS232_DisableTx(); RS232_DisableRx(); } } } RS485 и RS232 могут подключать к одному UART-у МК, нужно поочерёдно отключать-включать приём передачу на одном из интерфейсов. Когда опрашивается 485-й, запрещён 232-й, и наоборот. Для RS485 иногда бывает важно как можно скорей освободить шину, так как датчик может сразу же начать отвечать на запрос. Для освобождения шины используется прерывание по завершению передачи последнего байта пакета, или (если мастер принимает сам себя) приём последнего байта своего же запроса.
|
|
|
|
|
Dec 25 2012, 04:05
|

старший лаборант
     
Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097

|
Цитата(_Артём_ @ Dec 25 2012, 00:44)  RS485 и RS232 могут подключать к одному UART-у МК, нужно поочерёдно отключать-включать приём передачу на одном из интерфейсов. Когда опрашивается 485-й, запрещён 232-й, и наоборот. Это не всегда нужно. Если заведомо известно, что одновременной передачи со стороны ведомых не будет (например, принципиально различные протоколы обмена), можно TXD пустить в оба канала, а RXD свести по логическому "И". Можно извратиться и по-другому, в случае, когда внешние устройства могут проявлять инициативу, а для одного из них установлен более высокий приоритет. Некоторые МК умеют переключать (remap) линии UART на другие физические порты, позволяя переключиться с одного драйвера на другой по прерыванию от изменения состояния порта (поймали старт-бит). Пробовал такое на STM8L - получается только в случае, если после переключения не нужно менять настройки UART (скорость и т.п.). В общем, время "свистоплясок" с переключением-перенастройкой должно быть пренебрежимо малым по сравнению с длительностью старт-бита. Тут есть ещё нюанс, зависящий от конкретной реализации UART - если старт-бит "ловится" не по уровню, а по спаду, ничего не получится.  Для небольших расстояний, в пределах одной платы, можно использовать прямо UART с простейшими драйверами с ОК (ОС) на TXD ведомых устройств.
--------------------
Китайская комплектация - европейское качество! ;)
|
|
|
|
Сообщений в этой теме
Белка12 Несколько датчиков и UART Dec 22 2012, 21:52 _Артём_ Цитата(Белка12 @ Dec 22 2012, 23:52) Можн... Dec 22 2012, 22:54 Белка12 Цитата(_Артём_ @ Dec 23 2012, 02:54) RS48... Dec 24 2012, 16:17  Hmm Белка12 Гм.. Например:
Запрос: 2 уникальных байт... Dec 24 2012, 17:17  novchok Цитата(Белка12 @ Dec 24 2012, 20:17) А мо... Dec 24 2012, 18:09  vvs157 Цитата(Белка12 @ Dec 24 2012, 22:59) так ... Dec 24 2012, 21:08  ILYAUL Цитата(Белка12 @ Dec 24 2012, 22:59) Один... Dec 25 2012, 04:14   Белка12 Цитата(ILYAUL @ Dec 25 2012, 08:14) Это ч... Dec 25 2012, 11:54  bookd Значит Вам нужно соединить два устройства с разным... Dec 25 2012, 06:30 chernenko Можно мультиплексор поставить. Делал так когда над... Dec 25 2012, 12:37 vovanse Вы пытаетесь два совершенно разных датчика с разны... Dec 25 2012, 12:48 ILYAUL ЦитатаНет, внутри датчика тоже есть контроллер Это... Dec 25 2012, 14:24 Белка12 Вот кусок описания протокола чтения optosense, как... Dec 25 2012, 14:54 ILYAUL Так на optosense он в общем доступе , а вот на Dyn... Dec 25 2012, 16:00 Белка12 А вот для Динамента. Dec 25 2012, 18:24 ILYAUL Мысли в слух:
Протоколы разные, , оба протокола им... Dec 25 2012, 20:11 pomo_al Optosens'у крайне не желательно слать что-то, ... Dec 26 2012, 01:49 Белка12 Цитата(pomo_al @ Dec 26 2012, 05:49) Неск... Dec 26 2012, 09:21 Белка12 Цитата(pomo_al @ Dec 26 2012, 05:49) Opto... Jan 23 2015, 22:28  Andrew Su Цитата(Белка12 @ Jan 24 2015, 00:28) Зада... Feb 12 2015, 19:36 vladec Кстати есть мультипротокольные драйвера, могущие р... Dec 26 2012, 06:31
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|