toweroff 1 22 декабря, 2015 Опубликовано 22 декабря, 2015 · Жалоба Ну зачем это все, а? Человеку простой ремапинг подходит, зачем все остальное городить? начнем с того, что ТС не описал максимальную скважность опросов. с ремапом все понятно, я пытаюсь описать прелесть другого подхода так-то оно, конечно, да - заремапить и делов вариант с мультиплексором позволит (опять же - если время последовательного опроса не против) описать функцию приема-отправки байтов унифицированно, с единственным дополнительным параметром - номером порта. Еще плюс - освобождение GPIO минус - место на плате. Опять же - ТС не указывает каких-то дополнительных данных, кроме как просто "мало места" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 22 декабря, 2015 Опубликовано 22 декабря, 2015 · Жалоба adnega, надо 9. чтобы к 8-ми приделать датчики, а по 1 гнать все данные дальше мультиплексор подойдет...но плату надо минимизировать А что за датчики? Какой протокол? Датчики шлют данные по свое инициативе или в ответ на запрос? Почему нельзя работать всем датчикам на одной шине? Есть ли адресация в датчиках/протоколе? Т.е. датчики напрямую к LVTTL-ногам контроллера подключены без какой либо защиты (раз места мало)? На каком расстоянии все это должно работать? Что насчет помех? Не у всех STM32 "нормальный" remap. Какое семейство рассматриваете? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 23 декабря, 2015 Опубликовано 23 декабря, 2015 · Жалоба Надо подбирать МК под задачу, а не пытаться втиснуть задачу в то, что знаете. На STM свет клином не сошёлся. Например: TM4C129DNCPDT - 8 встроенных UART-ов. Недостающий 9-й можно эмулировать программно. Или сделать программный 8-канальный UART на датчики, а для 9-го - использовать аппаратный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 23 декабря, 2015 Опубликовано 23 декабря, 2015 (изменено) · Жалоба ..а что это даст? У нас когда-то 8 контроллеров шаговиков на пиках висели параллельно на одной шине UART. Каждому контроллеру при помощи перемычек задавали уникальный идентификатор, все отлично работало (9 бит нужен для того, чтобы сигнализировать о посылке запроса с идентификатором, если он сброшен, работает только откликнувшийся контроллер). ТС явно делает что-то не так, если ему так дофига UART'ов нужно! то что на другом конце UART-ов имеет одинаковую прошивку Перепрошить и задать возможность установки идентификаторов (можно и на первичной стадии во флеш писать). P.S. А еще лучше вообще на нормальную CAN-шину пересесть, коли проблемы с уартами... Изменено 23 декабря, 2015 пользователем Эдди Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dima1060 0 23 декабря, 2015 Опубликовано 23 декабря, 2015 · Жалоба А что за датчики? Какой протокол? Датчики шлют данные по свое инициативе или в ответ на запрос? Почему нельзя работать всем датчикам на одной шине? Есть ли адресация в датчиках/протоколе? Т.е. датчики напрямую к LVTTL-ногам контроллера подключены без какой либо защиты (раз места мало)? На каком расстоянии все это должно работать? Что насчет помех? Не у всех STM32 "нормальный" remap. Какое семейство рассматриваете? Датчики (в конструкцию входит МК) шлют ответ по запросу. Датчики имеют одинаковую прошивку и конструкцию, поэтому на одной шине их нельзя различить. Кроме того потребуется увеличить скорость обмена, что не есть хорошо. Адресации никакой нет. Вы про какую защиту? Защитные диоды стоят, они места почти не занимают. Длина кабеля - два метра. Присутствуют высокочастотные помехи. Не могу их точно оценить, но первый образец прибора, говорят, не сбивался. Рассматриваю STM32F09x - у них есть 8 UART-ов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 23 декабря, 2015 Опубликовано 23 декабря, 2015 · Жалоба Датчики (в конструкцию входит МК) шлют ответ по запросу. Датчики имеют одинаковую прошивку и конструкцию, поэтому на одной шине их нельзя различить. Кроме того потребуется увеличить скорость обмена, что не есть хорошо. Адресации никакой нет. Вы про какую защиту? Защитные диоды стоят, они места почти не занимают. Длина кабеля - два метра. Присутствуют высокочастотные помехи. Не могу их точно оценить, но первый образец прибора, говорят, не сбивался. Рассматриваю STM32F09x - у них есть 8 UART-ов. Ну, если по очереди и никто больше сильно не мешает- то вполне можно и софтовые порты недостающие сделать, если ремапинг религия или объективные причины не позволяют использовать. Одно прерывание на бит с погрешностью 5% от длины бита (реакция на первый, стартовый, бит должна быть быстрее чем 5% от длины бита), сами считайте успеете или нет. У меня 16С84 с 4 МГц ядром успевал 9600 ловить с одного порта и в 8 других портов отсылать разные данные, а сейчас техника уже пошустрее :). Про многопортовые камни- обязательно сделайте в Кубе распиновку выбранного камня, посмотрите сколько портов одновременно Вы можете использовать без конфликта по пинам. Расшаривание ресурсов по ногам- это больной вопрос любых многопиновых микроконтроллеров, и Куб в данном случае- манна небесная. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 23 декабря, 2015 Опубликовано 23 декабря, 2015 · Жалоба Датчики (в конструкцию входит МК) шлют ответ по запросу. Датчики имеют одинаковую прошивку и конструкцию, поэтому на одной шине их нельзя различить. Кроме того потребуется увеличить скорость обмена, что не есть хорошо. Адресации никакой нет. Здесь нужен один-единственный UART + мультиплексор на Tx мелкоконтроллера (если действительно сами по себе датчики ничего в UART не пихают). Т.е. для работы с 16 датчиками понадобятся: 2 ноги UART (Rx/Tx) + 4 ноги для адресации мультиплексора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 23 декабря, 2015 Опубликовано 23 декабря, 2015 · Жалоба Датчики (в конструкцию входит МК) шлют ответ по запросу. Датчики имеют одинаковую прошивку и конструкцию, поэтому на одной шине их нельзя различить. Кроме того потребуется увеличить скорость обмена, что не есть хорошо. Адресации никакой нет. "Нельзя различить" != "не умеете различить". При желании и должном умении всё возможно. И без всяких мультиплексоров можно обойтись и всего одним UART-ом на вашем головном МК (раз ПО на датчики пишете Вы сами и вы сами можете его менять, что изначально вы не указали). Если структуру кабельных связей между датчиками и центром сбора на STM можно организовать в виде кольца, а не только звезды, то можно сделать простую сеть на одном UART. Потребуется только один UART в центре сбора и по одному UART на каждом датчике. Как: Подключаете TX центра к RX датчика1, TX датчика 1 - к RX датчика2, ..., TX датчика 8 - к RX центра. Получаете кольцо (всего два провода в кольце - данные и GND). Далее имеем сеть в виде кольца. Сеть работает в пакетном режиме. Старт обмена - по инициативе центра. Каждый датчик имеет уникальный номер (от 1 до 8 например). Протокол обмена: Центр отправляет (на свой TX) кадр заданного формата. В заголовке кадра указывает целевой адрес датчика (из диапазона 1...8). ПО датчиков принимает кадр со своего RX, смотрит целевой адрес в кадре, если этот кадр предназначен не ему, просто пересылает этот кадр без изменений на свой TX. Если кадр предназначен ему, заменяет содержимое поля запрос в кадре, на поле ответ. И отправляет на RX. Центр принимает всё на RX и анализирует ответы. Всё. Такой алгоритм позволяет кроме адресных запросов к датчикам, посылать широковещательные (например - широковещательная отправка уставок всем датчикам, и даже широковещательный запрос данных со всех датчиков (отсылается кадр в который каждый датчик вставляет свой слот ответа и тогда можно опрашивать датчики гораздо быстрее, все сразу за один запрос, чем колхозом с мультиплексорами)). И назначить уникальные номера датчикам - не проблема. Например: После включения питания все датчики находятся в безадресном режиме и принимают только команду установки энумерации. Центр периодически (или по вкл. питания) отправляет команду энумерации в сеть, установив в ней некий счётчик в значение==0. Каждый датчик, приняв команду энумерации, инкрементирует в ней этот счётчик и затем устанавливает свой адрес равным ему, затем отправляет этот кадр дальше по кольцу. После прохождения кадра энумерации всего кольца, все датчики получат уникальные номера. Данный алгоритм позволяет также горячее подключение новых датчиков в ходе работы. Здесь нужен один-единственный UART + мультиплексор на Tx мелкоконтроллера (если действительно сами по себе датчики ничего в UART не пихают). Т.е. для работы с 16 датчиками понадобятся: 2 ноги UART (Rx/Tx) + 4 ноги для адресации мультиплексора. Если датчики можно объединить в кольцо, то здесь нужен один-единственный UART и 0 мультиплексоров и ног GPIO. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 23 декабря, 2015 Опубликовано 23 декабря, 2015 · Жалоба Подключаете TX центра к RX датчика1, TX датчика 1 - к RX датчика2, ..., TX датчика 8 - к RX центра. Получаете кольцо (всего два провода в кольце - данные и GND). Далее имеем сеть в виде кольца. Сеть работает в пакетном режиме. Старт обмена - по инициативе центра. Каждый датчик имеет уникальный номер (от 1 до 8 например). угу. И имеем ситуацию: лифты во всем доме не работают, потому что перегорела лампочка подсветки кнопки вызова лифта на 7-м этаже 4-го подъезда. Аналогия, думаю, понятна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
psL 0 23 декабря, 2015 Опубликовано 23 декабря, 2015 · Жалоба Подключаете TX центра к RX датчика1, TX датчика 1 - к RX датчика2, ..., TX датчика 8 - к RX центра... ремонт елочных гирлянд - занятие кропотливое) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 23 декабря, 2015 Опубликовано 23 декабря, 2015 · Жалоба угу. И имеем ситуацию: лифты во всем доме не работают, потому что перегорела лампочка подсветки кнопки вызова лифта на 7-м этаже 4-го подъезда. Аналогия, думаю, понятна. Аналогия непонятна и совершенно не к месту. Естественно если нужно горячее включение, то необходимо предусмотреть некую аппаратную поддержку (замыкать RX на TX для откл. датчиков). Если какой-то из датчиков повис (повисло ПО), то естественно в нём есть сторожевик, который как минимум подаст RESET на него. Данный RESET можно использовать для замыкания TX-RX (если по каким-то причинам ПО никогда не стартует). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 199 23 декабря, 2015 Опубликовано 23 декабря, 2015 · Жалоба Все не правы, потому что автор сам не знает, что хочет, а тему создал как эмоцию на "по идее, 8 должны примерно одновременно работать". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 23 декабря, 2015 Опубликовано 23 декабря, 2015 · Жалоба Вы про какую защиту? Защитные диоды стоят, они места почти не занимают. Длина кабеля - два метра. Присутствуют высокочастотные помехи. Не могу их точно оценить, но первый образец прибора, говорят, не сбивался. "Делай сразу хорошо - плохо само получится". Меня лично настораживают уровни 3.3В "на улицу" на 2 метра на 8 датчиков в условиях помех. Что за защитные диоды стоят? Те, которые сливают помеху на землю и питание? Не боитесь, что питание подскочит и все спалит? Защита может быть гораздо больше по площади, чем мультиплексор. Как вы проверяете защиту? Подавали помеху в виде постоянного уровня, например, от -7 до +12В на входы? Любой монтажник перепутает провода и вся поделка в виде центрального блока и 8 датчиков рискует превратится в уголек. Ну, да, конечно же монтажник виноват, но икаться будет вашей маме (это оборот речи, а не конкретно чья-то мать). А при первой же возможности монтажники/проектировщики выберут другого поставщика/исполнителя. Нормальное решение: RS485 + адресация в датчиках. Если есть сложности с манипулированием перемычками в датчиках, то можно применить CAN. Кста, если есть потребность в быстрой реакции, т.е. работать по событию, а не по опросу, то за CAN поднимается вторая рука. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
spf 0 23 декабря, 2015 Опубликовано 23 декабря, 2015 · Жалоба На STM свет клином не сошёлся. Например: TM4C129DNCPDT - 8 встроенных UART-ов. Недостающий 9-й можно эмулировать программно. MB91F524FSBPMC (Fujitsu/Spansion)- до 12 UART MB91F527MSCPMC - до 20 UART Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 23 декабря, 2015 Опубликовано 23 декабря, 2015 · Жалоба Далее имеем сеть в виде кольца. Жесть! Самый простой вариант с одним-единственным уартом - это повесить все на одну шину. Нефиг тут кольцевать. Работоспособный и проверенный вариант. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться