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

juvf

Свой
  • Постов

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

  • Посещение

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

    2

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


  1. это не голый. Можно поставить какойнить дебьян и руками настроить и/или доставить набор пакетов превращяющий дебьян в реалтайм. я не предлагаю поставить др систему. Я про линукс сказал к тому, что дригие ос, а это линуксы, фрибсд, макОС.... это тоже не реалтайм и там тоже нужен бубен. Да, совсем забыл про QNX. Могу сказать про QNX4.25 реалтаймовости она даст, но будут проблемы с дровами под современное железо. QNX6 ... ни чего не скажу, неуспел освоить. А ДОС даст опрос по таймеру строго каждые 10 мс или строго каждую мс если паралельно будут крутиться ещё несколько мение приоритетных задач? Тоже есть пару проектов где хотелось-бы строгие интервалы иметь
  2. Нет, такое решение не улучшит. Какя разница кто будет источником прерывания - компорт или внутренний таймер? Если винде надо будет обслужить другую задачу, например перерисовать гуи, то она запросто предержить обработку прерывания от компорта. Но если городить внешний контроллер, так пусть он и передает эти UDP паеты сам. Если на комп поставить голый линукс, то ситуация не лучше. Что для линукса, что для венды... чтоб получить жёсткие интервалы времени нужен бубен типа такого.
  3. Вообще в любом коде глобальные переменные - это шаг назад. Но когда пишешь ПО для мк с ограниченными возможностями ресурсами, то это вполне оправданный шаг. Вместо ОС-ных няшек использовать глобальные переменные вполне в норме. Если запись/чтение флага (или переменной) есть атомарная операция, то будет всё работать не хуже чем с семафором. А если доступ до флага это есть чтение-модификаци-запись, то тут нужно позаботится о том, чтоб обращение к флагу не было прервано (крит. секции, мютексы, или в конце концов запрет прерываний). А запирать обращение к глобальной переменной каким нить мютексом - уш лучше сразу использовать ОС-ные месаджи и флаги. И флаг глобальный все равно нужно постоянно проверять, а ОС-ный флаг проверяется за кулисами, и программеру не надо об это заботиться. например с ос-ным флагам задачу по гуи можно оформить в 1 строчку. void task() { for(;;) currentWindow->pressedKey(OSGetMessage(QUEUE_KEY, 0)); } как бы это выглядело с глобальной переменной void task() { for(;;) { if(keyCode != 0) { currentWindow->pressedKey(keyCode); keyCode = 0; } else OSTaskDelayMs(50); } } по мне, так гораздо кошерний первый вариант. по памяти программ и латентности тут оба варианта примерно одинаковы. А вот по памяти данных 2-й выгрывает. По реакции на нажатие клавиши, т.е. на обработку нажатия (можно сказать на скорость выполнения программы) 1 вариант выигрывает. Если у меня найдется свободное озу, я всегда использую 1 вариант.
  4. Ну.... я же говорю - каждый делает выбор для себя. вечный вайл int main() { init(); while(1) { //какойто полезный код...... по сути аналог планировщика задач в ОС } }
  5. ээээ..... ну например некий пульт: одна задача занимается клавиатурой, другая гуи, третья обмен по уарт, четвертая модбус, пятая 2-я линия модбус, шестая контроль аккумулятора...., ну и основная рабочая - обработка сигнала. и что с этого списка? конечно это всё прекрасно без оси будет работать. через свой for(;;). Но ос позволяет раздробить весь проект, выделить из него узкую задачу, например контроль модбус, и сфокусировавшись на этой задаче написать её раз и забыть про неё. Написав одну задачу по обслуживанию модбуса, запускаю два экземпляра этой задачи. Но, приходилось мне чужие тяжелые проекты поддерживать, расширять функционал. Писали фатаны :\m/: . Сишные "Атцы", презирающие с++ и ооп. Ну и? шаг вправо шаг в лево - траблы. Выявляются баги в ихнех самописных вечновайловых планировщиках. Есть и ОС индусами писанные, там тоже можно подчерпнуть немало траблов, но допустим µC/OS там уж всё вычещенно. ММдддаааа платная и дорогая. Чем FreeRTOS не вариант? всем миром тестится на всех платформах и во всех режимах. Я пока в этих осях багов не нашол. Да и на форуме по FreeRTOS скука.... о че там тусить, если проблем с ней нет? (хотя мож ни кто не пользует?) ps правильно где-то было сказано что после освоения ртос вы уже не захотите while(1) писать. И действительно..... понадобилось для простенького девайса на атмеге169 написать прогу - ткнул туда ос, а она возьми да влезь... да ещё и работает, и имею все прелести вытесняющей многозадачности и разделения ресурсов. что в этом плохова? Конечно есть бюджетные проекты и задачи там простые, однозадачные скажем, там и проц ставят 8-ног 1 кб пзу. там тока с++ или вообще асм без всяких ос. но если чуть посложнее.... и бюджет позволяет..... таже атмега128 - там не плохо уживётся ртос, ну а если вместо меги за теже деньги заложить стм32 - так там вообще ос без проблем. Если при разработке, понимаешь что с ос на заложенном камне будет тесно.... ну заложи проц чуть подороже. Щас благо дело маленькое удорожание проца дает несоизмеримобольшое увеличение вычеслительных ресурсов. Я не кого не собираюсь вербовать в ртосоводов и оопэшников. Каждый сам делает выбор для себя. Но заявления типа мне не понятны :laughing:
  6. вообще странно подобные заявления слышать. наверно они делаются ради троля. тут где-то был спор по поводу с++ на мк. Почему-то сразу пошел срач про ООП, люди почему-то считают что с++, ООП, СТЛ, шаблоны, паттерны и т.п. - это всё одно и тоже, синонимы. Конечно в с++ есть over9000 способов выстрелить себе в ногу, но это не значит что ооп не оправдан. Где-то ООП даёт ++, а где-то его бездумно используют создавая оверинженеринг. Надо уметь его готовить и использовать. "Лень - двигатель прогресса" "Хороший программист - ленивый программист" Каких проблем? Писать свой говновайл(1) планировщик - вот это проблема. Две оси использую - никаких проблем. Как может человек обсуждать вкус свинины, не разу не попробовав её. Или может он просто не умеет её готовить?
  7. А что мешает на каждый Task1..TaskN сделать отдельную очередь? TaskN дожидается пока ёвная очередь станет пустой, только после этого помещает новые данные. DoTask берёт данные из очереди методом xQueuePeek не удаляя их из очереди. после обработки удаляем данные из очереди, тем самым позволяя TaskN помещать туда новые данные.
  8. Имеется станция IR550A без внешнего термодатчика. В мануале написано что нужен "An external K-type thermocouple" (см картинку). Я ткнул термопару от мультиметра. Не знаю на сколько правильно показывает этот датчик, но через несколько нагревов оплётка у датчика выгорела. Где можно купить нормальный термодатчик для ИК станции?
  9. 2zebrox Так и делаю... более того могут быть и Д226В, Г, Д,Е,Ё,.... и будет в базе компонентов на всю абэвэгэдэйку. Нерациональности тут не вижу. Запихать всё в 1 - экономия на спичках. Потом сами запутаетесь. Тем более нужно генерировать БОМ - тут уж точно разделять.
  10. 1 Наверно это лучший из костылей. Но как быть для безымянных цепей, которые ад именует автоматом? Задавать имена в схеме? ну тоже самое награмождение ненужным текстом. 2 так потом потеряется и забудится... вообще не найти 3 так и делал, но при экспорте из схемы в пп удаляются классы. и если в схеме исправить имя цепи(или ад сам исправит имена после переназначения рефдесов, например с NetC1_2 на NetC17_2) .... по в пп тоже нужно переназначать классы 4... есть ещё варианты? А разве нет галочки типа "визибыл/анвизибыл дерективы"? Плохо ((
  11. AD9 На принципиально схеме наставлены всякие директивы (дифпара, Net Class). Эти директивы нужны только АД, мешают чтению схемы. Можно как нибудь их скрыть?
  12. Что за http://radikаl.ru ? Зачем тут кал? На этом форуме есть же нормальный способ размещения картинок. Зачем тут сылки на говносайты с сомнительным содержанием... со спамом, со свистелками-пирделками, с порнухой и прочим гАвном? ps в редакторе сообщения есть кнопка "вставить изображение", это вставка тока через всякие ссылки типа кал и т.п. Внизу есть кнопка "Загрузить". Грузи туда сразу свою картинку.
  13. Симуляция stm32 в IAR EW

    Я так понял что симулировать PLL или USART в IAR-e нет возможности. А таймера должны стимулироваться? В программе проинициализировал таймер, настроил обработчик прерывания таймера. В симуляции таймер на ведёт счёт и не происходит прерываний. Может не правильно что-то проинициализировал, а может симулятор не позволяет симулировать таймер. ps инициализация таймера RCC_APB1ENR_bit.TIM2EN = 1; // clokc on SETENA0_bit.SETENA28 = 1; // Enable IRQ N37 IP7_bit.PRI_28 = 13; // set prioritet 31 TIM2_CR1 = 0; TIM2_CR2 = 0; TIM2_SMCR = 0; TIM2_DIER = 0; TIM2_DIER_bit.UIE = 0x1; // on irq TIM2_EGR = 0; TIM2_CCMR1 = 0; TIM2_CCMR2 = 0; TIM2_CCER = 0; TIM2_CNT = 0; TIM2_PSC = 0; // TIM2_ARR = 22118; // 1 ms tick TIM2_DCR = 0; TIM2_DMAR =0; TIM2_OR = 0; TIM2_CR1_bit.CEN = 0x1; //on timer*/
  14. Как настроить BSD Editor? Вот создал новый проект в Eclipse из шаблона Hello Word + µС/OS. Открываю BSD Editor->Main->Settings->Advanced в Advanced есть две ветки - hal и uC/Os. В ветке uC/Os настраивается ос. Очень удобно. Создал новый проект с FreeRTOS. в Advanced есть одна ветка - hal. Ветки FreeRTOS нет. ОС настраивается руками в файле FreeRTOSConfig.h. Этот файл генерируется при Generate BSP. Потом руками в FreeRTOSConfig.h настраиваешь ос под свой проект. Но каждый раз при Generate BSP все настройки сбрасываются в "по умолчанию". Как бы в Advanced добавить ветку FreeRTOS со всеми флагами ос и с подсказками по каждому параметру как это сделано с µС/OS или с hal? Какой-то скрипт может написать или xml? Гуглирование не дало даже намека на то, как это делается?
  15. Хотел сам добавить этот вопрос, но не нашел нужную тему. Сорри.
  16. Спасибо. Если это вопрос уже задавался, да ещё и неоднократно, то нельзя ли его включить в FAQ. Была раньше тема для предложений включения вопросов в FAQ. Про редактор ПП там есть такой вопрос, а про схемный ненашол.
  17. Шары тыкал иголкой, не плавятся. Компаунда нет. блин.... поставил термопару рядом с чипом: 210°С, а бесконтактный датчик станции кажет 250°С. Проблему решил: воткнул термопару от мультиметра в станцию, благо есть вход для внешнего датчика и контроль преключил на внешний датчик. Процесс пошол вроде. Спасибо.
  18. Тоже интересно.... не могу найти такую фишку. в редакторе пп есть такая возможность.... перетаскивая компонент за ним тянутся дорожки. А вот в схемном редакторе не тянутся. в пикаде было такое что перемещая уго за пинами микросхемы тянутся соединения. а как в схемном редакторе альтиума так сделать? есть такая возможность?
  19. Есть паяльная станция с нижним подогревом ERSA IR 550 A. Нужно перепаять чипы в BGA корпусе (484 вывода, 23х23 мм). Плата 8-ми слойная. По всех слоях под чипом залит полигон. Удалось пару чипов с полпинка сдёрнуть и поставить новые. Но куча плат, с которых ни как не могу снять чип. термопрофиль поставил почти на максимум... и по t и по времени, станция максимум может греть чип 120 сек и до 250 °С. Ни как не могу расплавить шары. Одну плату оставил на долгое время на подогреве. разогрел всю плату до 190. потом врубил верхний нагрев..... все компаненты вокруг слетели, а чип бга мертво приварен к плате. Почему не расплавляются шары? У кого-нибудь были подобные проблемы?
  20. а уго при этом будет 4-х пиновое или 2-х?
  21. Я для таких кнопок рисую уго с 4-мя выводами. При рисовании схемы цепляю к любым двум притивоположным выводам. При трассировке, естественно при ручной трассировке, смотрю куда удобнее зацепить.. и меняю отдельно пины на пп (pin swaping ). Не пары, а пины. потом обновляю из пп схему.
  22. А что скармливать эсвээну из нисосвского проекта? понятно что свои исходники и ашки. Но чтоб на новом компе после чекаута не импортировать проекты в рабочее окружение? может workspace в свн скормить? Что в ворспейсе скормить? Всю папку .metadata? А <name>_bsp проект? Да ещё если используется какая нибудь µC/Os, то в bsp проекте куча всяких файлов от µСи (или от FreeRTOS) и от Hal-a.
  23. так при чём тут соф, альтера и стп? Проблема ещё до софа. Как я делал раньше. 1)Открываю СигналТаб (Не квартус, а именно сигнал таб установленный отдельно от квартуса). 2)Жму кнопку "Open" и указываю нужный stp. 3)Подключаюсь к девайсу 4)Запускаю захват. Что-то случилось с сигналтабом и при запуске, ещё до открытия stp и до подключения к девайсу, сигналТаб открывает какой-то проект. Ни как его не мог отучить. Потом каким то случайным образом отучил его от открывания проекта и сейчас всё нормально, при старте сигналтаба ни какие проекты не открываются, голый, пустой сигналтаб.
×
×
  • Создать...