Перейти к содержанию
    

jcxz

Свой
  • Постов

    13 830
  • Зарегистрирован

  • Посещение

  • Победитель дней

    38

Весь контент jcxz


  1. Много. Может не будем болтать о том, о чём не имеем понятия и высасывать из пальца? И кстати - человек забивающий на корректную работу интерфейса, делающий тяп-ляп "авось заработает, а если не заработает - передёрните питание ещё раз", ещё говорит о "кустарщине".... Ясно с вами всё. Халтурщики неистребимы. Халтура! Не узнаёте себя?
  2. а чего её искать? В прошлом проекте как раз такой транспорт и разработали - электро-микроавтобус. И он уже несколько лет как прошёл гос.регистрацию и катается по дорогам в нескольких автопарках. Там все ID раздаются динамически, мастером. Включился девайс - и тут же получил свой ID. После прохождения энумерации. И обновление прошивок - в том числе через этот же протокол. Вероятность столковения двух самолётов воздухе - ещё на порядки меньше. Тем не менее зачем-то создаются сложные и дорогостоящие системы управления воздушным движением. Думаете - нафик они нужны? И что? Какое это имеет отношение к преднамеренно создаваемым коллизиям? И как это оправдывает ваше желание халтурить с CAN??? непонятно.... Вы бы тогда хотя-бы попробовали что-ль. И на практике бы убедились что это невозможно. Чем сто сообщений писать....
  3. Вроде как очевидно о какой задержке речь: Сейчас результат решения "отправится кадр сейчас или нет" определяется уже в конце передачи CAN-ID + пара_бит. Соответственно - начиная с этого момента отправляющая сторона уже может считать кадр отправленным. И например - начинать готовить новый кадр на передачу; или готовиться к приёму ответа (если таковой ожидается). С этого момента может освободить память, занимаемую отправляемым кадром и использовать её для других нужд. Если же арбитраж шёл бы по всему кадру, то такой момент времени наступал бы гораздо позже - после полного завершения отправки всего кадра. Если будет понятнее по аналогии с UART, то: Когда записывать следующий байт в TX-буфер UART: после получения флага "буфер передатчика пуст" или после "сдвиговый регистр передатчика пуст"? Стандартно - по первому флагу. Но можно действовать и по второму флагу, но тогда вероятность межсимвольных дырок в передаваемом потоке будет гораздо выше. Здесь (в CAN) то же самое. Только разница во временах значительно больше. Также и в CAN - если бы арбитраж шёл по всему кадру, то у отправителя было бы очень мало времени для подготовки нового кадра. (Если по каким-либо причинам невозможно готовить новый кадр при неотправленном предыдущем) А значит - вероятность межкадровых дырок в сплошном потоке кадров выросла бы. Т.е. - упала бы средняя скорость потока данных. Ок. Не нравится аналогия с дверью+пальцем, тогда аналогия со смартфоном: Вот предположим - разработчики вашего смартфона - ваши единомышленники. Причём все - всех компонентов смартфона. А значит - иногда у вас на экране выводится какой-то мусор, иногда из динамика валит шум, иногда звонить отказывается. Ну а на ваше недовольство его работой, разработчики также вам скажут: "ну какие проблемы? Чего тебе трудно ещё раз попробовать позвонить? или ещё раз перегрузить телефон? или батарейку вынуть/вставить - трудно что-ль? Телефон же не сгорел, чего же страшного?" "Не выпала монетка - кидай ещё раз". А если разработчики вашего авто такие же? Не побоитесь садиться в него?? PS: Но почему-то халтурщики и кое-какеры возмущаются, когда сталкиваются с чужой халтурой. Сами же халтурить считают нормальным. Почему так??....
  4. Да вы что! Обычная костылестроительная практика. Да и не исправляется ничего, а просто костылится.
  5. Вот мнение Всемирного Разума по вашему вопросу: Целых 5 пунктов!
  6. Типа "керосин осветительный " ? ..или "освЯтительный". Смотря о каких лампадах шла речь. Вообще вода, будучи очищенной до состояния дистиллированной, имеет довольно высокое сопротивление - порядка нескольких МОм/см. Лучший совет.
  7. Неправильно помните. Только на ID + несколько стартовых бит заголовка кадра. Если один девайс, то конечно - какие проблемы? А если их несколько, то чем больше и чем чаще орут - тем выше вероятность, что получите коллизии. А если при этом по шине ещё и штатный обмен идёт? Да ещё довольно интенсивно? То вероятность коллизий получите весьма высокую. Если вам дверью прищемило палец - и что? Через рандомное время ведь всё равно заживёт. Так и здесь. С таким подходом конечно - какая разница? А в нормально разработанном девайсе не должно быть коллизий, возникающих при штатной работе девайса в идеальных условиях. Если девайс генерит коллизии при штатной работе в идеальных условиях - такой девайс годится только в мусорку. Имхо. Всё зависит от задачи. Где-то и раз в час можно новые двеайсы обнаруживать, а где-то это слишком долго. Зачем выдумывать кривые варианты, если для такого есть нормальное решение? Без коллизий и прочего непотребства? Обсуждали ведь уже ранее... И здесь у Arlleex протокол вообще не про это.
  8. Плохой способ. Если количество источников данных, их размерность и периодичность посылки от каждого источника - задаются пользователем (конфигурятся) и варьируются в широких пределах. Тоже плохой способ. Забываете про коллизии. Будете получать мусор или ошибки CRC на шине при штатной работе без воздействия каких-либо помех. Смысл этой фразы неясен... Передачи различающихся данных от разных узлов CAN "на одном ID" чреваты неразрешаемыми коллизиями в данных. Только абсолютно идентичные данные так можно передавать.
  9. STM32 таймеры

    Таймеры XMC4xxx не имеют "худых концов". Любые мыслимые взаимодействия между ними возможны. Аппаратными сигналами между таймерами, конфигурируемыми самим программистом. Рекомендую.
  10. Варианта 2: или традиционный - сверху вниз; или современный - слева направо. Можно и так и так. Такое ощущение, что никто тут на форуме про Unicode даже не слышал.... Проснитесь! Весь мир уже давно в Unicode живёт. В моём 3D-принтере (пришедшем как раз с али) уже все иероглифы (да и буквы других языков) хранились в прошивке в Unicode (UTF-8). В самом обычном, "народном", STM32F103. И ничего - как-то справлялся. В 1914-м, в начале 1-й Мировой, тоже никто не думал, что конец династии Романовых совсем близок. И тоже наверняка были подобные прогнозёры. А минуло всего 3 года и....
  11. Ясно в целом. У вас получается несколько другая цель протокола. И соответственно - сделан упор на реализацию другой его части, чем у меня. Вот ещё вопрос: Раз цель - чтобы "сторонний разработчик не вдавался в детали", то почему нет компонента, выдающего прогнозируемую загрузку шины? Например: Настройщик (или кто там настраивает конфигурацию CAN-ID на шине) так как он не хочет "вдаваться в детали", то может выставить такой конфиг, при котором будет невозможна работа шины из-за недостаточной пропускной способности на данной скорости. У меня, в части настройки адресов (CAN-ID), с которых будет осуществляться периодическая отправка сообщений (телеметрии), конфигурационная программа показывает настройщику примерную прогнозируемую загрузку шины (конечно - для случая идеальной, безпомеховой связи). И выдаёт предупреждение, когда эта загрузка приближается к 100% (точнее 100% - заданный_порог_резерва). Имхо: При такой идеологии (расчёт на недумающий персонал) такой компонент был бы весьма полезен.
  12. Так если они сконфигурены на заводе не понятно как, то тогда вероятны конфликты по полям CAN_ID_RX_TOP_ROOT и CAN_ID_TX_TOP_ROOT (почему я про них и спрашивал). А значит в общем случае - не всегда будет возможно опросить. Уникальными вообще (глобально) они быть не могут, поскольку малоразрядные. Или возможно - я чего-то не понял из вашего протокола... (читал мельком - нету времени).
  13. Т.е. - CAN_ID_RX_TOP_ROOT и CAN_ID_TX_TOP_ROOT - эти 8-битные идентификаторы должны быть сконфигурены на узлах? А почему не Unicode? Вдруг экспортировать куда-нить захотите... Я у себя задаваемый пользователем идентификатор узла делал в UTF-8. PS: А вообще конечно - труд эпический! Всё это самостоятельно писали?
  14. Что является существенным недостатком UART-а STM-ов. Гораздо правильнее было бы в DMA отдавать слова данных дополненные флагами ошибок. Для каждого слова.
  15. Как это работает в STM-ах я прекрасно знаю. И говорю на основе собственного опыта и мануала. А судя по вашим постам - вы только теоретизируете. Я сказал следующее: Просто прочитать принятое слово и всё. Что именно здесь по вашему является "глупостью" и почему? И ни от чего не отказываюсь. Всё так и есть. А вот за понимание вами написанного - я ручаться не могу. Или лучше расскажите - как следует по вашему работать с флагами в STM? Если вы реально имеете какой -то опыт, а не теоретизируете впустую. Ну вот - сперва ляпнул глупость, а теперь начинает выкручиваться.
  16. Я писал для общего случая. PS: Совсем не обязательно, что у ТС-а при каждом fault-е одна и та же картина в регистрах причины fault. И вполне возможно (и судя по всему так оно и есть), что багов там несколько. И возможно они вызывают разные fault-ы. Вроде как очевидно, что раз мы знаем, что соответствующий флаг стоит (который нужно сбросить), то как мы об этом узнали (что он стоит)? Очевидно - что уже ранее прочитали регистр статуса. А значит теперь для его сброса нужно только чтение слова данных. Нестоящий флаг сбрасывать нельзя.
  17. В мануале написано то, что я сказал. Это вам надо "см. мануал".
  18. Будут какие-то аргументы?
  19. значит пришёл новый символ, для которого и установился заново этот флаг. А там наверняка написано, что флаги хранятся вместе с символами, на которых они установились. Даже в тех МК, в которых есть FIFO в UART глубиной более одного слова, все эти флаги - это просто дополнительные биты, хранимые вместе со словами принятых данных. Для каждого слова данных - свой комплект флагов. А флаги отображаемые в регистре флагов - это просто содержимое флагов самого верхнего слова FIFO. PS: Кстати - в нормальных, продуманных МК, можно считывать верхнее слово из FIFO сразу с флагами состояния. С одновременным удалением его из FIFO. Одним словом, одной операцией.
  20. "Решать в чистом виде" - видно ТС замахнулся на создание своего аналога J-Link. Работающего со всеми МК. Чтобы сэкономить 130 евро.
  21. Как правило в любом МК эти флаги сбрасываются обычным чтением регистра принятых данных. Никакие другие сбросы для них не нужны. Просто прочитать принятое слово и всё.
  22. Вроде бы вся информация и ответы "где баг" вам уже дана. Неужто до сих пор не исправили??
  23. Так лопата она тоже значительно дешевле экскаватора. Но чем рыть котлован - решать самому копателю. Похоже и "производство" у ТС того же уровня. Раз какие-то 130 евро на нём делают погоду.... Ну если "нет проблем" - зачем тогда тему создали? Подключайтесь и программируйте.
  24. Про ST-Link не знаю, но нормальные отладчики (J-Link) это умеют и без всяких утилит: https://jet-link.ru/shop/4-jetlink-superpro.html Только не уверен, что автономное программирование поддерживается для всех типов МК. Это уже сами уточните. И нам потом расскажите.
×
×
  • Создать...