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

firstvald

Свой
  • Постов

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

  • Посещение

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

    2

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


  1. Кто какие приемы использует для работы с данными общими для нескольких потоков? Хорошо когда это пара переменных. А если несколько структур с десятками значений в каждой ? Самое простое это во всех точках , где происходит запись, чтение или проверка условия, прикрывать эти операции во всех потоках семафорами. Это хорошо, когда таких операций мало. Второй вариант - во всех тасках крутятся свои переменные (структуры) и в одном конкретном месте каждого таска происходит синхронизация, прикрытая семафором. с набором данных выбранным эталонным. Уже лучше, но могут возникнуть сложности с работой вроде бы с одними данными. но имеющими разные значения в разных тасках из- за еще несинхронности.
  2. в классическом FREERTOS есть различные функции для работы в основном цикле и в прерывании. куб генерит код в котором штатные функции ос запрятаны в кубовские функции которые анализируют откуда происходит вызов : из основного цикла или из прерывания. /** * @brief Release a Semaphore token * @param semaphore_id semaphore object referenced with \ref osSemaphore. * @retval status code that indicates the execution status of the function. * @note MUST REMAIN UNCHANGED: \b osSemaphoreRelease shall be consistent in every CMSIS-RTOS. */ osStatus osSemaphoreRelease (osSemaphoreId semaphore_id) { osStatus result = osOK; portBASE_TYPE taskWoken = pdFALSE; if (inHandlerMode()) { if (xSemaphoreGiveFromISR(semaphore_id, &taskWoken) != pdTRUE) { return osErrorOS; } portEND_SWITCHING_ISR(taskWoken); } else { if (xSemaphoreGive(semaphore_id) != pdTRUE) { result = osErrorOS; } } return result; } кубовская функция освобождения семафора osSemaphoreReease может вызвать xSemaphoreGiveFromISR в прерывании или xSemaphoreGive в основном цикле (или любой задаче)
  3. все работает, но нужно понимать, что многозадачность требует аккуратного отношения к данным и ресурсам. кубовская ос генерит код с обертками над классической, убирая необходимость думать из прерывания вызов или нет.
  4. да. никаких инструментов не надо. только половину часа посидеть. Проводимость Сопротивление 1 2 4 6 8 10 1 0.5 0.25 0.166667 0.125 0.1 # 0 0 0 0 0 0 0 0 #ДЕЛ/0! 1 1 0 0 0 0 0 1 1 2 0 0.5 0 0 0 0 0.5 2 3 1 0.5 0 0 0 0 1.5 0.666666667 4 0 0 0.25 0 0 0 0.25 4 5 1 0 0.25 0 0 0 1.25 0.8 6 0 0.5 0.25 0 0 0 0.75 1.333333333 7 1 0.5 0.25 0 0 0 1.75 0.571428571 63 1 0.5 0.25 0.166667 0.125 0.1 2.041667 0.489795838
  5. 64 варианта. в экселе сначала копируем в 6 столбцов все проводимости. потом руками обнуляем перебирая двоичный код. в 7 столбце складываем сумму первых 6 столбцов. в 8 находим обратную величину - сопротивление.
  6. все правильно. диод в +2.5 нельзя. только в отдельную шину , которая стабилитроном в землю. у стабилитрона есть свойство отличающее его от диода. обратный ток насыщения диода очень маленький. менее микроампера. ну по крайней мере у малосигнальных . но не шоттки!!! обратный ток стабилитрона 1..2 сотни микроампер. это надо учитывать : его наличие повлияет на напряжение, если до него стоит резистивный делитель или источник с высоким выходным сопротивлением.
  7. Попробовал установить среду. Но создать проект не получается : в списке процессоров нет нужного мне GD32F470/ Какого- то метода подгрузить обновления не нашел.
  8. это, кстати, накладывает серьезные проблемы на прием модбаса. работа приложения по стандарту практически невозможна. там приходится задирать тайм ауты, чтобы на дырки в приеме не реагировало приложение. некоторой лазейкой может быть использование не виртуального com порта, а специального драйвера микросхемы моста . но, это - совсем отдельная история.
  9. дело не только во ftdi/ а и в 340 341 (не рекомендую). pl2303 (не рекомендую). CP210x.
  10. вы забудьте про времена, когда работаете с виндой. они не работают вообще. никакие. ни тайм ауты ничего.только как то на уровне порядка величины. у вас очевидно стоит виртуальный com порт. это вы еще очень быстро все видите. и 35 у вас, скорее всего, очень усреднено. не знаю досконально деталей (может даже есть порты у которых передача в другом режиме), здесь разбирали с точностью до размера буфера каждой микросхемы виртуального com порта. то , что я для себя определил, как практическая рекомендация : обмен в сторону компьютера происходит кадрами. в экспериментах я вижу время порядка 50 миллисекунд. оно, скорее всего, реально 51 с чем то миллисекунда - историческая временная сетка одного их каналов таймера еще 86 машин (18.2 раза в секунду). с этой временной сеткой в компьютер идут кадры , такой режим usb обмена. можно такую аналогию. считайте, что в комп идут автобусы. ваша посылка, попадающая на вход микросхемы виртуального порта, может попасть или в один автобус или в два или в три. если она попадает в один автобус , то поедет в комп в соответствии с расписанием или сразу или с промежуточной зедержкой до 50 миллисекунд. если посылка успела вся попасть в микросхему до отправления автобуса - она поедет вся на этом. если нет - часть уедет на этом , а часть через 50 миллисекунд на следующем. т е в непрерывном потоке в сторону компа вы получите 50 миллисекундный разрыв. с длинными и непрерывными посылками будете получать разрывы. возможна ли ситуация переполнения буфера микросхемы при непрерывной передаче? до определенной скорости нет. но я не прикидывал.
  11. прошу прощения, но , чтослучилось. только что прошла сколковская школа FPGA. только что прошел хакатон. миэт вовсю вроде бы пытается во всю доносить маршрут RTL. таки никого нет? или есть подвох ?
  12. Микросхема BP2831 в типовом включении. На них делают длинный лампы подсветки. https://aliexpress.ru/item/4000011167371.html?sku_id=10000000029787083&spm=a2g2w.productlist.search_results.0.273d7956v61FIx такой модуль. срисовать схему. и источник питания для него. усе. аморального умножителя нет.
  13. если честно. лучше сгенерить кубом основу под IDE и руками перетащить функционал. иначе будет бой не несколько недель.
  14. я так и упомянул , что очень примерно можно (ацп в проце есть и можно посмотреть или даже компаратором что вообще ахтунг) а иначе начинается нира. да еще с учетом прошедших циклов заряд разряд. а в конкретном случае при известном примерно постоянном токе разряда и при заданном диапазоне температур (в идеале при комнатной) можно извернуться и да ловя десятки миkливольт нарисовать 4 градации. а если и температуры разные и ток разряда разный, то не очень получится.
  15. если копать глубоко, то можно зарыться. если совсем поверхам и сделать на живую нитку , в расчете потом вернуться в это место или не вернуться 🤣, то просто смотрим напряжение на батарее. так смотрим заряд и так смотрим разряд. если почестнее, то смотрим кулонный баланс : ток умноженный на время. и относимся к батарее как к ведру. сколько кулонов налили при заряде и сколько кулонов вычерпали при разряде. это более честно. размер ведра определяем по емкости : скажем 2.5 Ач = 2.5*3600= 9000 Кулонов.
  16. есть проблема. индикаторы что мы покупаем. я бы так сказал, что те которые можно купить. 5 вольтовые и немного другие. REC002002A-datasheet.pdf
  17. Ищу список переделок на плате Raystar 20x2 под работу на SPI. Хотя режим упоминается как рабочий необходимые перепайки не указаны. Нашел только это. Некоторое упоминание есть для Winstar. Но это раскопки. Нашел через внешний поиск отсыл сюда же. И уже по цепочке вот.
×
×
  • Создать...