Jump to content

    

juvf

Свой
  • Content Count

    1491
  • Joined

  • Last visited

Community Reputation

0 Обычный

About juvf

  • Rank
    Профессионал

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

5613 profile views
  1. Стыдно должно быть за такие вопросы. На си нет конечно, звездит. Что там jcxz и чем компилирует - неизвестно. У меня Iar-arm и mingw подавились: multiple definition of `array' ... mingw32-make[1]:... Error 1 Это в стандарте прописано. Пруф - ISO/IEC 9899:2017 6.9 External definitions
  2. почему напрочь отсутствуют проверки? экономия памяти? buffer = netbuf_new(); //netbuf_alloc(buffer,sizeof(msgNode)); if(buffer != 0) { void *p = netbuf_alloc(buffer,5); //netbuf_ref(buf2, data, len); if(p != 0) { buffer->p->payload = msgNode.message; buffer->p->len = 5;//msgNode.size; } else { //NULL if no memory could be allocated } } else { //NULL on lack of memory }
  3. Да скорее всего это не кубу плевать, а эклипсу плевать. Работаю в eclipse+iar plugin. эклипс не свежий.... да и плуг давно ставил... чото торкнуло меня заглянуть в эклипсе в IAR Embedded Workbanch plugin manadger... Обнаружил, что для моего плагина есть у иара обновление. Ну канешь надо обновиться!!! После обновления та же самая картина, что и у ДЕЙЛ: "Открываю окно настроек и вижу ничего.", а также треугольничек жёлтый с восклицательный значком .... подсказка текстом рядом... ОФРАННЫЙ!!! Wtf? Причем сам эклипс не обновлял, только плуг иаровский. (((
  4. char TERMINAL_TEXT[128][256]; ++index &= 0x7f; //или (128-1), или (64-1) uint32_t *pOut = (uint32_t *)&TERMINAL_TEXT[index][0]; uint32_t *pInt = (uint32_t *)rx_buffer; for(uint8_t i=0;i<64;i++) //копируем 256 байт pOut[i] = pInt[i]; ps в 4 раза быстрее.... помните про выравнивание
  5. Флаги в FreeRTOS

    Не совсем понятно, а точнее совсем непонятно зачем отвечать на вопросы ДЕСЯТИ летней давности и предлагать решения, которые были не доступны в 2011 году? 10 лет назад во FreeRTOS не было Event.
  6. Нашел, спасибо. Усреднение за 10-ти минутный интервал.
  7. Всем доброго. Как-то гисметео/gdeduet/windy показывали средний ветер 5-6 м/с (почасовой), а датчик в этом месте показывал то 0.6 м/с, то 7.4 м/с. Причем обновление примерно раз в час. В течении часа 0.6, потом час 7.4. Хотя в реалии ветер был порядка 5 м/с, рваный. Возник вопрос - что это за показания? может порывы ветра? Может этот датчик не усредняет ветер. Мы используем датчики ветра для своей аппаратуры (где сами разрабатываем, где покупаем сторонние). Заглянул в код нашего датчика - идет подсчет оборотов крыльчатки за 4 сек. Пересчет в скорость. Ещё 4 сек подсечет - пересчет... и т.д. УЗ датчики определяют мгновенную скорость гораздо быстрее. Возможно и с крыльчаткой можно определить по другому алгоритму за 1-2 оборота. Так вот, возник вопрос - что такое "средняя скорость ветра"? Перегуглил весь инет - не нашел ответа. Как её определить? Как её определяет гисметео? Например измерение раз в 1 сек, накопление за минуту и усреднение? Или усреднение за 5 мин? или за 10 мин? Кто разрабатывает датчики ветра - как вы вычисляете среднюю V ветра? Может кто поделиться ссылкой на какой-то нормативный документ, где дается определение/расчет из мгновенной скорости? В инете находил определение средней скорости, мол шар скинуть с высоты h, его сдует на расстояние m - вычисляем. Но как его вычислить из мгновенной скорости?
  8. Зачем заводить ещё один модуль? Что такое модуль? У вас в исходном варианте ТРИ группы эвентов (три модуля). Я вам предложил вариант с одиной группой эвентов (с одни модулем). Зачем вы создаёте ещё одну задачу WaitInitTask? Она не нужна. (или это функция.... просто слово Task обычно используют в именах задач) 1) Забудьте про xEventGroupSync 2) создаем 3 задачи - menu, lcd и mem. 3) создаем группу флагов xEventAnyName пусть будет как у вас название xEventMenuStart. Это и будет общая переменная, которая свяжет все 3 задачи. 4) определяем дефайны (необязательно) #define WAIT_EVENT_INIT_MEM (1<<0) #define WAIT_EVENT_INIT_LCD (1<<1) 5) запускаем freertos void vTaskMenu (void *pvParameters){ xEventGroupWaitBits(xEventMenuStart,WAIT_EVENT_INIT_MEM | WAIT_EVENT_INIT_LCD, 0, pdTRUE, portMAX_DELAY); while(1){ MsgDisplayUpdate((uint8_t*)LcdMsgShow.msg,TEXT_NORMAL); vTaskDelay( LcdMsgShow.time/ portTICK_RATE_MS ); } void vTaskLCD (void *pvParameters){ initLCD(); xEventGroupSetBits(xEventMenuStart,WAIT_EVENT_INIT_LCD); ... } void vTaskMEM (void *pvParameters){ initMem(); xEventGroupSetBits(xEventMenuStart,WAIT_EVENT_INIT_MEM); ... } Если у вас есть ещё задачи, и они не должны выполняться до тех пор, пока не проинитится lcd и mem, то другие задачи блокируйте также, как и vTaskMenu xEventGroupWaitBits(xEventMenuStart,WAIT_EVENT_INIT_MEM | WAIT_EVENT_INIT_LCD, 0, pdTRUE, portMAX_DELAY);
  9. #define WAIT_EVENT_INIT_MEM (1<<0) #define WAIT_EVENT_INIT_LCD (1<<1) void vTaskMenu (void *pvParameters){ xEventGroupWaitBits(xEventAnyName,WAIT_EVENT_INIT_MEM | WAIT_EVENT_INIT_LCD, 0, pdTRUE, portMAX_DELAY); while(1){ MsgDisplayUpdate((uint8_t*)LcdMsgShow.msg,TEXT_NORMAL); vTaskDelay( LcdMsgShow.time/ portTICK_RATE_MS ); } Зачем столько много групп эвентов? Общий эвент не нужен. гденить создаем группу эвентов xEventAnyName. не один эвент, а ГРУППУ эвентов. Задачу vTaskMenu блокируем на xEventGroupWaitBits. ждем в группе эвентов xEventAnyName выстовление ОБОИХ флагов. Ждем бесконечно долго. Пока оба флага и WAIT_EVENT_INIT_MEM, и WAIT_EVENT_INIT_LCD не встанут, vTaskMenu будет заблокирован. И ините LCD выставляем флаг WAIT_EVENT_INIT_LCD, в инте памяти флаг WAIT_EVENT_INIT_MEM.
  10. Да что жэ это за мифические РЭК? Они только в Нарнии существуют? partnumber в студию!
  11. Где я просил назвать тип компонента? я просил Дайте конкретный пример, о каком рэк радиоэлектронном компоненте идет речь? Что я не так сформулировал? Какое из этих слов вам не понятно? Где в моём вопросе "ТИП компонента"? Я не просил конкретный тип компонента, я просил конкретный компонент. я вам про ваш пример ответил. это КОНТАКТ на кабель. Контакт на кабель, отношения к ПП имеет чуть менее, чем ни какое.
  12. Лочится STM8S103

    Купил платы аля ардуино-мини на stm8s103f3p6. вот схема Не могу зашить и дебажиться IAR-ом. Использую ST-Link V2 Написал холоворд, пытаюсь дебажить, получаю от иара сообщение Thu Dec 31, 2020 15:47:09: IAR Embedded Workbench 3.10.1 (D:\Program Files (x86) 10\IAR Systems\Embedded Workbench 8.0\stm8\bin\stm8proc.dll) Thu Dec 31, 2020 15:47:09: C-SPY Processor Descriptor V3.10.1.201 for STM8 Thu Dec 31, 2020 15:47:09: C-SPY Debugger Driver, ST-LINK V3.10.1.201 for STM8 Thu Dec 31, 2020 15:47:09: Connected to STM8 SWIM Debugging system, STM8-SWIM 1.6.12, GDI Version 1.2.6 Thu Dec 31, 2020 15:47:09: Erasing device memory. Thu Dec 31, 2020 15:47:09: Failed to set ROP flag Thu Dec 31, 2020 15:47:10: Failed to set option byte: <no message> Thu Dec 31, 2020 15:47:10: Failed to erase memory by toggling the "Read-Out Protection" bit. Thu Dec 31, 2020 15:47:10: IAR Embedded Workbench 3.10.1 (D:\Program Files (x86) 10\IAR Systems\Embedded Workbench 8.0\stm8\bin\stm8proc.dll) После этого в чипе становиться защита от чтения. Запускаю STVP - чтение не возможно, защита. Стираю с помощью stvp опт.биты. Чип после этого в STVP читается/пишется. Всё нормально. Запускаю иар, читаю опт.биты - читаются. Жму дебаг и опять - Failed to set ROP flag и тот же вывод. Чип залочился. Проверил на 2-х платах - поведение одинаковое. На обоих поменял процессоры - поведение одинаковое. В STVP всё нормально, в IAR лочится. Есть другая плата аля-ардуино на процессоре stm8s105 - иар с ней работает как нужно. Другие девайсы на stm8L051 тоже работают без нареканий. Поменял ST-Link - тоже самое Как то это лечиться? ps iar 3.10.1 for stm8 и iar 3.10.4, iar 3.11.1
  13. при чем тут госты, конструктора, разрабы и все эти ваши слова. Я ПОПРОСИЛ КОНКРЕТНЫЙ ПРИМЕР. КОНКРЕТНЫЙ пример!!! в рамках моей просьбы - при чем тут госты и все эти ваши слова? Я вас попросил "Дайте название конкретного РЭК, который нужно заказывать рассыпухой? Какой конкретно? Такой 301-021-12? Или такой DG142R-5.08-04P-14-00AH? Или такой ELK508V-02P? Назовите конкретный partnumber?" Вы мне в ответ - "Клеммы всякие". Я вам ответил - "нет такого компонента 'Клеммы всякие' ". Ну хорошо, хорошо... попробуем другой алгоритм не запоминайте этого слова.... я перефразирую свой ответ про "клеммы всякие": Нет компонента с partnumber (артикул) - "Клеммы всякие". Назовите конкретные клеммы конкретного производителя? Ни один производитель не производит компонент с partnumber "Клеммы всякие". Клеммы - это не конкретный рэк, это тип/группа рэк. Хоть как вы переводите, хоть какой гост читайте... мне не это нужно было, поэтому причем тут гост. Мне конкретный partnumber нужен был конкретного производителя. вот, мне вот это нужно.... какой конкретно дроссель, какого производителя состоит отдельно из ножек, обмотки, сердечника и баночки с лаком и кисточкой? Или какая микросхема - ножки отдельно, подложка отдельно, полупроводники отдельно?
  14. при чем тут госты и варианты переводов? клеммник - это тип (наименование) компонента, как и резистор, конденсатор и т.п. Я просил КОНКРЕТНЫЙ пример. Вы понимаете слово конкретный? Это не "клеммы", не "клеммы всякие", это не клеммы фирмы MOLEX, а конкретно - "вилка на плату 0039301060 Molex" Мы тоже используем molex. У молекса, как и другие соединители (такие как BLD, BLS, ...) , устанавливаемые на плату разъемы идут в сборе. А вот на кабель - корпус отдельно от контактов. Ваш конкретный пример - это контакт для кабеля/жгута. О жгутах говорили - это конструктора поле битвы. Почему я в "конце" темы попросил конкретный пример? Потому как вспомнил, что все рассыпные компоненты - это всё для жгутов. Вернее не смог вспомнить ни один рассыпной и паяемый на плату. И ни один рассыпной не попадал в э3. ps попадались рассыпухой на плату, по мойму вч вставки, но вся рассыпуха шла комплектом.