Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 28.08.2018, 18:20  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,621
Сказал спасибо: 115
Сказали Спасибо 810 раз(а) в 587 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Односторонний сбор данных с 12 МК

Сообщение от sat_art Посмотреть сообщение
Их 12 шт. Де RXов набраться?
Не надо 12 штук! Даже если топология не позволяет внутри силового шкафа 12МК заменить на один, то можно объединить их там по RS485, а наружу с промежуточного МК выводить уже оптику.
Ну и я уже говорил, что это еще проще решается, если взять готовую опторазвязку на RS485.
Сообщение от makakus Посмотреть сообщение
Вот и распиши алгоритм для 12-ти софтварных юартов работающих одновременно, с любым сдвигом битовых интервалов.
Я на абдуринщика похож, чтобы уарт софтварно реализовывать? Аппаратный, ясен пень. И один, а не 12. Ну, в принципе, можно взять камень с четырьмя и более аппаратными уартами, тогда помимо одного для соединения с компьютером будет еще три и более на соединение с чем угодно.
Реклама:
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Непрочитано 28.08.2018, 18:37  
SergeyNT_
Гражданин KAZUS.RU
 
Аватар для SergeyNT_
 
Регистрация: 08.07.2010
Адрес: 5-е кольцо МКАД
Сообщений: 501
Сказал спасибо: 880
Сказали Спасибо 361 раз(а) в 161 сообщении(ях)
SergeyNT_ на пути к лучшему
По умолчанию Re: Односторонний сбор данных с 12 МК

Делали такое, давно, на лабораторной установке было 30кВ. Для безопасности персонала передавали телеметрию с установки в пультовую. Установка была в паре метрах. Применили обычные инфракрасники типа TFDU4101, скорость была 57600, но при любых пробоях/коронных разрядах падала связь, тогда в качестве световодов приколхозили Toslink кабеля от SPDIF.
Предлагаю если не хватает скорости - сделать хаб например на TFDU4101. И организовать с остальными точк- точка на оптиках.
__________________
Все микросхемы работают на волшебном дыме... Если дым вышел из микросхемы, она перестаёт работать. И это уже навсегда.

Последний раз редактировалось SergeyNT_; 28.08.2018 в 18:43.
SergeyNT_ вне форума  
Непрочитано 28.08.2018, 18:53  
ForcePoint
Почётный гражданин KAZUS.RU
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 6,888
Сказал спасибо: 2,959
Сказали Спасибо 3,144 раз(а) в 2,133 сообщении(ях)
ForcePoint на пути к лучшему
По умолчанию Re: Односторонний сбор данных с 12 МК

Сообщение от eddy Посмотреть сообщение
Не надо 12 штук!
Ну это ТСу решать, по своим резонам.
Сообщение от eddy Посмотреть сообщение
Я на абдуринщика похож, чтобы уарт софтварно реализовывать?
И если остаётся топология 12 -› 1, то без программных приемников обойтись трудно и безотносительно к дуринам. Или нет?
__________________
Экзорцист 40-го уровня.
ForcePoint вне форума  
Непрочитано 28.08.2018, 19:57  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,621
Сказал спасибо: 115
Сказали Спасибо 810 раз(а) в 587 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Односторонний сбор данных с 12 МК

Сообщение от ForcePoint Посмотреть сообщение
Или нет?
Нет, если организовать полудуплекс.
И еще раз напомню, что незачем выводить по одному оптоволокну от каждой платы, когда их в щите можно на 485 навешать, а небольшой выходной модуль будет организовывать взаимодействие с основным контроллером по оптике.
И это будет дешевле и проще.
__________________
Союз Советских Социалистических Округов Северной Америки
eddy вне форума  
Непрочитано 28.08.2018, 20:49  
tjapljap
Прохожий
 
Регистрация: 28.06.2005
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
tjapljap на пути к лучшему
По умолчанию Re: Односторонний сбор данных с 12 МК

Если железо всё есть то:
*На передатчиках можно подрыгать пока ногами и делетить.
*На стороне приёмника в прерывании (~1 mS) запускать подпрогу обработки протокола для каждой ноги ( 12 раз для разных ног) и складывать результаты.
*В основном цикле выкидывать на ПК.
Думаю всё успеет.
tjapljap вне форума  
Непрочитано 28.08.2018, 21:52  
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 499
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Односторонний сбор данных с 12 МК

Поддержу tjapljap. На пальцах (разрисовывать диаграммы лень))).

1 бит передаем за х мс, 4 байта температуры + 8 байт счетчиков за 96*х мс, для обозначения начала пакета используем преамбулу, скажем, длиной в 6*х мс. Итого пакет передается за 102*х мс, максимальное время, которое можем отвести на передачу одного бита 19,6 мс. Возьмем 18 мс.
Оставшиеся 64 мс используем для передачи сигнала высокого уровня 32 мс (чтобы обозначить окончание последнего бита) и для паузы в 32 мс между пакетами


Кодируем передаваемый сигнал, например, таким образом (картинка из даташита на кодер keeloq):

Преамбула - 54мс высокий уровень, 54мс низкий уровень. Эту последовательность приемник считает началом пакета, сбрасывая счетчик принятых бит, прекращая уже начатый прием пакета, если "внутри" него обнаружилась эта последовательность.

Каждый бит - сигнал высокого уровня, сменяющийся сигналом низкого уровня.
6 мс высокий 12 мс низкий - единица, 12мс высокий 6 мс низкий - ноль (можно и наоборот, разумеется).



Te у нас получается 6 мс.

Как организуется прием: 1 раз в 2 миллисекунды по прерыванию считываем состояние порта и для каждой ножки прямо в прерывании исполняем простой конечный автомат, который сравнивает текущее состояние линии с предыдущим - если для данного канала не выставлен флаг наличия принятого пакета, иначе линия просто не обрабатывается, пока основная программа не снимет данный флаг.

При неизменном состоянии инкрементируется соответствующий счетчик (всего 12*2 счетчиков - для каждой линии текущая длительность сигнала высокого уровня, и текущая длительность сигнала низкого уровня), и проверяется полученное значение на выход из заданных пределов.

При изменении уровня с низкого на высокий:
- если идет прием пакета - просто сравнивает отсчитанные длительности низкого и высокого уровней, определяя по тому, что оказалось больше, ноль или единицу мы приняли, и задвигает полученный бит в приемный буфер для данного канала, инкрементируя счетчик принятых бит для этого канала, если это был последний бит последовательности - выставляет флаг наличия принятого пакета.
- если прием пакета еще не начат, то проверяется длительность низкого уровня на соответствие преамбуле, если она "в рамках" - начинаем пакет.

При прерывании раз в 2 мс у хмеги на 32 МГц вагон времени, чтоб все это выполнить, и еще оставить время для всего остального.

Основная программа следит за флагами, при обнаружении установленного флага забирает принятые в канале данные из приемного буфера в свой и сбрасывает флаг. Опять же раз в 2 секунды выплевывает свой буфер наружу, можно с использованием ДМА.

При желании можно уменьшить длительность пакета до 1,5с, уменьшив все наши тайминги, включая период прерываний приемника соответственно, и после передачи пакета поставить 0,5с паузу. Чтоб в приемнике гарантированно не пропускать пакеты из-за того, что основная программа "не успела" забрать принятый в одном из каналов пакет.

Но программирование всё должно быть достаточно аккуратным, тогда и без этого все будет работать правильно.

За счет того, что длительность Te выбрана с запасом, мы не будем терять данные при довольно приличном разбеге частот приемника и передатчика, и всегда будем отличать 0 от 1.

У основной программы достаточно времени, чтобы подсчитывать время, прошедшее с момента последнего выставления флага для каждого канала для определения, что в том или канале пропала связь, и сигнализации об этом "наружу".

Как-то так. Все решаемо, в общем, но, если честно, это просто преодоление самолично сделанного геморроя. Ну почему не двусторонняя связь с блоками? Дороже? Для единичной установки удорожание совершенно не критичное.

Последний раз редактировалось AR_Favorit; 28.08.2018 в 22:16.
AR_Favorit вне форума  
Непрочитано 28.08.2018, 22:19  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,981
Сказал спасибо: 0
Сказали Спасибо 4,941 раз(а) в 2,370 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: Односторонний сбор данных с 12 МК

Сообщение от makakus Посмотреть сообщение
распиши алгоритм для 12-ти софтварных юартов работающих одновременно
по аппноту атмел можно сделать для небольших скоростей - в сети видел реальный вариант 1200бод на 8портов. только там божественный асм, никакого богомерзкого С
Сообщение от eddy Посмотреть сообщение
их в щите можно на 485 навешать
а подумать? там 3кВ и не факт, что нет разницы потенциалов промеж точками измерений или наводок
jump вне форума  
Непрочитано 28.08.2018, 22:43  
Godzilla82
Почётный гражданин KAZUS.RU
 
Регистрация: 29.10.2006
Сообщений: 1,440
Сказал спасибо: 97
Сказали Спасибо 315 раз(а) в 231 сообщении(ях)
Godzilla82 на пути к лучшему
Сообщение Re: Односторонний сбор данных с 12 МК

Я бы сделал выдачу результата по запросу.
При скорости 115200:
Запрос:
3 байта (код + CRC16) = 300 мкс (округлённо)
Ответ:
32 байта (должно хватить с большим запасом на все) = 2,8 мс

Итого на одно устройство уйдет 3,1 мс.
На 12 устройств - соответственно около 40 мс.

Можно опрашивать все 12 устройств 25 раз в секунду.
Не говоря уже, что цифры взяты с двукратным запасом.
Godzilla82 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Книги (не радиотехнической тематики) Mike79 Делимся опытом 4264 16.08.2023 23:52
Ускорить компьютер 7Fantomas7 Ремонт оргтехники 111 08.08.2018 05:27
Поток данных 44Мбит/сек.Нужно снять лог пару секунд. Как? Zemlyanov Микроконтроллеры, АЦП, память и т.д 4 15.11.2010 23:46
Поможите пожалуйста с литературой на тему сбор данных. ArtUrl1986 Микроконтроллеры, АЦП, память и т.д 0 05.05.2009 02:27


Часовой пояс GMT +4, время: 15:19.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot