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

razrab83

Участник
  • Постов

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

  • Посещение

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

    3

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


  1. Мы говорим Ленин, Подразумеваем — Партия. Мы говорим Партия, Подразумеваем — Ленин. )) Стандарт россетей - это не стандрат рф. ИМХО. из этого стандарта, п 1.3, всего лишь... Вот интересно.... моя квартира, в которой я купил эл. счетчик и по нему ведётся коммерческий учёт эл. энергии (которую, от части, транспортируют дочерние компании россетей) - так вот моя квартира является объектом россетей? Думаю что нет. Т.е. конечные потребители (садовые участки, гаражи, квартиры) - это всё объекты россетей? А так-то хорошая попытка привести единый стандарт для РФ. Может получиться стандарт-дефакто, что-то типа MODBUS. А то на сегодняшний день в приборах учета зоопарк. За последний год требования к ПУ не раз поменяли. ps Вызывает вопрос "Приложение З (обязательное) Процесс тестирования ПУ на соответствие спецификации". На каком стенде? Какую программу? Я же говорю - внутренний стандарт какого-то предприятия. Мы у себя пишем ТУ, И2, ПИМ.... так обязательный перечень вспомогательных программ, стендов, приборов, с ссылками на РЭ по этим приборам/программам. А тут ... Говорим Ленин программа, подразумеваем Партия сертификационная утилита __ИМЯ_УТИЛИТЫ_ВЕРСИЯ__.
  2. Там же на титульной странице всё написано - "Стандарт организации". Это некий стандарт некой организации. Применяют ли они этот стандарт к своим серийным счетчикам, или к счетчикам выпускаемым в РФ - это вопрос к ПАО "Россети". Это не государственный стандарт РФ, т.е. другие производители не обязаны его придерживаться. Вы можете присоединиться к этому стандарту Россети, чем они пишут
  3. Ага, логика рушиться, .... ))) в английской версии, там же M - меню Move, g - меню Align, h - меню Change, и т.д. .... все "логично". ))) ps Кто-то пользуется в АД этими "аккордами"?
  4. пробел в путь мс вставили ещё в 95-ом (Program Files), тогда же и домашняя папка появилась с кириллицей..... в 90-х пробелы и кириллица - это траблы.... ПО писалось опираясь на то, что в путях не бывает кириллицы, проги не могли пути длиньше 8 символов, не могли год старше 2000, не могли компрот выше COM4, .... Но прогеры пользовательского ПО потихоньку переписали научили свои проги справляться с этими детскими болезнями. (IAR WB не в счет, он застрял в 90-х). Но сейчас 2020 - 15 лет прошло.... Однако кто-то ещё не переболел ветрянкой, а кто-то делает костыли (скрипт на переделку имён в транслитерацию!!! ТРАНСЛИТЕРАЦИЯ в 2020 - КАРЛ!!! Ужас!) Только что поставил *ubuntu последнюю - *бунта в /home/user/ наделала дефолтные папки кириллицей и с пробелами ("Рабочий стол", "Загрузки", "Шаблоны", ...). Даже линуксоиды кириллицу осилили. Чем вам не угодила кириллица в путях? Файл winamp.exe будет хуже музыку приогрывать, если экзешник в папке с кириллицей? Нужно бороться с ПО, которое не умеет кириллицу. Пишите в поддержку ST, может поправят. ps Альтиум в 15 версии разучился пути с кириллицей, обратились к ним с претензией - они исправили. Но альтиум - это коммерческое ПО. куб - на воле ст.
  5. Вам не подойдет программа (сниффер COM порта), которая будет запущенна на том же ПК, что и целевая программа? Сниффер перехватывает все сообщения между вашим устройством и вашей программой и отображает их в окне и пишет в файл (с привязкой к времени).
  6. я так и сказал (нужное подчеркнуть): "сказал что-то, потом подумал/почитал другие сообщения, и понял что последнее сообщение лишнее/неуместно - удалил."
  7. ps 2Сергей Борщ Хороший функционал, сказал что-то, потом подумал/почитал другие сообщения, и понял что последнее сообщение лишнее/неуместно - удалил. Но этот функционал я так понял имеют только избранные модеры (не нашел где я могу удалить своё сообщение). А этого функционала очень не хватает простым смертным. Понятно, что удалалять сообющения шерстить форум в праве только модераторы. Но дайте возможность удалять свои сообщения , хотя бы до того момента, пока моё сообщение последнее? А то приходится его просто редактировать и вместо всего текста писать одну букву.
  8. Мы обсуждаем не гипотетические случаи, а конкретный макрос. В данном случае это указатель кольцевого буфера (хоть программный, хоть аппаратный). RP судя по всему изменяется только тут (в функции чтения буфера), RW в другом месте/местах. Что с того что указатели буфера в макросе будут считаны в произвольном порядке?
  9. Да. Речь идет о кросскомпиляции? Настройка шагов в 10, дальнейший процесс выгрузки и отладки в ОДИН клик. Уже обсуждалось, почитайте тут Если хотите собирать исходники прямо на малине, то в Eclipse настраивается ремоут достут. все исходники на малине... запскт gcc из локального эклипса прямо на малине..... блин - забудьте удаленную сборку на таргете. Настройте кросскмпиляцию. Готовых кросскомпиляторов для малины полно. Если на локале не будет нужных сторонних библиотек (например boost, wiringpi, qt и т.п.) то их с малины на локальный десктоп скопировать и эклипсу указать путь к ним. при кросскомпиляции натравить эклипс на 8 ядер на все ядра - сборка махом!!! Да и отладка прямо на таргете в человеческой в лучшей IDE возможна
  10. я проверял так volatile int a = 100; volatile int b = 300; int main( void ) { int y = 4; //неиспользуемая переменная, на неё должен быть ворнинг, индикатор вывода ворнингов int c = a - b; return c; } проверял в реальных проектах. проверил ваш код - нет ворнинга. побочный эффект спора обсуждения, нашел ресурс, там 100500 онлайн компиляторов gcc - проверяй любым. Ни на одном компиляторе не получил ворнинга, даже на 8-ми битных. Ни на С, ни на С++. В иаре, в арме не дает ругонь. А может быть ...... @еееееее..... ПОЛУЧИЛ этот ворнинг!!! Создал с нуля проект в иаре - ворнинг появился. Почему нет в текущих проектах на ИАР и в gcc - не понятно.... ну да ладно.... в тынц пример от IAR intAnalogSample[internalChannelSelect] = ADC[internalChannelSelect]; в этом примере конечно ошибка, к гадалке не ходи не нужен ворниг и тут с "?" и с volitile будет ошибка. Не нужно ждать ворнинг, тут чутьлине "явная" ошибка. s = RB->WP < RB->RP ? RB->WP - RB->RP + RB_BUF_SIZE: RB->WP - RB->RP; а вот с if ошибки не будет (при определённых условиях). в случае int c = a - b (см выше) - криминала нет, даже если есть ворнинг. (при условии, что int 4 байта и это 32-х битный проц). Какая разница в каком порядке а и бэ? Ну обратится сначала к "а", потом к "b" - или наоборот? Пусть вычисляет в этом месте в любом порядке, только молча. Зато этот код быстрее, короче и понятнее, чем в макросе с дополнительной переменной, а ворнинг в этом месте прагмой задавить. а вот если это 8-ми битник, то тут ой.... тут с volatile улетим.... но.... вот правильный код т.е. "правильный код" для 8-ми битника volatile int a = 10; volatile int b = 20; int main( void ) { int temp; temp = a; temp -= b; return temp; } вот код, на который нет ворнинга. Но... тут нет атомарности. temp = a; будет выполняться за 2 или 4 цикла (для 16-ти и 32-х битного int). Т.е. во время копирования из "а" в "temp" может "а" измениться. Держите пулю в ногу. И отсутствие ворнинга тут не поможет. Тут другими методами защиту многопоточности нужно обеспечивать.
  11. Хочу нормальный компилятор!!! ))... не, реально.... не ради тролинга, а чтоб через общение и обмен опытом развиваться... проверил двумя gcc, проверил кейлом и иаром - ворнинга нет. 1)Arlleex какой компилятор вам выдал ворнинг? 2)Arlleex и AHTOXA (и все остальные) - почему компилятор даст ворнинг? ps. jcxz пожалуйста, не отвечайте на эти вопросы, не стоит вам тратить своё время.
  12. скормил. -Wall -Wextra. arm-none-eabi- выдал Build Finished. 0 errors, 0 warnings. arm-linux-gnueabihf- выдал Build Finished. 0 errors, 0 warnings. Вы почитайте - что такое "индусский код", потом оперируйте этим понятием. зачем вы приписываете другим то, что они не говорили? Вам уже сделали замечание "Отучаемся говорить за всех". Процитируйте где я говорил, что volatile не нужен. Я этого ни говорил. Вы книжку хорошего тона почитайте, потом регистрируйтесь на форумах. нет. просто если буфер был бы равен 128 или 64 (кратное 2^x), то занулять переполнение в for можно так us32 j;...//хотя, можно и s32 оставить, в вашем случае индекс не большое значение, в j ни когда переполнения не произойдет. Buf[i] = RB->Buf[j & (RB_BUF_SIZE-1)] в вашем коде выбор индекса - куча операций... "-", ">>", "&" и "=". А тут всего одна - "&".
  13. индусукое там сравнение на больше-меньше (меньше нуля). Вот это что такое? s = RB_BUF_SIZE*((u32)i  >> 31) + i; ? сравнение "<0"!!! Если там всё кристально чисто, зачем вы предлагаете нормальный человеческий вариант if ((i -= RB->RP) < 0) i += RB_BUF_SIZE; Например потому что WP и RP - volatile. Я кода Arlleex не видел, но мне кажется это очевидным. Да и в чём криминал так писать?  и что с того что volatile? cравните int s = rw - rp; и int s = rw; s -= rp; зачем из однострочного кода делать 2-х строчный? Ведь короткий код и читать быстрее/понятнее! Теперь про volatile.... пусть rp и rw volatile - и что, какое преимущество даст 2-х строчный код? 2Arlleex какой размер буфера? человек льёт воду на пол, его спрашивают - "Зачем?", он отвечает "Я люблю чтоб было сухо. Вот и всё". Короткий код - это пример @Integro.
  14. подписываюсь под каждым словом. Я, при первом прочтении решил, что BusySpace(RLen) - это функция void BusySpace(s32 &val); Зачем так писать? Если макрос, то пиши в UPPERCASE, общепринятое. Integro правильно раскритиковал этот код. Можно ещё добавить по макрасам.... #define BusySpace(s) do{s32 i = RB->WP; i -= RB->RP; s = RB_BUF_SIZE*((u32)i >> 31) + i;}while(0) зачем тут i -= RB->RP? почему не так? {s32 i = RB->WP - RB->RP; s = RB_BUF_SIZE*((u32)i >> 31) + i;}while(0) и далее.... зачем тут i? почему не так? {s = RB->WP - RB->RP; s += RB_BUF_SIZE*((u32)s >> 31);}while(0) Исходный макрос - это пример индусского кода чистой воды.... это очень даже рабочий код, но написан самым неочевидным образом, и который не сразу поймёшь что в нем.... Не сразу можно понять, что в этом коде просто-напросто выполняется проверка переполнения кольца, т.е. "if(WP<RP)". Если поймёшь, то можно переписать более простым и очевидным образом s = RB->WP - RB->RP; if(s < 0) s += RB_BUF_SIZE; любителям "?" s = RB->WP < RB->RP ? RB->WP - RB->RP + RB_BUF_SIZE: RB->WP - RB->RP; Всё просто и понятно. Кольцо. Но в исходном макросе - какойто зашквар. Выделение не нужной переменной i, дополнительная операция i -= RB->RP (хотя её можно сразу вычесть), приведение типа "(u32)i", сдвиг ">>31", ПОТОМ УМНОЖЕНИЕ на RB_BUF_SIZE. потом результат складывается опять с i - сколько же лишних операций процессору. Хотя может оптимизатор всё это викинет и код в асме будет не длинше моего компактный, но тем не менее людям это читать.... ((( Вы простую однострочную операцию разбили на кучу ненужных дополнительных и усложнили код, и всё это оформили в МНОГОСТРОЧНЫЙ макрос, с костылём do{}while(0). А нужен ли тут вообще макрос? У вас в коде обратное на лицо. Далее по макрасу.... конечно компилятор код соберёт и код будет работать... но разве является хорошим тоном в макросах использовать глобальные левые переменные? что такое в макросе RB? если этот макрос вызовать в другом месте, где не объявлен указатель RB? Код не соберётся. Я бы тут сделал функцию, как предлагает Integro - GetBusySpase() (или inline ) или вообще бы обошелся без макроса, кодом одной строчкой. Если конечно в коде часто встречается, то макрос как-то так #define GetBusySpace(rb) ( rb->WP < rb->RP ? rb->WP - rb->RP + RB_BUF_SIZE :rb->WP - rb->RP) а в коде s32 RLen = GetBusySpace(RB); но я не люблю обращение через указатели на члены структуры/класса, т.к. символ "->" создает много визуалоьного шума ухудшает читаемость, поэтому #define GetBusySpace(rb) ( (rb).WP < (rb).RP ? (rb).WP - (rb).RP + RB_BUF_SIZE : (rb).WP - (rb).RP) а в коде s32 RLen = GetBusySpace(*RB); ps в вузах на курсах по программированию нужно давать студентам код Arlleex и учить их из него делать код Integro. pps Кто поймёт, что делается у Arlleex в цикле for? Как можно более очевидным/понятным/быстрым способом переписать? Какой размер буфера RB_BUF_SIZE?
  15. зачем так сложно? у меня: Project Properties -> C/C++ Build -> Settings -> Вкладка Tool Settings и погнали, Cross GCC complier Command: gcc Cross G++ complier Command: g++ Crocc GCC linker Command: g++ Cross GCC assembler as т.е. все компиляторы дефолтные, как при обычном (не кросс) компилировании. а вот в кросс сетингах указываем путь и префикс Project Properties -> C/C++ Build -> Settings -> Tool Settings Cross Settings Prefix: arm-linux-gnueabihf- Path: D:\SysGCC\Raspberry\bin При смене тулчейна в одном месте правите путь и/или имя тулчейна (префикса) - у вас во всех местах меняется автоматом. ps пару лайфхаков: 1) Project Properties -> C/C++ Build-> вкладка Behavior галка Enable parallel build... 2) чтоб включить пути инклудов одним махом для с/с++/asm см картинку.... и не нужно отдельно для каждого компилятора и для каждой конфигурации сборки в сетенгах добавлять пути инклуде... тамже пути к либам и Defined символы
  16. STM32CubeIDE

    На вскидку - чайная ложка...... мммм.... пусть будет ДРАГОН, икеевская. Вам наверно нужно с МК и с ПО.... пуль ДУ от писуара Jika Domino да и сам писуар Jika Domino (не сочтите за рекламу), электронные настенные часы.... опять взаимоисключение ))) так "знают" или "если верить"? Дайте пруф на причины? не нашел в инете.... вики тоже не знает.... зато на вики
  17. STM32CubeIDE

    Это про виду ваш пример крайне неудачный. Если вы создали безопасный продукт, то он безопастный с течением времени или по крайнеймере в течении его срока службы. Если к нему подобрали пароль - он был не безопасный изначально. помню. Сделали пушку, пусть будет 37-мм пушка (1930 года) с весом снаряда 1,43 кг . Сделали броню, которая выдерживает бронебойный снаряд 37мм пушки. Так вот броня, которая выдерживала 37мм бронебойный - она как была рассчитана на удар от 37мм пушки - так его и выдерживает. Что в 1930, что в 1945, что в 2000гг. Т.е. эта броня защищала от выстрела 37мм пушки образца 1930 года. "Сегодня броня крепка, а завтра сделали снаряд, который её пробивает. " - она выдерживает удар 37мм пушки, и после завтра.... Если вы сделали безопасное устройство, а завтра школьник зашел на него удаленно - то оно значит не было безопасным износально. Если винда изначально с конвейера дырявая как решето - то её и латают всякими патчами. Причем обновление винды далеко не все дыры закрывает, да и ещё и новые делает. Так вот не обновить винду - это риск ровно такой же как и использовать винду. Поэтому ваш вопрос "Зачем рисковать?" неуместный непонятный, ибо использовать винду - уже рисковать. вот это уж точно что-то у вас неудачно. Если я проверил промокание при температуре от +15 до +25°С, то использовать нужно от +15 до +25. А если используют не в тех условиях +50/-150, в кислоте/под УФ, или положили под локомотив... или монитором сваи забивают - это называется нарушение условий эксплуатации. ps Сделали безопасный боинг, по мойму МАХ 8. пару штук упало. Ни кто не знает почему - значит эти боинги не безопасные - их запретили. Ни кто ни чего не менял, ключи не подбирал, новые снаряды не делал.
  18. STM32CubeIDE

    взаимоисключение в одном предложении. Вы сегодня сделали безопасный продукт без острых краёв, а завтра к нему подобрали ключик об острые края продукта пользователь поранился. Вы сегодня сделали безопасный водонепроницаемый продукт, а завтра к нему подобрали ключик пошел дождь и продукт промок.
  19. А что дальше? С браузерным вьювером все понятно. А вот что в оффлайне делать - не понятно... покупать вьювер? сколько стоит? Или ещё раз регистрироваться на полгода?
  20. не во всех. пробовал эти примеры. смотрю анализатором куда они пингают - на некоторых модулях в точку, на некоторых в сторону. не используется. пока не хватает времени поднять. есть примеры в исходниках, как из этой штуки сделать 8-ми канальную БС для loraWan. более того..... на ней ставят что-то типа packedforward и не паряться. Нод передает пакет через SX1301 на сервер. На сервере идет разбор payload-a пакета. Самому ни чего писать не нужно. А вот если требуется принять свой пакет.... самому его обработать на БС и что-то выдать/сделать.... нужен годный даташит на 1301 с описаним всех внутренних регистров. Такого в открытом доступе не нашел. Руки дойдут жизнь прижмёт - разберусь из сырцов. нет. каждый нод передает на БС пакет. нод ни чего про сервер не знает. Нод проснулся, излучил пакет (получил квитанци-подтверджение, хотя не везде есть квитирование), уснул.... есть там сервер или нет? БС принял или кто ещё или не принял?.... ноду это вообще не интересно, он и не должен это знать. БС решает что делать с полученным пакетом. Может в инет дальше передать, может сама отреагировать, может у себя хранить в своей БД.... Система может работать и без инета. есть такой пдф "AN1200.14 Crystal Oscillator Guidance for Lora Modulation" от симтеч, там ±30. Как раз таки Lora чем хороша, что она не требует прецинзионно точных резонаторов. В даташите в брефинге SX1276/77/78/79 can achieve a sensitivity of over -148dBm using a low cost crystal от куда low cost crystal 1,5 ppm?
  21. Он же кварцевый резонатор. У Sx1272/76 должен быть 32 МГц, ppm max ±30. Резонансная частота чего? ВЧ таркта и антенны? А при чем тут это? Вы меня не поняли: запрограммировал Sx1276 на передачу на частоте 864 700 000 Гц, а он передает на частоте 864 751 000 Гц. При чем тут несогласованный тракт? Несогласованный тракт даст высокое затухание. Частоту передачи задает генератор+PLL в чипе. Почему велосипед? У меня Lora (не LoraWan). Не точка-точка, звезда..... Или скорее все слушают всех. Каждый отвечает только на свой адресный запрос. В принципе тоже самое в LoraWan. Только для вас это скрыто за стеком. Кто-то использует голый tcp, а кто-то MQTT (поверх tcp). А с БС их не будет? Включите 100 000 модулей на одной частоте и шлите непрерывно данные.... половина незарегаются, четверть отвалится. У меня, чтобы передать показания, не нужно их всех дружить. В моем протоколе их вобще не нужно дружить (делать join, connection, bind...). Достаточно раз в сутки проснуться, проверить CAD и передать ( а можно раз в неделю или раз в месяц). Cвой протокол, транспорт Lora. Конечно если у меня будет 100e32 устройств, то и они не пробьются даже раз в сутки. У вас тоже будет свой протокол, но транспорт LoraWan. Ваш транспорт требует 32 кб флеша. Мой транспорт со всем остальным (функции конечного прибора) в 8 кб уместился. Да всякое разное.... индивидуальные заказы.... охранка, свет, вода, регистраторы параметров, управление приводами..... в том числе и АСКУЭ. вопрос остался.... 2) я понял, а замечали ли вы такой эффект в своих модулях, что он работает передает не на той частоте, на которую настроен?
  22. 2Алмаз, немного оффтопа.... около лорные вопросы касающиеся э.счетчиков.... модули на Sx1272/1276 - работают на частотах близких к требуемой. А именно настроив чип на частоту 868,0 МГц может связи не быть. Анализатором спектра можно увидеть, что передача в стороне на 50 кГц. Поправив регистров частоты можно добиться точного попадания в 868,0. Грешил на плохие резонаторы (и сейчас грешу, больше там ломаться не чему). Выбирали резонаторы согласно рекомендации от Semtech. Покупали у разных поставщиков, разных производителей. Более того, даже готовые покупные модули с чипами Sx1276 работают в стороне. Причем покупаешь 10 модулей (RFM95), всем задаешь 864,7Мгц. Они все др с др хорошо общаются. Закидываешь к ним в беседу свой модуль.... они его не слышат и он их не слышит. Анализатор спектара показывает, что "белая ворона" передает на частоте 864,7, а все дестять РФМ95 в стороне на частоте 864,7+50кГц. 1) замечали ли вы такой эффект в своих модулях? Как вы проверяете что ваш модуль LoraWan работает именно на нужной частоте а не в стороне? 2)как вы будете калибровать/проверять/поверять частоту передачи в э.счетчиках?
  23. не у меня, у jcxz. Про дисплеи есть требования от 2019, ссылку давал. там сказано что обязательно, что может быть, но не обязательно. Дисплей не обязателен. Про воду/газ.... На воду делают адаптер с батарейкой/радиомодулем/счетчиком..... в водсочетчике крутится колёсико, адаптер безконтактно считает импульсы. Какой-то у вас подход интересный к разработке.... от обратного.... сначала разрабатываете счетчик, потом выясняете про дисплей, развязку, поверку, калибровку.... Попробуйте с сертификации. Куча "детских" вопросов отпадет. Найдите кантору, которая сертифицирует газосчетчики, выясните у них текущие предъявляемые требования, потом составляйте ТЗ, планируйте бюджет, находите исполнителей, .... как я воду поверял: пришла девочка с чумуданом.... прикрутила измеритель к крану, открыла воду, сверила показания счетчика и чумудана. Это нереально сложно? ps 2Almaz1988 Появилась новая технология передачи данных low power на большие расстояния - LoRa. Вы освоили эту технологию. Вы решили лору куда-нибудь внедрить. Сделать АСКУЭ квартала/снт/города на базе lora - это хорошая идея. Но вы реально осознаёте что вы собираетесь конкурировать с такими гигантами как энергомера, тайтип(нева), мекрурий....? Они на месте не сидят, тоже в радиоканал полезли... у них есть разработки и на LoRa, и на NBIot.... Им воткнуть готовый радиомодуль в счетчик - как два байта переслать. А некоторые, например Стриж, им технология LoRa не понравилась, они свою технологию передачи данных по радиоканалу LowPower разработали.
×
×
  • Создать...