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

arhiv6

Свой
  • Постов

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

  • Посещение

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


  1. Первый компонент - усилитель SBB2089Z. Второй - не разобрать маркировку. А ссылку дадите? Хочу посмотреть, какие параметры продавец написал. На алиэкспрессе похожая платка ищется по запросу "wideband power amplifier 1 ~ 930MHz, 2.0W". Мне теперь тоже интересно стало, что на выходе стоит. Выходной каскад питается от +12В. Обещают на выходе 33dBm на 10MHz, 32Bm на 512MHz, 30dBm на 930MHz, 29dBm 1000MHz.
  2. Если такой схемой пытались сократить число витков вторички, то почему на выходе просто не поставили мостовой выпрямитель?
  3. Можно понизить частоту SPI, используя больше линий данных. Есть же Quad SPI, но линий данных можно и больше сделать.
  4. Удалите куку topicsread Вопрос администраторам: проблема известная, по ней это уже не первый вопрос. Может быть добавить рекомендацию об очистке куков прямо на страницу "Bad Gateway"? Или вообще добавить на неё какой-нибудь JS скрипт, который будет удалять куку topicsread, если вдруг открылась эта страница?
  5. Почитайте про суперскалярность. Если не менять инструкции процессора, можно попробовать реализовать конвейер.
  6. Я тоже на первый взгляд отличий не вижу. Непонятно, зачем тогда меняли? Какие-то свои юридические заморочки?
  7. Вот такая новость появилась: FreeRTOS перешёл под крыло Amazon и выпущен под лицензией MIT Раньше была GPLv2 с модификациями, теперь MIT. Кто-нибудь, кто разбирается в лицензия, может пояснить какие это плюсы или минусы даёт? Вроде и раньше можно было исходники не открывать даже при модификации. Из плюсов пока только вижу - в предыдущей версии лицензии был пункт, что нельзя сравнивать производительность ОС по сравнению с другими, теперь, похоже, этот пункт убрали.
  8. У меня на этот транзистор есть. Запрашивал у производителя, просто на почту техподдержки писал. Отвечают сразу, всё нужное прислали. Попробуйте запросить, если не дадут - пишите, поделюсь.
  9. Правильнее отдать эту работу оконному менеджеру. Но если очень хочется, можно вот так попробовать: mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); protected: void moveEvent(QMoveEvent *event); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include <QDesktopWidget> #include <QDebug> #include <QtMath> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::moveEvent(QMoveEvent *event) { Q_UNUSED(event); int windowTopBorder = pos().y(); int windowBottomBorder = windowTopBorder + size().height(); int windowLeftBorder = pos().x(); int windowRightBorder = windowLeftBorder + size().width(); qDebug() << windowLeftBorder << windowRightBorder << windowTopBorder << windowBottomBorder; int screenTopBorder = 0; int screenBottomBorder = QApplication::desktop()->height(); int screenLeftBorder = 0; int screenRightBorder = QApplication::desktop()->width(); qDebug() << screenLeftBorder << screenRightBorder << screenTopBorder << screenBottomBorder; const int magnetDistance = 150; if (abs(windowLeftBorder - screenLeftBorder) < magnetDistance) { move(0, pos().y()); } if (abs(windowRightBorder - screenRightBorder) < magnetDistance) { move(screenRightBorder - size().width(), pos().y()); } if (abs(windowTopBorder - screenTopBorder) < magnetDistance) { move(pos().x(), 0); } if (abs(windowBottomBorder - screenBottomBorder) < magnetDistance) { move(pos().x(), screenBottomBorder - size().height()); } }
  10. Harbinger, какие впечатления сложились об этом фреймворке?
  11. Ищите СанПиН для своего типа рабочего места (скорее всего ваш случай это СанПиН 2.2.4.3359-16 и СанПиН 2.2.2/2.4.1340-03 если более 50% времени работаете за ПК), смотрите по каким нормам не подходит (как минимум отсутствие окон) и пишите заявление с просьбой предоставить помещение, соответствующее нормам. После того как ваше обращение зафиксировано (лучше передавать через секретариат с получением номера входящего документа, или, если не принимают, отправив заказным письмом с описью) если работодатель не реагирует, пишите в Роспотребнадзор.
  12. Делают. Но с интегрированными смесителями и синтезаторами у всех дорого и корпуса сложные: вот у Analog, у TI есть AFE7500.
  13. Тоже использую yEd (оффлайновую версию, но есть и онлайн). В отличии от простых рисовалок заточен для блок-схем, диаграмм состояний, UML и подобного.
  14. Подобные Analog Front-End (AFE) делают Analog Devices, Texas, Maxim. Не совсем понятны требования к микросхеме. Если нужны просто несущие может быть проще взять два синтезатора?
  15. Как я понимаю, для SST нужно добавить задачам приоритеты и возможность асинхронного переключения на более приоритетную задачу из менее приоритетной. Без этого на чистом си можно использовать простейшие планировщики, например этот.
  16. Да,похоже всё так. Не знаю, я же ещё толком и не работал с SST. Первое, что приходит в голову так: void task_ledBlinker_on() { led.on(); setTask(task_ledBlinker_off, onTime, 0); } void task_ledBlinker_on() { led.off(); setTask(task_ledBlinker_on, offTime, 0); } или так: task_ledBlinker() { led.toggle(); if (led.state()) setTask(task_ledBlinker, onTime, 0); else setTask(task_ledBlinker, offTime, 0); }
  17. jcxz, Forger, я не знаю, как правильно сделать, поэтому и спрашиваю совета на форуме. Вы подсказать можете? Или Вы сами тоже не знаете, но хоть что-нибудь написать так и чешется (например, шутку про колёса)? DASM, а можете рассказать, как у Вас реализовано? И под какой микроконтроллер?
  18. Смотрел я исходники ОС, но они все по похожему принципу сделаны - переключение между разными стеками. Вот например: для каждого потока выделен свой стек. Для переключения между двумя контекстами вызывается прерывание PendSV (при этом на стек складываются R0-R3) и в PendSV_Handler сохраняются оставшиеся регистры (R4-R11), потом вызывается функция os_context_switch_hook, которая возвращает указатель на стек другой задачи. С этого стека восстанавливаем (R11-R4) , переписываем LR и выходим из PendSV_Handler, при этом восстанавливаются (R3-R0). Всё, мы переключились на другую задачу/другой стек. А можете примерно так-же объяснить, что мне сделать для пререключения задач по методике SST? Выполняем мы задачу А. Так же через вызов прерывания PendSV хотим запустить более приоритетную задачу (запустить функцию). Попали в PendSV_Handler, сохранили (R4-R11) на текущем стеке. Всё, контекст задачи A сохранён. Как теперь правильно запустить задачу В? Сделать просто вызов LDR R1, =taskB, BLX R1 нельзя - функция будет выполняться в контексте прерывания. Как правильно сделать? Из прерывания если выйдем ( BX LR) мы попадём обратно в задачу А. Как мне выйти из прерывания и при этом запустить функцию taskB?
  19. Да, тоже вспомнил про эту тему, перечитываю. Но, насколько я помню, копкретной реализации переключения контекстов для SST там нет. О, Вы на практике используете SST? А под какие процессоры? Как указано в первом посте - ARM, Cortex. Пусть будет STM32F030 (Cortex-M0). Видел. Но насколько я понял, там использую один обработчик прерывания PendSV (без его вложенного вызова), и можно реализовать всего 2 уровня приоритетов - idle в основном цикле в main + все остальные задачи в контексте PendSV_Handler. Они будут выполняться синхронно, в порядке приоритетов. А в SST из статьи более приоритетные задачи могут асинхронно прерывать менее приоритетные. Пожалуйста, не нужно писать про FreeRTOS и KEIL RTX. Это отличные системы, с первой работал (и работаю), но в этом топике речь идёт о реализации SST.
  20. Как минимум, это интересно - попробовать разные подходы к построению ПО. А ещё есть мелкие контроллеры, у которых мало свободных ресурсов. Вот на них особенно интересно попробовать SST - тут при наличии вытесняющей многозадачности очень эффективное использование памяти.
  21. Прерывание в прерывании

    Super Simple Tasker - один из вариантов реализации вытесняющей многозадачности для микроконтроллеров. Как в нём работает асинхронное переключение на более приоритетные задачи написано в статье под рисунком 3. Для реализации SST нужна такая вещь: в функции-обработчике прерывания, после выполнения необходимого кода, нужно как-то сообщить микроконтроллеру, что с прерыванием закончили работать но из функции-обработчика не выходить. Т.е. нужно разрешить вложенные прерывания (одни и те же). В статье в примере для ПК это делается так: используется команда End Of Interrupt (EOI) - outportb(0x20, 0x20). Обычно она выполняется непосредственно перед выходом из функции-обработчика прерывания, но в SST после EOI вызывается диспетчер, прямо в контексте прерывания. Т.е. вызвав EOI, но оставаясь в контексте прерывания, мы разрешаем вложенные прерывания. Как это можно сделать для ARM (Cortex)?
  22. shavil, теперь нормально работает, спасибо. А в профилях пользователей редирект будет? Сейчас, если в любое время посмотреть последних 20 зарегистрированных пользователей, половина из них боты, которые регистрируются только чтобы в профиле спам-ссылку на свой сайт разместить. Я так понимаю, это для поисковиков делается. Если редирект туда добавить, это поможет сократить количество ботов?
  23. Есть опыт работы с этим источником и с другими моделями HYx00xD-2. У этой модели источника есть один минус в эргономике - на дисплее показывает или ток канала или его напряжение, не одновременно. Это неудобно если требуется часто менять напряжение или делать подстройку напряжения с контролем тока. А так хороший источник.
×
×
  • Создать...