• Msp430 внутренний операционный усилитель?

    @tugo
    Но теперь нужно использовать "операционный усилитель из состава микроконтроллера".
    Подскажите пожалуйста: что это значит и как это сделать?


    1. Сначала составляем схему с внешним ОУ. У меня есть легкие сомнения в работоспособности вашей схемы, поэтому я нарисовал свою.
    5daf7d3e83f8b584547673.png
    Еще можно посмотреть на схему этой платы
    https://www.sparkfun.com/products/12758
    https://cdn.sparkfun.com/datasheets/BreakoutBoards...

    У АЦП и ОУ микроконтроллера однополярное питание, поэтому входной сигнал от микрофона нужно поместить на уровень половины напряжения питания, чтобы не обрезался сигнал.

    2. Изучаем схему модуля ОУ в микроконтроллере в документе MSP430x4xx Family User Guide
    www.ti.com/lit/ug/slau056l/slau056l.pdf
    Figure 22−1. OA Block Diagram, страница 649

    Нужно записать определенные значения в регистры, которые управляют мультиплексорами и др. логическими элементами, чтобы довести сигналы инвертирующему и неинвертирующему входам ОУ и вывести выход ОУ на внутренний АЦП.
    5daf80a0ed1df276282365.png

    ОУ можно сконфигуририровать в один из нескольких режимов.
    Т.к. ОУ в 1-м пункте у меня включен в инвертирующем режиме, подошли бы режимы
    General-Purpose Opamp Mode и Inverting PGA Mode, которые задаются регистром OAFCx.
    Но, скорее всего, захочется самим устанавливать коэффициент усиления сигнала внешними резисторами, поэтому выбираем режим General-Purpose Opamp Mode. Т.е OAFCx = 0;
    В этом случае на схеме нам становятся неинтересным куча элементов.

    Дальше, конфигурируем OAPx = 0; (с какого входа брать сигнал на неинвертирующий вход) Сигнал берем с OAxI0.
    OANx = 1; (сигнал на инвертирующий вход берем с OAxI1)
    Включаем ОУ регистром OAPMx = 3;
    5daf86912219c468301026.png
    Дальше курим этот пункт, как вывести сигнал с ОУ на ногу на выход и подать на вход АЦП.
    5daf86feb1613395041634.png
    Наружу выводим, чтобы снаружи подсоединить резисторы, которые на схеме пункт 1.

    3. Открываем даташит на конкретный микроконтроллер и ищем ноги.
    5daf8e04b4b1a626670110.png

    Application Note www.ti.com/lit/ml/slap118/slap118.pdf - огонь. Даже если и для другой серии. Спасибо Dmitriy Mozgovoy
    Ответ написан
    Комментировать
  • Как называетсч двухканальная микросхема с дедтаймом?

    @tugo
    Half bridge ( или high and low side) gate driver with programmable (или adjustable) dead time
    Какое входное напряжение у вас?
    Ответ написан
    Комментировать
  • Как и какую информацию собрать при фатальной ошибке в Qt?

    @tugo
    1. Подключить к своей программе библиотеку логгирования. Рекомендую log4cplus.
    https://habr.com/ru/post/118165/
    Дружит с Qt. Логгировать все и вся.
    Логгер конфигурируется через текстовой файл конфигурации, который лежит рядом с приложением. В конфигурации задано какого уровня ошибки логгировать и куда (в файл, консоль, сеть).
    Уровни логгирования по важности TRACE > DEBUG > INFO > WARN > ERROR > FATAL
    При нормальной работе приложения к конфиге устанавливаете логгировать INFO сообщения и выше.
    Как только происходит что-то плохое, ваша программа падает - просите клиентов включить логгирование TRACE, завалить программу и прислать логи. Или если можете это сделать сами удаленно.

    2. Подключаете Google Breakpad https://maxsavenkov.livejournal.com/189460.html После падения берете краш-дамп и изучаете. Там будет видно в какой функции упали, это упростит поиск.

    Рекомендую начать со 2 пути, он побыстрее. Эти варианты не исключают друг друга, а дополняют.
    Ответ написан
    Комментировать
  • Как создать программу для работы с почтовыми серверами для отправки и получения сообщений (pop, smtp, imap)?

    @tugo
    Для примера, пусть язык будет С++.
    Ищем библиотеку,которая поддерживает то, что нам нужно (самим писать неразумно).

    Вот, что нашел на C++
    libmailcore.com
    https://stackoverflow.com/questions/1796472/cross-...

    Делаем оболочку на C++ какую можем.
    Варианты.
    1. Графический интерфейс
    2. Консольное приложение. Параметры передаются через аргументы командной строки.
    3. Консольное приложение. Аргументы вписываются в файл конфигурации, который лежит рядом с приложением.
    Имя файла передаем через аргумент командной строки.
    Можно сделать 3 варианта, препод заценит (может быть).

    Дальше, подключаем найденную библиотеку к себе в приложение, используем ее API. Получаем результат.

    Допустим язык Python.
    Что-то есть для него.
    https://pythonspot.com/read-email-pop3/
    https://docs.python.org/3/library/poplib.html
    https://stackoverflow.com/questions/43631176/read-...

    Пробуем, если результат есть - делаем GUI.

    Еще вопрос, как нужно демонстрировать программу. Если на флешке принесли, запустили - с Python может быть сюрприз. Надо узнать, как демонстрировать.
    Ответ написан
    Комментировать
  • В какой среде разрабатывают интерфейс для программ на C++?

    @tugo
    Qt - библиотека. Не среда.
    Поделена на компоненты для работы с сетью, XML, JSON, SQL базами, OpenGl, звуком и еще много чем.
    Есть компоненты для создания визуального интерфейса.
    В Qt есть 2 компонента для создания интерфейса Widgets и QML.
    Widgets были первыми. Потом, когда нужно было отвечать требованиям времени, придумали QML.
    Но widgets не устарели, не стали плохими. Они проще в понимании.

    Определитесь с задачей. Какие возможности интерфейса вам требуются. Спросите на Тостере, можно ли это сделать на Widgets. Погуглите интерфейсы созданные с помощью Widgets, может вас устроит.
    QML для новичка не рекомендую.
    Ответ написан
    Комментировать
  • Как передать в функцию переменные и вернуть их?

    @tugo
    Эти переменные оформите в с структуру.
    int number_rocket[4];
      int amount, min_fuel = 0, min_E = 0, min_mass = 0, max_umass = 0, max_speed = 0;

    Структуру передавайте в функцию по ссылке
    Ответ написан
    1 комментарий
  • Как запитать что-либо от аккумуляторов 18650?

    @tugo
    Для защиты от переразряда берите такие платки на aliexpress "2s li-ion protection board" .
    2s означает - "2 in series". Есть также платки 3s, 4s.
    Они могут и правильно заряжать, что в общем удобно, достаточно простого источника напряжения. Правда он должен выдавать стабильные 7.4В (для двух Li-ion элементов).
    Ответ написан
    Комментировать
  • При переносе проекта с командой на Bitbucket?

    @tugo
    Насколько я понял, владельца (owner) у репозитория поменять нельзя. Если хочется именно сменить владельца, то тогда вручную - склонировать репозиторий, зайти под новым аккаунтом, создать новый репозиторий и залить туда требуемый.
    Коммиты не потеряются.
    Все остальные вопросы решаются через настройки репозитория:
    RepositoryName -> Settings -> User and group access
    Ответ написан
  • Контроль версий при разработке. Что легче для новичка?

    @tugo
    Да, поиспользуйте git немного, поищите нормальный GUI для Windows (у меня 3 разные стоят) и переходите к Mercurial.
    Ставьте TortoiseHG tortoisehg.bitbucket.org
    Тогда ощутите.
    Subversion не надо, зачем к плохому приучаться.
    Ответ написан
    Комментировать
  • Как без боли собрать Qt проект под Raspberry?

    @tugo
    Я собирал Qt на Raspberry.
    https://wtf-per-second.blogspot.ru/2015/08/qt5-ras...

    Но потом нашел уже собранную версию.
    Ответ написан
    Комментировать
  • Что не так с QT QPixmap?

    @tugo
    Пользуйтесь новым синтаксисом сигнал/слот https://wiki.qt.io/New_Signal_Slot_Syntax/ru
    Ответ написан
  • С помощью чего реализовать календарную ленту в Qt?

    @tugo
    1. Найти уже готовое, например https://www.kdab.com/kd-chart/
    2. Встроить QWebView, в нем выполнять JQuery код, реализующий вашу диаграмму. Гуглите "gantt chart jquery"
    3. Сделать самому. Разрабатываемый класс будет наследником QWidget и состоять из других виджетов (QLabel, QCombobox и т.д.). Настраиваете размещение этих виджетов, их внешний вид (у стандартных виджетов можно сильно менять внеший вид - мама не узнает) и поведение.
    Ответ написан
    Комментировать
  • Разработка Qt - структура Qt-приложения.?

    @tugo
    Посмотрите это видео. Вот так, для начала, должна выглядеть структура вашего приложения.
    1. Для построения графического интерфейса пользуйтесь Qt Designer (а не размещая врукопашную виджеты, как это делаете вы).
    2. В первом, самом простом приложении, должно быть 4 файла исходных кодов.
    main.cpp
    MainWindow.h
    MainWindow.cpp
    MainWindow.ui
    // MainWindow.h
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget * parent = 0);
        ~MainWindow();
    
    signals:
    
    protected:
    
    private:
        Ui::MainWindow * ui;
    };


    3. Если количество элементов в MainWindow становится слишком большим, выделяйте элементы в отдельные классы, наследники класса QWidget.
    Допустим, у вас в MainWindow расположен элемент Tab Widget, в котором 2 вкладки.
    Логично вынести логику работы элементов в каждой вкладке в свой класс, т.е. у вас в проекте должно появиться еще 6 файлов:
    MyTabWidget1.h
    MyTabWidget1.cpp
    MyTabWidget1.ui

    MyTabWidget2.h
    MyTabWidget2.cpp
    MyTabWidget2.ui

    // MyTabWidget1.h
    #pragma once
    
    #include <QWidget>
    
    namespace Ui {
    class MyTabWidget1;
    }
    
    class MyTabWidget1: public QWidget
    {
        Q_OBJECT
    
    public:
        explicit MyTabWidget1(QWidget * parent = 0);
        ~MyTabWidget1();
    
    private:
        Ui::MyTabWidget1* ui;
    };


    В классе MainWindow используются объекты классов MyTabWidget1 и MyTabWidget2.
    Логика работы MainWindow резко похудеет, все перенесется в MyTabWidget1 и MyTabWidget2.

    4. Дальше. Избегайте реализации логики работы класса GUI. Эти классы (MyTabWidget1 и MyTabWidget2, MainWindow) должны быть простыми прокладками, трансляторами сигналов от пользователя в логику работы приложения и визуализаторами состояния приложения пользователю.
    Начинаете логику работы приложения реализовывать в отдельном классе.
    Обмен информацией между Logic <--> MainWindow возложите на сигналы-слоты.
    Ответ написан
    Комментировать
  • Характеристики операционного усилителя ниже заявленных?

    @tugo
    Каким осциллографом смотрите? Чтобы увидеть прямоугольный сигнал частотой X, полоса осциллографа должна быть не ниже 10*X.
    Ответ написан
  • Отладочная плата для обучения МК/ПЛИС/etc?

    @tugo
    Забейте на PICи, уже не актуально. Конечно, ими продолжают пользоваться и закладывать в изделия - кто по инерции мышления (разработчика или руководства), кто по требованию заказчика. Мода на них прошла, хотя ничего не могу сказать про них плохого.
    Из микроконтроллеров общего назначения, самая популярная сейчас архитектура Cortex (Cortex-M3, Cortex-M4) - это с точки зрения поиска работы.
    Представители STM32, LPC17xx.
    Отладочная плата www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF...
    Ответ написан
    2 комментария
  • Студент и Низкоуровневое программирование?

    @tugo
    Идете на hh.ru, ищете вакансии по ключевым словам "микроконтроллер | stm32 | msp430 | embedded | atmel | avr | arm | cortex" (т.е. по любому из этих слов) - у меня получилось 111 вакансий в Москве. Из них еще мусор всякий нужно выкинуть.
    Ищете вакансии по слову "C#" - 510 вакансий.
    "Java" - 917 вакансий.
    Т.е. вакансии есть, но их меньше. Сравните средние зарплаты. Что-то мне кажется, сравнение будет не в сторону МК.

    Изучайте "большое программирование" - алгоритмы, компиляторы, архитектуру ПО, методологии разработки и все то, чем пичкают студентов программистских специальностей. А то через несколько лет можете оказаться не удел и придется сильно догонять.

    Смотрите, как развивается техника www.black-swift.ru Место, где можно потыкать паяльником, пописать на С стремительно сжимается.

    Если всерьез решили заняться микроконтроллерами, изучайте С++. Это легальный способ улучшить качество своих программ. Не верьте тем, кто говорит, что в С++ в МК не место (якобы оверхед, все дела).
    Есть еще надежда на Rust. Но когда он дорастет до промышленного применения...
    Ответ написан
    3 комментария