С Новым Годом, господа эмбеддеры, кодеры и электронщики! Пусть ваши проекты и устройства работают так - как задумано! Творческих успехов, интересных и финансово-успешных проектов! 👋🙂 🍾🎆
Большое спасибо. Вообщем частично сам дошёл до этих отладок в операционке. Но тем не менее очень хорошо что это озвучено для тех, кто ещё не потратил десятки часов. Осталось понять как отлаживаться, когда операционка зависает. Сам однозначно ещё решения не нашёл. Иногда помогают ассерты, иногда тупо светодиодами приходится отлаживаться. А по рабочему коду удобно отлаживаться отдельной задачей с отправкой через уарт по дма. В отдельном файле создаю функцию дебаг_инит, в ней создаётся задача очередь и семафор. В параметрах функции указатель на структуру настроенного дма. Дадее простые функции заполнения очереди по типу дебаг_принт_стринг, дебаг_принт_инт,.... _буффер и т. д. Ну и функцию колбека для прерывания от тх_дма, которую прописываю в майне. В ней проверяю соответствие структуры дма и скидываю семафр. Всем удачи.
Узнал про "access breakpoint" давно, но использовал его по делу буквально позавчера, нашел жука в старом "проверенном" коде. Ошибка в адресации к памяти.
Очень познавательное видео! Спасибо за обзор, за знакомство с трудами других эмбеддеров, подводными камнями. У меня сейчас проект радиосвистков для баскетбола в работе. Рисую отладочную плату. Предполагается логгирование на USB флэшку, работа с радиомодулями HC-11/12, работа с HMI USART, W5500, Modbus RTU Master/Slave, W25Qxx и т. д. Проект на DevEbox F407, задействую все 6 UART-модуля контроллера, предполагаю тоже разруливать очередями.
@@олегспирин-р4р У судей на поле во время игры некие гаджеты на поясе. Микрофон-петличка на воротнике. Когда он свистит - микрофон улавливает звук. Гаджет выделяет из него свист и останавливает игровые часы по радиоканалу посылая сигнал на базу. Ведётся лог при этом для дальнейшего анализа игры.
Сохраняется на флешку. Аппарат принимает инфо о времени игры от судейской системы для лога. Запускает и останавливает игровые часы. Общается со сторонними системами по какому либо интерфейсу. Рисует лог на экране, замеряет уровень заряда батарей в гаджетах и прочее.
Я тоже пользователь ОВЕНа. Сижу на плк160. Но я не знаю пробоем, кроме того что старая версия кодесиса дико неудобная. Расскажите поподробнее, пожалуйста, к каким замечаниям не прислушиваются производители? (Простое любопытство)
@@johnkoffee Вот вы сами назвали одну из проблем это рисование нового интерфейса. Сберонлайн, сайт ржд овен и др программные продукты, котрые рисуют интерфейсы в корне которые по другому выглядят и их не интересуют, что пользователи в нем потеряются.
@@Liberhaim Как говорится смешались кони, люди... Т.е. и ембедед и сбер. Вы не из соседней страны пишите, что у нас тут все плохо и пропало :-) Сбер, пожалуй самое неплохое банковское приложение, Овен программируется в CoDeSys, которое используют многие производители ПЛК. При чем автор ролика просто мало знает про языки программирования МЭК 61131,т.к. те кто ими владеет написали бы, что им сложно программировать на С :-). Ну и если развить его идею со связыванием входов и выходов через функции с учётом желания пользователя, то он бы получил наноПЛК. Повозиться только чуть с FBD и верхним уровнем.
@@АлександрСпицын-х1я вообще интересно, есть ли приложения круче Сбербанка, остальные все намного слабее, даже ВТБ глючит на старом моем телефоне, Сбер работает на всём стабильно и быстро. Программисты очень хороши, им и платят за это.
С новым Годом! За наводку на библиотеку спасибо. У меня самолично переписанная библиотека (SMS + GPRS + MQTT), и хоть и представлял, как все это запустить на машине состояний, но с FreeRTOS увязка с управлением в реальном времени делается на порядок проще.
А что с ценами не так? Сколько времени, будучи электронщиком и программистом, вам потребуется чтобы сделать аналог, да ещё отладить и софт и аппаратную часть, разработать корпус? Хорошо, если вы поставите это соседу чтобы хоть как то отбить временные и финансовые затраты. Но стоит оно того ради единичного устройства? А с соседом так и вообщем беда, по закону подлости сломается именно тогда, когда вы с женой поедете на долгожданные запланированные выходные, оставив детей, в мини медовый месяц, а тут вам сосед звонит, караул, мол твоя система не работает, дом сейчас замёрзнет, трубы полопаются, приезжай.
@@valkoder_ex305 с ценами не так то, что это крупносерийные изделия и вскрывая тех же овнов - понятно что в серии их цена стремится к 0, там нет специальных дорогиз мс от burr brown и прочего дорогого и навороченного, а они простенькие плк продают по цене "от" 15 всю автоматизацию решаю узко заточенными изделиями на мк, обычно от плк берется только какая-то небольшая доля его возможностей. Если не горит пожар и никто не тонет, то на мой взгляд - кастом вне конкуренции, но могу ошибаться. А по практике мои изделия сотнями работают по стране, ни одного программного глюка так и не было, потому что они заточены под задачу, крутится необходимый минимум, а не воюют между собой глюки килотонн закрытых библиотек и избыточного кода.
@@BB-ti9bf ну у овена и софт и маркетинг и поддержка и концепция, это все по определению не делается одним человеком. а где есть коллектив, там есть и смежные затраты. А по надежности так на то есть стандарты и сертификаты и насколько я знаю какой то у них есть. В космос конечно его никто отправлять не будет, он другую задачу решает. а по поводу закрытых библиотек, ничего сказать не могу, какие используют их разработчики не в курсе.
@@valkoder_ex305 посмотрите хотя бы на панели оператора и сравните с китайскими, всякие другие изделия, типа поплавковых датчиков - тупо переупакованный, даже не перемаркированный алиэкспресс, а цена сразу кратно возрастает. Я был бы рад перепаковывать китай и продавать раз в 5-6 дороже, рассказывая лапшу про накладные расходы. Вот вам и маркетинг и концепция 😁 И еще лирика вдогонку - как-то давно мой босс тогда ездил на конференцию Hewlett Packard и задал вопрос а че это у вас расходка такая дорогая, прям ПЦ дорогая, на что получил ответ что они сильно вкладываются в новые технологии и совершенствование их производства. Осмотр, разборка и эксплуатация расходки показали что в реале дико дорогие и новые технологии это перемещение направляющих на картриджах чтобы предыдущее поколение не влезало в принтеры вместо новых, раза в 3 дороже 🤣. Все остальное, вплоть до меток пресс форм - полностью такое же. Спиливаем упор и картридж за 1200 р (тогда) влезал вместо картриджа за 3600 и прекрасно работал. Отака %уйня, малята.
@@BB-ti9bf Коллега мучается с ХулиПакардом, уже 3 принтер домой покупает. Из магазина в нем краски на донышке, картридж новый сразу покупать. Новые картриджи сейчас чипами защищены, просто тупо залить краску нельзя. Печатаешь 1000 страниц и все, хоть пустых белых, там счетчик, который сбросить тоже нельзя. Раньше их как-то ломали, сейчас хер. Он купил китайский чип, типа ломаный, перепаял - ошибка. Самый зашквар это Кэннон, по слухам при попытке поставить что-то чужое или как-то хакнуть весь принтер становится кирпичом. Скоро старые принтеры на аукционах начнут продавать.
С новым годом! Надеюсь у вас появится желание рассказать нам о тонкостях в разработки устройств при использовании FREERtos. Для меня это важно, т.к. я разрабатываю устройство
Лично я начинал программирование в среде "ОВЕН ЛОДЖИК" на программируемых реле. И всем даю совет: начинайте с ПР200. Очень легкая программа по весу, а по функциональным возможностям она может практически все. Так что покупайте программируемые реле ОВЕН Автоматика" и получайте удовольствие.
Если не нужно в программе динамическое создание/удаление сущностей FREErtos (задачи, очереди, таймеры и т.п.) используйте их статическое создание. При этом вы сами выделяете буферы под нужды этих сущностей и уже на этапе компиляции вы точно знаете, что ОС памяти больше не пожрёт.
С Новым Годом, Владимир!!! Огромное спасибо за ролик - прямо яичко к христову дню!!! Вопрос: Пакеты ответов от модема идут сплошными пакетами или могут быть перерывы ? Принимаю через DMA по прерыванию IDLE.
@@VladimirMedintsev Еще вопрос.Извините что не задал сразу. А 2 пакета не могут "склеиться" ? Всегда ли между ними есть задержка больше времени передачи одного байта?
@@VladimirMedintsev Спасибо за ответы. Но из них вытекает следующий вопрос - а зачем тогда принимать по 1му байту? Можно заказать DMA заведомо большую длинну для приема и включить прерывание IDLE порта. Как IDLE сработает - DMA останавливаем, снимаем флаг IDLE, данные в очередь, перезапускаем DMA. Или какие-то проблемы могут быть при таком варианте?
Это диалог. Мы что-то говорим модулю, он отвечает. Бывает что и он нам может что-либо написать, к примеру сообщить о звонке. В этом случае и dma и irq использовать можно, но все равно желательно анализировать возвращенную модулем информацию.
Делал подобную штуку... Намучился поначалу достаточно. Самое весёлое что sms запроса баланса, выполняемое перенаправлением запроса с телефона клиента и отправдение ответа обратно клиенту отстраивать приходится вживую и результат подчас неизвестен.
Всех с Новым Годом! Спасибо за видео. Очень хорошое объяснение. Если не секрет, сколЬко у Вас ушло времени на создание первой рабочей версии кода для этого проекта?
Первый вариант прошивки был создан часов за 50-60. Много времени на то чтобы осмыслить структуру и написание работы с gsm модулем. Команды писались очень быстро. Там же регулярные выражения. Ну и руководство по эксплуатации и документация долго.
Делал ПО для магазина, которое отсылало своим клиентам СМС - было большое кол-во жалоб о неполучении СМС. Проделал следующее: 8 марта в течение для ПО отослало на мой номер 100 СМС - результат удручающий - 5 СМС вообще не пришло в течении 3-х дней, 2 СМС пришли через 2 дня, 4 СМС пришли на следующий день и 20 СМС пришли более чем через 2 часа. ПО слало СМС через мобильный телефон и в телефоне все 100 были как отправлены, начали разбираться с оператором сотовой связи и то о чем он нам поведал повергло в шок - они не гарантируют доставку СМС даже если сняли за его у вас деньги, более того они и не гарантируют срок, в течении которого СМС будет доставлено. Это Беларусь, оператор MTC, а неужели в России иначе? Читал в инете - что грабанули квартиру, вывезли всю мебель - хозяин как только получил СМС от сигнализации сразу выехал домой но грабителей уже не застал, соседи сказали что вывозили мебель несколько часов.
@@sergsapov2927 - WebMoney так и делают - там звонок даже в другую страну при попытке входа в их кабинет. Так что в России видать с СМС тоже не все гладко.
Ребята, может кто подскажет, где можно посмотреть подобный проект только без СМС оповещения, а с непоср. с HTTP-запросами (post, get) на сервер. Хочется ещё и простенький мониторинг организовать у себя с push уведомлениями на телефон.
там нет ничего сложного. регистрируемся указав APN, USER и PASS и несколькими командами отправляем POST и GET запросы. Если СИМ-карта от провайдера уже предназначена для умных устройств, то можно и не указывать APN, USER и PASS, а сразу подключаться к интернету командой AT+SAPBR=1,1 а подсмотреть можно вот тут: sampawno.ru/viewtopic.php?f=116&t=13159 Вообще много статей по этому поводу есть. Можно в документации к GSM-модулю почитать про HTTP запросы. Обычно производители прям в документации приводят примеры запросов/ответов.
А я при инициализации заполняю всё между heap и stack шаблоном, и периодически проверяю потом, сколько памяти ещё содержит шаблон. Т.о., мониторю не только текущий "вылет", но и был ли он между проверками. Хотя, если пересечение было, но не было перезаписи содержимого, то, увы, не покажет. Наверно, банальщину рассказываю?
Вот бы такой же девайс только чтоб общался по GPRS (mqtt сейчас в моде) и какой-нибудь простецкий интерпретатор для обработки логики. Такая штука много где бы пригодилась.
13:13 обратил внимание, что автор распространяет библиотеку по лицензии GPL v3. Возник вопрос об отношении вашей команды разработчиков к данному вопросу. Ведь GPL (не Lesser GPL, а обычная) требует, чтобы софт, использующий GPL-код в своём составе, также распространялся по лицензии GPL. Также данная лицензия предусматривает, что в случае распространения ПО в виде бинарных файлов, встроенных в физическое устройство, любой владелец данного устройства имеет право затребовать предоставления исходников. Всё это не очень вяжется с коммерческими разработками.
А в чем собственно сложность? Каждый покупатель устройства может у нас получить полный комплект исходных кодов прошивки контроллера. В этом нет абсолютно никакого секрета.
@@VladimirMedintsev Это понятно, работает и у меня, после танцев у костра. Интересует переключение между окнами, только Ltd или с fmc тоже работает и как. Не происходит отрисовка на переключенное окно, но кнопки, слайдеры, работают, но их не видно, так как остаётся отрисованное ранее..
Все очень просто. Это переменная 8 бит. Каждый раз при проверке состояния входа мы устанавливаем младший бит в 1 если на входе логический 1 и в 0 если 0. Затем делаем сдвиг влево. Проверяем если там 0хFF значит уверенно сработали Если меньше то не сработали.
Ещё один вопрос, с вашего позволения. Получил список SMS командой AT+CMGL="ALL". Пытаюсь прочитать SMS командой AT+CMGR=1. Получаю ту же строку что и при чтении списка, для SMS с индексом 1. В ней есть индекс, номер телефона, дата, время. Текста SMS нет. Что-то я никак не догоню как получить текст. Может какие-то настройки перед этим сменить? не подскажете? Получаю такую строку AT+CMGR=1 +CMGR: "REC READ","+79859910884","","2021/01/06 04:49:12+1
@@VladimirMedintsev Руководство, понятно, читаю. И режим текст установил AT+CMGF=1 AT+CMGF=1 OK или его надо непосредственно перед каждым запросом устанавливать ?
А что у вашего GSM модуля нет выхода сообщающего о звонке или СМС. Недавно работал с SIM808, там есть ножка называется RI - ring interrupt, прижимается к земле на весь период входящего звонка (вызова), или дает пульс, если СМС пришел. Удобненько.
@@VladimirMedintsev Еще так, для информации. Насчет функции отсутствия сим карточки. На некоторых холдерах для карты (не всех) есть ножка CP - card present. Может понадобиться когда-нибудь.
@@VladimirMedintsev Спасибо вам за ваши видео. Может вам будет интересен этот модуль - ai-thinker-open.github.io/GPRS_C_SDK_DOC/en/hardware/a9g.html Еще документация - docs.ai-thinker.com/en/gprs/a9g . В чем прикол - он с GPS и что ему можно писать свою прошивку и использовать standalone . Правда СДК для ГНУ только.
В каком смысле плохо искали? Я и не должен искать что-либо. Есть заказчик есть производство. А то, что какой-то коллектив делает нечто подобное, ну это же просто замечательно. Могу только пожелать им хороших заказчиков в новом году. Но по какой-то причине заказчик пришел к нам а не к ребятам из Тулы.
Тоже налетел на проблему длинны данных в очереди. У меня получилось сделать буфер в 64 байта всего и при этом очередь только из 2х элементов. Ставлю 4 элемента - вешается. Это мало. М66 на запрос ATI возвращает 59 байт. Как быть? У Вас решения не нашлось?
@@VladimirMedintsev Сегодня позанимался этой проблемой. Нашел вот какое решение - если настроить в очереди в CubeMX ( а до этого я их создавал руками) - всё прекрасно работает. Размер памяти операционной системы (если я правильно понял - TOTAL_HEAP_SIZE) не изменился, т.е, как был до добавления очередей 3072 так и остался. Как-то странно и непонятно.
@@sergsapov2927 Дело в том, что у модема есть незапрашиваемые сообщения. Например - при получении SMS он передает сообщение +CMTI:... У меня еще сложнее - модем подключается к серверу по UDP или TCP протоколу и в любой момент может прилететь запрос от сервера. Поэтому я не могу, послав запрос, ждать ответа именно на этот запрос. Я посылаю запросы, а полученные ответы кладу в очередь, достаю их из очереди, обрабатываю и формирую новые запросы.Если надо дождаться какого-то ответа - не формирую новый запрос, пока ответ не придет. Как-то так.
НАДЕЮСЬ НА ПОДРОБНОЕ ПРОДОЛЖЕНИЕ!... 8 лет учу стм... (подписал чужой проект 1н заработал(2016г))... то среда изменится...то код на с++, или нет дефайнов,... то код c/на не транспортируется,... то кубИДЕ(с детскими проблемами Эклипса) не работает программатор. Keill + Source Insight 3.5 + STM32 ST-LINK Utility = самые лучшие друзья! Читаю много статей и пытаюсь применить... но мало что получается, ... по тому что-б сделать что-то, нужно сделать многое за кадром..и начинаешь тонуть во вкладках.... на сегодня в опере 208 в хроме 54...во всех других(2х) настроен сессионный сброс(для поиска справки/подсказки). Накопал проект на Гите...который сразу работал...с нужным мне процессором 103.... определил его ка базовый!!! На основе (d:\ST\base) в папке бесе не низменно пробую пилить проекты(Время релиза 2-3 месяца (сам схемы платы за неделю)), пока все обрывки кода с интернета компасную. В качестве отладчика у меня в базовом проекте дисплей spi_320*400... на него вывожу магическую строку состояния.. Хорошо бы ПОЛУЧИТЬ БАЗОВЫЙ ПРОЕКТ ОС на кубиде, со всеми пред настроенными параметрами, если это возможно! Как вы сказали"начинающему начинать...в одиночку" Имею 1,5 диплома...асемблер для Pic(1год работы)... в техникуме асемблер51/avr... и всякое не нужное г*но типа школьного паскаля и бэйсика. В универе ....a=~a*b|| c.... Хотя после нас уже учили с99.и ++
Причина крайне проста, у каждого языка свое предназначение. Свои сильные и слабые стороны. Я лично не вижу где в микроконтроллерах есть потребность в языке C++. Нет, ну откровенно говоря есть пара библиотек на c++ но это скорее экзотика. Более того, если вы посмотрите на всех производителей микроконтроллеров, то обнаружите что никто не использует c++ на низком уровне.
@@VladimirMedintsev Производители не используют по простой причине - им нужно обеспечить соместимость с "С". Зачем им лишняя работа? У меня в сопровождении несколько проектов на микроконтроллерах, не мной зачатых на на С. Постоянно добавляются какие то "фишки". И сейчас их сопровождать - это Ад. С++ дает структуризацию. Понятно что употреблять С++ нужно с оглядками. Я для мелких проектов использую С. Для всех остальных - С++. Hal::LedRed(true) выглядит лучше чем led_red(TRUE) :)
Не проблема, вы как разработчик можете использовать хоть Питон, хоть JavaScript. Но для того, чтобы удобно было писать и не пропадала лёгкость восприятия кода обычно создают BSP и дальше уже с его использованием. А что касается производителей и "зачем им лишняя работа" тут если следовать этой логике им вообще тогда писать бы на Basic, но нет они пишут на Си, потому что 99% кода для микроконтроллеров написано на Си.
@@VladimirMedintsev BSP(HAL) - это само собой. Но ведь есть и логические подсистемы, которые взаимодействуют между собой... Например, у Вас 5 разных платежных терминалов - имеете несколько switch-case(или еще один уровень абстракции), которые прозрачности коду не добавляют. Я знаю "перца" который до сих пор на ассемблере все пишет и ничо... По поводу Basic - пример не удачный. Для МК стандарт - "С", который великолепно компилируется в С++ проектах. И зачем производителю "специфическая С++" библиотека вместо "универсальной С" библиотеки?
Юрий, я не планирую с вами спорить. Вы задали вопрос, я на него развернуто ответил. Если вам, как разработчику удобен С++ то это замечательно. Значит вы сделали правильный выбор и все хорошо. Я не вижу тут каких-то противоречий.
Чет у меня еще мысль созрела. Если в программе много булевых переменных, можно ли их запихнуть в битовое поле? К примеру, так 8 булевых переменных можно впихнуть в один байт. Ведь они занимают 8х8 байт. Понятно, что ресурсов много. Но это же не комп, ресурсы не бесконечны.
А сколько FreeRTOS памяти жрет по умолчанию? На каких платформах имеет смысл использовать эту операционную систему, а не писать все функции проекта самостоятельно?
Терзают меня смутные подозрения, что в FreeRTOS борьбу с дребезгом можно организовать дешевле. К примеру, создать задачу с osDelay(100). И там отслеживать состояние входов. Выполнение задачи 10 раз в секунду гарантированно отсеет дребезг. Возможно, я не прав. Но я так делал. Работает.
При таком подходе, в ситуации когда в момент считывания происходит дребезг (или прилетает помеха), может возникнуть ложное срабатывание, либо задержка реакции на 100 мс, либо пропуск сигнала если его длительность менее 100 мс + время выполнения задач с более высоким приоритетом + время чтения. В некоторых случаях это не критично, но забывать об этом не стоит. Да, вероятность небольшая, но когда нужно сделать что-то более сложное чем моргание светодиодом, любая мелочь перерастает в проблему на удивление быстро.
@@proggarage В этом ничего страшного нет. Именно для данного девайса. Время работы задачи сравнимо с временем срабатывания реле. Большинство клавиатур компьютерных (да и не только) так и работают. Сканируют всё поле раз 20 в секунду. Всё равно, самый тормоз тут, это человек. Пусть даже идеальная реакция будет, ну это 0.3 секунды. А это 300! мс. За это время можно раз 10 проверить клавишу на дребезг.
Не вся же памятт используется именно задачами и внутри задач. Есть же DMA, есть обработчики прерываний. Так, что излишний контроль памяти привел бы только к излишнему усложнению как ОС, так и всего окружения.
На самом деле нет какой-то насущной проблемы. У freertos есть средство информирования о том, сколько свободной кучи и стека у вас осталось из выделенного под ОС. Остальное тоже посчитать не сложно. Это просто не всегда очевидно для тех кто пришел из мира больших компьютеров. По факту это проблема только для них.
@@VladimirMedintsev Это да, но использовать динамическое выделение памяти в прерываниях могут только племянники Билла Хейса. Нормальным людям оно ни к чему.
В FreeRTOS есть встроенные средства сбора статистики и диагностики. Почти всё настраивается через CubeMX, но для эффективного использования документацию по FreeRTOS придётся почитать. Про Keil не знаю - не пользую, а для CubeIDE/Eclipse есть удобный плагин для работы с этими данными: mcuoneclipse.com/2017/03/18/better-freertos-debugging-in-eclipse/ Ещё больше полезностей можно получить при использовании отладчика SEGGER J-Link, кстати для ST-Link есть прошивка, делающая из него J-Link.
Только аккуратнее с готовыми - оригинальный стоит от €300, а клоны довольно часто бывают неполноценными до полной неработоспособности по назначению, сам попадал - из 4-х экземпляров с алиэкспрес 2 неправильные, внешне не отличаются, а схема совсем другая и видится только каким-то своим драйвером с очень урезанным функционалом, в Linux не работает совсем.
Замислився: за великим рахунком потрібен менеджер пам'яті, але за ним піде своп (таке інше). Як досвідчений програміст стек відчуваю дупою, але що робити іншим? Може: якщо пристрій повільний, використовувати флешку чи диск?
Вы, программисты, зажрались 15 тыщ для них небольшие деньги. Кто-то за меньшие деньги месяц карячится, чтобы вы могли сидеть и смотреть в свои телевизоры.
У вас какие-то проблемы? Это не программистам нужно, а люди себе в дома и на предприятия ставят. Вам программисты чем не угодили? Никто не мешает взять книжку, выучить язык и тоже сидеть смотреть в свой телевизор.
С Новым Годом, господа эмбеддеры, кодеры и электронщики! Пусть ваши проекты и устройства работают так - как задумано! Творческих успехов, интересных и финансово-успешных проектов! 👋🙂 🍾🎆
Большое спасибо. Вообщем частично сам дошёл до этих отладок в операционке. Но тем не менее очень хорошо что это озвучено для тех, кто ещё не потратил десятки часов. Осталось понять как отлаживаться, когда операционка зависает. Сам однозначно ещё решения не нашёл. Иногда помогают ассерты, иногда тупо светодиодами приходится отлаживаться. А по рабочему коду удобно отлаживаться отдельной задачей с отправкой через уарт по дма. В отдельном файле создаю функцию дебаг_инит, в ней создаётся задача очередь и семафор. В параметрах функции указатель на структуру настроенного дма. Дадее простые функции заполнения очереди по типу дебаг_принт_стринг, дебаг_принт_инт,.... _буффер и т. д. Ну и функцию колбека для прерывания от тх_дма, которую прописываю в майне. В ней проверяю соответствие структуры дма и скидываю семафр. Всем удачи.
Узнал про "access breakpoint" давно, но использовал его по делу буквально позавчера, нашел жука в старом "проверенном" коде. Ошибка в адресации к памяти.
Очень познавательное видео! Спасибо за обзор, за знакомство с трудами других эмбеддеров, подводными камнями.
У меня сейчас проект радиосвистков для баскетбола в работе. Рисую отладочную плату. Предполагается логгирование на USB флэшку, работа с радиомодулями HC-11/12, работа с HMI USART, W5500, Modbus RTU Master/Slave, W25Qxx и т. д. Проект на DevEbox F407, задействую все 6 UART-модуля контроллера, предполагаю тоже разруливать очередями.
А можно по подробнее, что это за свистки такие ? Очень интересно
@@олегспирин-р4р У судей на поле во время игры некие гаджеты на поясе. Микрофон-петличка на воротнике. Когда он свистит - микрофон улавливает звук. Гаджет выделяет из него свист и останавливает игровые часы по радиоканалу посылая сигнал на базу. Ведётся лог при этом для дальнейшего анализа игры.
Сохраняется на флешку. Аппарат принимает инфо о времени игры от судейской системы для лога. Запускает и останавливает игровые часы. Общается со сторонними системами по какому либо интерфейсу. Рисует лог на экране, замеряет уровень заряда батарей в гаджетах и прочее.
Спасибо за видео, с наступившим Новым Годом всех! Здоровья всем, а остальное приложится.
"...навык программирования этого ОВНА" - зачёт. Только печально, что наши конторы не слышат голоса пользователей своего продукта и не учитывают их
Я тоже пользователь ОВЕНа. Сижу на плк160. Но я не знаю пробоем, кроме того что старая версия кодесиса дико неудобная.
Расскажите поподробнее, пожалуйста, к каким замечаниям не прислушиваются производители? (Простое любопытство)
@@johnkoffee Вот вы сами назвали одну из проблем это рисование нового интерфейса. Сберонлайн, сайт ржд овен и др программные продукты, котрые рисуют интерфейсы в корне которые по другому выглядят и их не интересуют, что пользователи в нем потеряются.
А мне нравится ОВЕН. С ПРками проблем никогда не имел, ни в процессе программирования ни в эксплуатации.
@@Liberhaim Как говорится смешались кони, люди... Т.е. и ембедед и сбер. Вы не из соседней страны пишите, что у нас тут все плохо и пропало :-) Сбер, пожалуй самое неплохое банковское приложение, Овен программируется в CoDeSys, которое используют многие производители ПЛК. При чем автор ролика просто мало знает про языки программирования МЭК 61131,т.к. те кто ими владеет написали бы, что им сложно программировать на С :-). Ну и если развить его идею со связыванием входов и выходов через функции с учётом желания пользователя, то он бы получил наноПЛК. Повозиться только чуть с FBD и верхним уровнем.
@@АлександрСпицын-х1я вообще интересно, есть ли приложения круче Сбербанка, остальные все намного слабее, даже ВТБ глючит на старом моем телефоне, Сбер работает на всём стабильно и быстро. Программисты очень хороши, им и платят за это.
С Новым Годом!
Удачи, новых прибыльных проектов и благодарных подписчиков!
Очень и очень полезная информация в ролике. Спасибо. С Новым Годом, Вас! С всеми прошедшими и будущими праздниками!
Спасибо за интересное и познавательное видео.
С новогодними праздниками.
С новым Годом!
За наводку на библиотеку спасибо.
У меня самолично переписанная библиотека (SMS + GPRS + MQTT), и хоть и представлял, как все это запустить на машине состояний, но с FreeRTOS увязка с управлением в реальном времени делается на порядок проще.
Посмотрел с большим интересом. Спасибо за контент.
С НГ ! Хороший канал , приятно смотреть !
С прошедшим вас новым годом! Творческих успехов!
на 02:15 "надо обладать какими-то навыками программирования этого ОвнА!" - это колоссально! С НГ-21! 👍😁🤪
Приятно и познавательно смотрится.
2:19 тонко и в точку.
Особенно поглумился показывая цены на овно и говоря что это совсем недорого 😁
А что с ценами не так? Сколько времени, будучи электронщиком и программистом, вам потребуется чтобы сделать аналог, да ещё отладить и софт и аппаратную часть, разработать корпус? Хорошо, если вы поставите это соседу чтобы хоть как то отбить временные и финансовые затраты. Но стоит оно того ради единичного устройства? А с соседом так и вообщем беда, по закону подлости сломается именно тогда, когда вы с женой поедете на долгожданные запланированные выходные, оставив детей, в мини медовый месяц, а тут вам сосед звонит, караул, мол твоя система не работает, дом сейчас замёрзнет, трубы полопаются, приезжай.
@@valkoder_ex305 с ценами не так то, что это крупносерийные изделия и вскрывая тех же овнов - понятно что в серии их цена стремится к 0, там нет специальных дорогиз мс от burr brown и прочего дорогого и навороченного, а они простенькие плк продают по цене "от" 15
всю автоматизацию решаю узко заточенными изделиями на мк, обычно от плк берется только какая-то небольшая доля его возможностей. Если не горит пожар и никто не тонет, то на мой взгляд - кастом вне конкуренции, но могу ошибаться.
А по практике мои изделия сотнями работают по стране, ни одного программного глюка так и не было, потому что они заточены под задачу, крутится необходимый минимум, а не воюют между собой глюки килотонн закрытых библиотек и избыточного кода.
@@BB-ti9bf ну у овена и софт и маркетинг и поддержка и концепция, это все по определению не делается одним человеком. а где есть коллектив, там есть и смежные затраты. А по надежности так на то есть стандарты и сертификаты и насколько я знаю какой то у них есть. В космос конечно его никто отправлять не будет, он другую задачу решает. а по поводу закрытых библиотек, ничего сказать не могу, какие используют их разработчики не в курсе.
@@valkoder_ex305 посмотрите хотя бы на панели оператора и сравните с китайскими, всякие другие изделия, типа поплавковых датчиков - тупо переупакованный, даже не перемаркированный алиэкспресс, а цена сразу кратно возрастает. Я был бы рад перепаковывать китай и продавать раз в 5-6 дороже, рассказывая лапшу про накладные расходы. Вот вам и маркетинг и концепция 😁
И еще лирика вдогонку - как-то давно мой босс тогда ездил на конференцию Hewlett Packard и задал вопрос а че это у вас расходка такая дорогая, прям ПЦ дорогая, на что получил ответ что они сильно вкладываются в новые технологии и совершенствование их производства. Осмотр, разборка и эксплуатация расходки показали что в реале дико дорогие и новые технологии это перемещение направляющих на картриджах чтобы предыдущее поколение не влезало в принтеры вместо новых, раза в 3 дороже 🤣. Все остальное, вплоть до меток пресс форм - полностью такое же. Спиливаем упор и картридж за 1200 р (тогда) влезал вместо картриджа за 3600 и прекрасно работал. Отака %уйня, малята.
@@BB-ti9bf Коллега мучается с ХулиПакардом, уже 3 принтер домой покупает. Из магазина в нем краски на донышке, картридж новый сразу покупать. Новые картриджи сейчас чипами защищены, просто тупо залить краску нельзя. Печатаешь 1000 страниц и все, хоть пустых белых, там счетчик, который сбросить тоже нельзя. Раньше их как-то ломали, сейчас хер. Он купил китайский чип, типа ломаный, перепаял - ошибка. Самый зашквар это Кэннон, по слухам при попытке поставить что-то чужое или как-то хакнуть весь принтер становится кирпичом. Скоро старые принтеры на аукционах начнут продавать.
Спасибо за информацию!
С новым годом! Надеюсь у вас появится желание рассказать нам о тонкостях в разработки устройств при использовании FREERtos. Для меня это важно, т.к. я разрабатываю устройство
Лично я начинал программирование в среде "ОВЕН ЛОДЖИК" на программируемых реле. И всем даю совет: начинайте с ПР200. Очень легкая программа по весу, а по функциональным возможностям она может практически все. Так что покупайте программируемые реле ОВЕН Автоматика" и получайте удовольствие.
Если не нужно в программе динамическое создание/удаление сущностей FREErtos (задачи, очереди, таймеры и т.п.) используйте их статическое создание. При этом вы сами выделяете буферы под нужды этих сущностей и уже на этапе компиляции вы точно знаете, что ОС памяти больше не пожрёт.
Странно лайка нет на этом 100 500 раз смотренном видео!
Просматриваю все Рт ОС
Отлично!
Спасибо за видео! еще хотелось бы видео на тему энергопотребления на freeRTOS. На русском языке что то не особо много информации на эту тему.
Интересно.
С Новым Годом, Владимир!!! Огромное спасибо за ролик - прямо яичко к христову дню!!! Вопрос: Пакеты ответов от модема идут сплошными пакетами или могут быть перерывы ? Принимаю через DMA по прерыванию IDLE.
Ответы модем всегда передает сплошным потоком.
@@VladimirMedintsev Еще вопрос.Извините что не задал сразу. А 2 пакета не могут "склеиться" ? Всегда ли между ними есть задержка больше времени передачи одного байта?
Нет не могут.
@@VladimirMedintsev Спасибо за ответы. Но из них вытекает следующий вопрос - а зачем тогда принимать по 1му байту? Можно заказать DMA заведомо большую длинну для приема и включить прерывание IDLE порта. Как IDLE сработает - DMA останавливаем, снимаем флаг IDLE, данные в очередь, перезапускаем DMA. Или какие-то проблемы могут быть при таком варианте?
Это диалог. Мы что-то говорим модулю, он отвечает. Бывает что и он нам может что-либо написать, к примеру сообщить о звонке. В этом случае и dma и irq использовать можно, но все равно желательно анализировать возвращенную модулем информацию.
Делал подобную штуку... Намучился поначалу достаточно. Самое весёлое что sms запроса баланса, выполняемое перенаправлением запроса с телефона клиента и отправдение ответа обратно клиенту отстраивать приходится вживую и результат подчас неизвестен.
Интересно ОВЕН звучит в ваших устах. Но сглашусь, так как раньше юзал плк или скорее плк юзали меня...
Всех с Новым Годом!
Спасибо за видео. Очень хорошое объяснение.
Если не секрет, сколЬко у Вас ушло времени на
создание первой рабочей версии кода для этого проекта?
Первый вариант прошивки был создан часов за 50-60. Много времени на то чтобы осмыслить структуру и написание работы с gsm модулем. Команды писались очень быстро. Там же регулярные выражения. Ну и руководство по эксплуатации и документация долго.
@@VladimirMedintsev с НГ! а что используете для регулярных выражений?
@@t966rt библиотеку SLRE
@@VladimirMedintsev спасибо
Делал ПО для магазина, которое отсылало своим клиентам СМС - было большое кол-во жалоб о неполучении СМС. Проделал следующее: 8 марта в течение для ПО отослало на мой номер 100 СМС - результат удручающий - 5 СМС вообще не пришло в течении 3-х дней, 2 СМС пришли через 2 дня, 4 СМС пришли на следующий день и 20 СМС пришли более чем через 2 часа. ПО слало СМС через мобильный телефон и в телефоне все 100 были как отправлены, начали разбираться с оператором сотовой связи и то о чем он нам поведал повергло в шок - они не гарантируют доставку СМС даже если сняли за его у вас деньги, более того они и не гарантируют срок, в течении которого СМС будет доставлено. Это Беларусь, оператор MTC, а неужели в России иначе?
Читал в инете - что грабанули квартиру, вывезли всю мебель - хозяин как только получил СМС от сигнализации сразу выехал домой но грабителей уже не застал, соседи сказали что вывозили мебель несколько часов.
Много загадочных вещей происходит в Белоруссии. В принципе у нас СМС работают достаточно стабильно. Доставка до 3х минут это максимум.
@@sergsapov2927 - WebMoney так и делают - там звонок даже в другую страну при попытке входа в их кабинет. Так что в России видать с СМС тоже не все гладко.
Ребята, может кто подскажет, где можно посмотреть подобный проект только без СМС оповещения, а с непоср. с HTTP-запросами (post, get) на сервер. Хочется ещё и простенький мониторинг организовать у себя с push уведомлениями на телефон.
там нет ничего сложного. регистрируемся указав APN, USER и PASS и несколькими командами отправляем POST и GET запросы. Если СИМ-карта от провайдера уже предназначена для умных устройств, то можно и не указывать APN, USER и PASS, а сразу подключаться к интернету командой AT+SAPBR=1,1
а подсмотреть можно вот тут: sampawno.ru/viewtopic.php?f=116&t=13159
Вообще много статей по этому поводу есть. Можно в документации к GSM-модулю почитать про HTTP запросы. Обычно производители прям в документации приводят примеры запросов/ответов.
А я при инициализации заполняю всё между heap и stack шаблоном, и периодически проверяю потом, сколько памяти ещё содержит шаблон. Т.о., мониторю не только текущий "вылет", но и был ли он между проверками. Хотя, если пересечение было, но не было перезаписи содержимого, то, увы, не покажет. Наверно, банальщину рассказываю?
20:00 больше , для начинающих !
Вот бы такой же девайс только чтоб общался по GPRS (mqtt сейчас в моде) и какой-нибудь простецкий интерпретатор для обработки логики. Такая штука много где бы пригодилась.
Интересно и познавательно. Спасибо.
А из каких соображений выбирается начальный адрес FLASH_CONFIG_START_ADR что-бы не попасть на программный код?
Конечно
а как определять и задавать адреса?
@@simwhite9187 В настройках линковщика.
13:13 обратил внимание, что автор распространяет библиотеку по лицензии GPL v3. Возник вопрос об отношении вашей команды разработчиков к данному вопросу. Ведь GPL (не Lesser GPL, а обычная) требует, чтобы софт, использующий GPL-код в своём составе, также распространялся по лицензии GPL. Также данная лицензия предусматривает, что в случае распространения ПО в виде бинарных файлов, встроенных в физическое устройство, любой владелец данного устройства имеет право затребовать предоставления исходников.
Всё это не очень вяжется с коммерческими разработками.
А в чем собственно сложность? Каждый покупатель устройства может у нас получить полный комплект исходных кодов прошивки контроллера. В этом нет абсолютно никакого секрета.
@@VladimirMedintsev вон оно как, в таком случае вопросов нет. :)
@@VladimirMedintsev Я извиняюсь, а устройство дорогое ?
@@МихаилТиунов-с7д Не готов ответить.
Хотелось бы видеть название среды разроботки в названии ролика.
А зачем выносить название среды разработки в название, если ролик совершенно о другом?
Если был опыт работы с EmWin, будьте любезны рассказать о ней, о подводных камнях.
Буду краток. Она работает. Если с ней будет проект, то покажу.
@@VladimirMedintsev Это понятно, работает и у меня, после танцев у костра. Интересует переключение между окнами, только Ltd или с fmc тоже работает и как. Не происходит отрисовка на переключенное окно, но кнопки, слайдеры, работают, но их не видно, так как остаётся отрисованное ранее..
2:18 - "Тебе надо обладать навыками программирования этого Говна" ))))))
а я подсел на ESP Easy. удобно добротно хорошо. бесплатно
Здравствуйте, Владимир! Хотел бы у Вас поучиться реализации проверки дребезга контактов. Не могли бы Вы более подробно объяснить как это работает?
Все очень просто. Это переменная 8 бит. Каждый раз при проверке состояния входа мы устанавливаем младший бит в 1 если на входе логический 1 и в 0 если 0. Затем делаем сдвиг влево. Проверяем если там 0хFF значит уверенно сработали Если меньше то не сработали.
@@VladimirMedintsev интересно, первый раз вижу такой способ, мне надо проникнуться попробовать. Спасибо за помощь!
@@VladimirMedintsev а такой способ можно применять в прерываниях?
Я не понял чем ОС+библиотеки отличаются от ардуино, о котором вы говорили что там может быть куча ошибок в библиотеках.
Ещё один вопрос, с вашего позволения. Получил список SMS командой
AT+CMGL="ALL". Пытаюсь прочитать SMS командой AT+CMGR=1. Получаю ту же строку что и при чтении списка, для SMS с индексом 1. В ней есть индекс, номер телефона, дата, время. Текста SMS нет. Что-то я никак не догоню как получить текст. Может какие-то настройки перед этим сменить? не подскажете? Получаю такую строку
AT+CMGR=1
+CMGR: "REC READ","+79859910884","","2021/01/06 04:49:12+1
Необходимо установить режим - текст. Ну а вообще вам необходимо найти на свой gsm модуль руководство по АТ командам, там подробно все описано.
@@VladimirMedintsev Руководство, понятно, читаю. И режим текст установил
AT+CMGF=1
AT+CMGF=1
OK
или его надо непосредственно перед каждым запросом устанавливать ?
Нет и одного раза хватит.
@@VladimirMedintsev Помогите, а я донатиков кину. Модем M66 (по вашей рекомендации)
@@VladimirMedintsev Ну да. Иначе на AT+CMGL="ALL" пришел бы ERROR
А что у вашего GSM модуля нет выхода сообщающего о звонке или СМС. Недавно работал с SIM808, там есть ножка называется RI - ring interrupt, прижимается к земле на весь период входящего звонка (вызова), или дает пульс, если СМС пришел. Удобненько.
Да в принципе мало кто эту ножку использует. Гораздо удобнее написать хороший процессинг и полноценно работать в символьном виде.
@@VladimirMedintsev Еще так, для информации. Насчет функции отсутствия сим карточки. На некоторых холдерах для карты (не всех) есть ножка CP - card present. Может понадобиться когда-нибудь.
Спасибо, я знаю, об этом написано в даташите на некоторые модули. Также я знаю как подключать 2 сим к одному модулю.
Я искренне благодарен, просто так получилось что в свое время с модулями не плохо разобрался по ним даже есть несколько видео на канале.
@@VladimirMedintsev Спасибо вам за ваши видео. Может вам будет интересен этот модуль - ai-thinker-open.github.io/GPRS_C_SDK_DOC/en/hardware/a9g.html Еще документация - docs.ai-thinker.com/en/gprs/a9g . В чем прикол - он с GPS и что ему можно писать свою прошивку и использовать standalone . Правда СДК для ГНУ только.
Вы плохо искали, есть готовые устройства ccu825 например, российской разработки
В каком смысле плохо искали? Я и не должен искать что-либо. Есть заказчик есть производство. А то, что какой-то коллектив делает нечто подобное, ну это же просто замечательно. Могу только пожелать им хороших заказчиков в новом году. Но по какой-то причине заказчик пришел к нам а не к ребятам из Тулы.
А если бы входов было еще больше, то было бы еще больше однотипных if else ?))
а как поведет себя ваше устройство если отключится питание во время обновления конфига в NVM ?
В реальной версии считает прошлый релиз конфига. Показан упрощенный подход.
Тоже налетел на проблему длинны данных в очереди. У меня получилось сделать буфер в 64 байта всего и при этом очередь только из 2х элементов. Ставлю 4 элемента - вешается. Это мало. М66 на запрос ATI возвращает 59 байт. Как быть? У Вас решения не нашлось?
Необходимо увеличивать размер памяти доступный для операционной системы. В ее настройках.
@@VladimirMedintsev Спасибо!!!
@@VladimirMedintsev Сегодня позанимался этой проблемой. Нашел вот какое решение - если настроить в очереди в CubeMX ( а до этого я их создавал руками) - всё прекрасно работает. Размер памяти операционной системы (если я правильно понял - TOTAL_HEAP_SIZE) не изменился, т.е, как был до добавления очередей 3072 так и остался. Как-то странно и непонятно.
@@sergsapov2927 Чтобы потом, в другой задаче, его из очереди забрать
@@sergsapov2927 Дело в том, что у модема есть незапрашиваемые сообщения. Например - при получении SMS он передает сообщение +CMTI:... У меня еще сложнее - модем подключается к серверу по UDP или TCP протоколу и в любой момент может прилететь запрос от сервера. Поэтому я не могу, послав запрос, ждать ответа именно на этот запрос. Я посылаю запросы, а полученные ответы кладу в очередь, достаю их из очереди, обрабатываю и формирую новые запросы.Если надо дождаться какого-то ответа - не формирую новый запрос, пока ответ не придет. Как-то так.
Пересмотрел компоновку...2018г ... вместе с этим видео зашло!
ruclips.net/video/nFvoAI34aBI/видео.html
...Я НАЧИНАЮЩИЙ.... чё кричишь!!!
3:03 По делу! Введение.
5:15 Примеры ATкода...GSM ПОСТАНОВКА проблематики.
7:26 Структурирование задачи.
11:56 Примеры кода.
13:10 Обзор библиотеки. Источник
17:08 Объяснение кода.
25:25 Пред упреждение граблей.
НАДЕЮСЬ НА ПОДРОБНОЕ ПРОДОЛЖЕНИЕ!...
НАДЕЮСЬ НА ПОДРОБНОЕ ПРОДОЛЖЕНИЕ!...
8 лет учу стм... (подписал чужой проект 1н заработал(2016г))... то среда изменится...то код на с++, или нет дефайнов,... то код c/на не транспортируется,... то кубИДЕ(с детскими проблемами Эклипса) не работает программатор.
Keill + Source Insight 3.5 + STM32 ST-LINK Utility = самые лучшие друзья!
Читаю много статей и пытаюсь применить... но мало что получается, ... по тому что-б сделать что-то, нужно сделать многое за кадром..и начинаешь тонуть во вкладках.... на сегодня в опере 208 в хроме 54...во всех других(2х) настроен сессионный сброс(для поиска справки/подсказки).
Накопал проект на Гите...который сразу работал...с нужным мне процессором 103.... определил его ка базовый!!! На основе (d:\ST\base) в папке бесе не низменно пробую пилить проекты(Время релиза 2-3 месяца (сам схемы платы за неделю)), пока все обрывки кода с интернета компасную.
В качестве отладчика у меня в базовом проекте дисплей spi_320*400... на него вывожу магическую строку состояния..
Хорошо бы ПОЛУЧИТЬ БАЗОВЫЙ ПРОЕКТ ОС на кубиде, со всеми пред настроенными параметрами, если это возможно!
Как вы сказали"начинающему начинать...в одиночку"
Имею 1,5 диплома...асемблер для Pic(1год работы)... в техникуме асемблер51/avr... и всякое не нужное г*но типа школьного паскаля и бэйсика. В универе ....a=~a*b|| c.... Хотя после нас уже учили с99.и ++
@@ДимаДима-к1н я ничего не понял из написанного. Если вы реально чего-то хотите, большая просьба сформулируйте мысль четко.
Все проекты на С? С++ не используете? Если не используете - то по каким причинам?
Причина крайне проста, у каждого языка свое предназначение. Свои сильные и слабые стороны. Я лично не вижу где в микроконтроллерах есть потребность в языке C++. Нет, ну откровенно говоря есть пара библиотек на c++ но это скорее экзотика.
Более того, если вы посмотрите на всех производителей микроконтроллеров, то обнаружите что никто не использует c++ на низком уровне.
@@VladimirMedintsev Производители не используют по простой причине - им нужно обеспечить соместимость с "С". Зачем им лишняя работа?
У меня в сопровождении несколько проектов на микроконтроллерах, не мной зачатых на на С. Постоянно добавляются какие то "фишки". И сейчас их сопровождать - это Ад.
С++ дает структуризацию. Понятно что употреблять С++ нужно с оглядками.
Я для мелких проектов использую С. Для всех остальных - С++.
Hal::LedRed(true) выглядит лучше чем led_red(TRUE) :)
Не проблема, вы как разработчик можете использовать хоть Питон, хоть JavaScript. Но для того, чтобы удобно было писать и не пропадала лёгкость восприятия кода обычно создают BSP и дальше уже с его использованием.
А что касается производителей и "зачем им лишняя работа" тут если следовать этой логике им вообще тогда писать бы на Basic, но нет они пишут на Си, потому что 99% кода для микроконтроллеров написано на Си.
@@VladimirMedintsev BSP(HAL) - это само собой. Но ведь есть и логические подсистемы, которые взаимодействуют между собой... Например, у Вас 5 разных платежных терминалов - имеете несколько switch-case(или еще один уровень абстракции), которые прозрачности коду не добавляют. Я знаю "перца" который до сих пор на ассемблере все пишет и ничо...
По поводу Basic - пример не удачный. Для МК стандарт - "С", который великолепно компилируется в С++ проектах. И зачем производителю "специфическая С++" библиотека вместо "универсальной С" библиотеки?
Юрий, я не планирую с вами спорить. Вы задали вопрос, я на него развернуто ответил. Если вам, как разработчику удобен С++ то это замечательно. Значит вы сделали правильный выбор и все хорошо. Я не вижу тут каких-то противоречий.
Чет у меня еще мысль созрела. Если в программе много булевых переменных, можно ли их запихнуть в битовое поле? К примеру, так 8 булевых переменных можно впихнуть в один байт. Ведь они занимают 8х8 байт. Понятно, что ресурсов много. Но это же не комп, ресурсы не бесконечны.
А вот как по мне, компиляторы сейчас умные, пусть у них голова и болит. Ну просто я понимаю немного оптимизировать код, но не до такой же степени.
@@VladimirMedintsev Логично. Голова у них железная, пусть и гудит. Согласен. Потому, пока и забил.
@@privateperson1468 Особенно, если учесть, что элементарные операции выполняются в разы быстрее. А битовые как раз и есть они самые. :-)
@@privateperson1468 А 32 битные значения не используют память?
std::bitset в помощь
А сколько FreeRTOS памяти жрет по умолчанию? На каких платформах имеет смысл использовать эту операционную систему, а не писать все функции проекта самостоятельно?
Недавно автор расхваливал бесплатный CubeIDE, а примеры приводит в платном Keil.
В чем связь? Если я что-то похвалил, то теперь должен только это и использовать?
Терзают меня смутные подозрения, что в FreeRTOS борьбу с дребезгом можно организовать дешевле. К примеру, создать задачу с osDelay(100). И там отслеживать состояние входов. Выполнение задачи 10 раз в секунду гарантированно отсеет дребезг. Возможно, я не прав. Но я так делал. Работает.
Можно, конечно, разные способы применимы.
При таком подходе, в ситуации когда в момент считывания происходит дребезг (или прилетает помеха), может возникнуть ложное срабатывание, либо задержка реакции на 100 мс, либо пропуск сигнала если его длительность менее 100 мс + время выполнения задач с более высоким приоритетом + время чтения.
В некоторых случаях это не критично, но забывать об этом не стоит. Да, вероятность небольшая, но когда нужно сделать что-то более сложное чем моргание светодиодом, любая мелочь перерастает в проблему на удивление быстро.
@@proggarage В этом ничего страшного нет. Именно для данного девайса. Время работы задачи сравнимо с временем срабатывания реле. Большинство клавиатур компьютерных (да и не только) так и работают. Сканируют всё поле раз 20 в секунду. Всё равно, самый тормоз тут, это человек. Пусть даже идеальная реакция будет, ну это 0.3 секунды. А это 300! мс. За это время можно раз 10 проверить клавишу на дребезг.
+10
Вообще, довольно странно. Неужели, ОС сама не может следить за количеством выделяемой памяти?
Не может, ведь вы память можете явно и не выделать, а просто использовать. Как ОС об этом узнает?
@@VladimirMedintsev Из дескриптора задачи, вестимо. Хотя...в таких маленьких процах сделать нормальный менеджмент памяти трудно, конечно. ММУ-то нету.
Не вся же памятт используется именно задачами и внутри задач. Есть же DMA, есть обработчики прерываний. Так, что излишний контроль памяти привел бы только к излишнему усложнению как ОС, так и всего окружения.
На самом деле нет какой-то насущной проблемы. У freertos есть средство информирования о том, сколько свободной кучи и стека у вас осталось из выделенного под ОС. Остальное тоже посчитать не сложно. Это просто не всегда очевидно для тех кто пришел из мира больших компьютеров. По факту это проблема только для них.
@@VladimirMedintsev Это да, но использовать динамическое выделение памяти в прерываниях могут только племянники Билла Хейса. Нормальным людям оно ни к чему.
В FreeRTOS есть встроенные средства сбора статистики и диагностики. Почти всё настраивается через CubeMX, но для эффективного использования документацию по FreeRTOS придётся почитать. Про Keil не знаю - не пользую, а для CubeIDE/Eclipse есть удобный плагин для работы с этими данными: mcuoneclipse.com/2017/03/18/better-freertos-debugging-in-eclipse/ Ещё больше полезностей можно получить при использовании отладчика SEGGER J-Link, кстати для ST-Link есть прошивка, делающая из него J-Link.
Абсолютно верно, но только не из любого STLink можно сделать Jlink. Проще купить готовый.
Только аккуратнее с готовыми - оригинальный стоит от €300, а клоны довольно часто бывают неполноценными до полной неработоспособности по назначению, сам попадал - из 4-х экземпляров с алиэкспрес 2 неправильные, внешне не отличаются, а схема совсем другая и видится только каким-то своим драйвером с очень урезанным функционалом, в Linux не работает совсем.
@@oskinru ну не знаю, у меня клон и я им в принципе доволен. И куплен этот клон на АлиЭкспресс но у проверенного продавца. Все работает все довольны.
Замислився: за великим рахунком потрібен менеджер пам'яті, але за ним піде своп (таке інше). Як досвідчений програміст стек відчуваю дупою, але що робити іншим? Може: якщо пристрій повільний, використовувати флешку чи диск?
Да, с этими буферАми так и есть...
Ко коду сразу видно С, С++ и мало ресурсов в системе .. не то что нынешнее племя .. JAVA,C#, и прочие язычки .. всё вали кулём .. потом разберём...
Вы, программисты, зажрались 15 тыщ для них небольшие деньги. Кто-то за меньшие деньги месяц карячится, чтобы вы могли сидеть и смотреть в свои телевизоры.
У вас какие-то проблемы? Это не программистам нужно, а люди себе в дома и на предприятия ставят. Вам программисты чем не угодили? Никто не мешает взять книжку, выучить язык и тоже сидеть смотреть в свой телевизор.
@@VladimirMedintsev против программистов ничего не имею. 15 тыщ это серьезные деньги.