Задать вопрос
  • Генератор случайных чисел ИНОГДА (очень редко!) возвращает NaN?

    adeshere
    @adeshere Автор вопроса
    РАН, Фортран, временные ряды
    Спустя полтора года, завеса тайны все-таки начала спадать!
    Во-первых, благодаря вот этому совету Дмитрия Чернова, баг удалось локализовать. А именно, Дмитрий предположил, что проблему надо искать в контексте x87 FPU, и что добавление
    пары asm- команд
    Прямую вставку asm- команд в код мой фортран-компилятор не умеет, но все необходимое делает ключ Qfp-stack-check
    в подозрительных местах приведет к вылету программы по Access Violation именно в том месте, где что-то пошло не так. А не спустя какое-то время, когда я снова полезу в FPU и получу Nan, например, в ГСЧ. Эта идея сработала, и я получил Access Violation в совершенно безопасной (как мне казалось)
    функции
    SUBROUTINE SCREEN_PUTL0_TIME(TEXT)
    USE ABD_INC;  USE HEADERS
    character, intent(in) :: text*(*)
    integer*4, save :: isw=0
    c
    c     При самом первом вызове таймера isw=0, функция вернет 0
    c     При последующих (isw=1) - вернет интервал от момента инициализации
    t=timer_mm(5,isw) 
    isw=1
    if (t < $Screen_counter_time) return
    c    В крайнем  случае (если в момент начала внешнего цикла таймер уже
    c    инициализирован) функция первый раз напечатает % сразу при старте,
    c    а не через $Screen_counter_time после запуска цикла
    c   
       call screen_putl0(text)
       t=timer_mm(5,0)         ! Реинициализация таймера после печати строки
    end

    Эта функция печатает на экран % выполнения (он передается в строке TEXT), но с интервалом не менее $Screen_counter_time. Для проверки времени, прошедшего с прошлой печати, вызывается самодельный таймер t=timer_mm(5,isw) Первый параметр функции - это номер таймера (их там у меня целый массив для разных нужд). А второй параметр работает так: если isw=0, то таймер засекает время, а в остальных случаях возвращает число секунд, прошедших с момента инициализации счетчика. Ну вот так было когда-то сделано, чтобы обойтись одной функцией вместо двух....
    Таким образом, когда я дергаю инициализацию таймера, то его возвращаемое значение меня не интересует. Именно это и происходит в предпоследней строке кода выше:
    t=timer_mm(5,0)
    Результат выполнения функции как бы присваивается переменной t, но больше она нигде не используется . Как оказалось, именно здесь и была зарыта собака.

    А дальше уже было проще. В коде под спойлером у меня есть вызов функции типа real*4, от которого мне был нужен только побочный эффект (инициализация таймера), а вот возвращаемое значение функции нигде не используется. В принципе,
    это легально
    По идее, компилятор в такой ситуации должен после вызова функции восстановить стек x87 FPU, а возвращаемое значение никуда не копировать. В других местах кода у меня есть аналогичные вызовы (когда возвращаемое значение не используется), и это не приводит к каким-то багам. Ну и язык официально нигде не требует, чтобы возвращаемое значение функции обязательно было куда-то использовано ;-)

    Но как оказалось, именно это и провоцировало проблему. Этот фрагмент библиотеки у меня состоит из кучи очень небольших (5-10 строк) взаимосвязанных функций с частично повторяющимся кодом. Оптимизатор делал из них жуткое спагетти, дробя эти функции на еще более мелкие фрагменты и инлайня их направо и налево. И, видимо, где-то в ходе этих оптимизаций он "забывал" восстановить (очистить?) стек FPU.

    В общем, для исправления бага оказалось достаточно заменить локальную переменную t на глобальную. Про нее оптимизатор не знает - будет ли она нужна, или нет. Поэтому он просто вынужден извлекать из сопроцессора результат FP-вычисления, чтобы запихнуть его в это место ;-)

    Огромное спасибо Дмитрию, который сначала выдвинул правильную версию происхождения бага, а потом помог его точно локализовать и убрать! Тестовая программа работает уже час и пока ни одного Nan-а не появилось. ;-)
    Ответ написан
    Комментировать
  • Как получить исходные сигналы спутников ГЛОНАСС?

    @pfg21
    ex-турист
    ищи самодельный приемник gps.
    https://habr.com/ru/articles/789382/
    https://lea.hamradio.si/~s53mv/navsats/theory.html
    необходима специальная аппаратная схема
    если попроще, то можно взять модуль жпс с выводом RAW-значений от систем синхронизации, это конечно несколько другое.
    в андроиде исходные сигналы жпс не получишь, он на такое не задумывался.
    все гуглится - ищи и изучай.
    Ответ написан
    Комментировать
  • За счёт чего спутники и космические станции удерживаются на орбите?

    @rPman
    Кто вам сказал что спутники не падают? весь смысл в том что они именно падают, и чтобы не встретились с планетой их разгоняют до первой космической скорости, в результате они пролетают мимо земли с той же скоростью с какой на нее падают - при достижении баланса этих скоростей получается что спутники летят вокруг земли по круговой траектории, бесконечно падая но так и не встречаясь с землей.

    Веселее всего на геостационарной орбите -скорость движения спутника равна скорости оборота планеты вокруг своей оси, получается спутник висит над одной и той же точкой на планете.

    При превышении скорости или изменении вектора скорости круговая траектория меняется и становится вытянутой, вплоть до ухода от планеты (вторая космическая скорость)

    Чтобы спутники не сталкивались - за ними следят и рассчитывают траекторию полета чтобы этого не случилось (или наоборот случилось специально - это уже было)
    Ответ написан
    Комментировать
  • Откуда электронные часы знают точное время?

    @pfg21
    ex-турист
    в обычных часах нет источника точного времени.
    внутри обычно кварц на 32768 герц с примерной точностью +- пара секунд в сутки.
    для обычной жизни такой точности хватает за глаза.

    точное времени сейчас делается через интернет, систему GPS, сотовую связь.
    раньше использовали сигналы проверки времени, распространяемых через радиочастоты.
    Ответ написан
  • Зачем поверяются датчики сопротивления?

    @nehrung
    Не забывайте кликать кнопку "Отметить решением"!
    1. Исследования, разработки и производство в широком смысле возможны только на основе измерений.
    2. Измерениям можно доверять, если делать их точными измерительными инструментами. Кроме них, существуют и индикаторы с точностью плюс-минус валенок (например, деревянная школьная линейка).
    3. Убедиться, что измерительный инструмент является точным, можно путём сравнения его с заведомо точным эталоном. Это и есть поверка. А вот индикаторы разрешается не поверять, по понятным причинам.
    4. Если ваши терморезисторы поверяются, значит, они относятся к классу измерительного инструмента, а не индикаторов. Отнести какой-то инструментарий к определённому классу можно по совокупности множества параметров - спросите у метрологов, они объяснят.
    Ответ написан
    Комментировать
  • Как максимально просто реализовать запуск программы на компьютере по нажатию механической кнопки?

    hint000
    @hint000
    у админа три руки
    https://www.google.com/search?q=big+button+usb&tbm=isch

    А ещё можно взять клавиатуру с доп.кнопками, подпаять проводки к контактам, например, кнопки e-mail, присоединить большую кнопку и в настройках Windows назначить желаемую программу вместо почтового клиента. И никакого программирования. :)
    CiCYi.jpg
    Ответ написан
    1 комментарий
  • Что можно подарить радиолюбителю, не новичку?

    @evgeniy_lm
    Я в этом плохо разбираюсь

    Все, дальше стоп, ничего что касается его хобби дарить не стоит, в 99,99999% случаев вы будите выглядеть глупо. Здесь ни кто не знает этого человека и ничего вам посоветовать не может, все будут советовать то что хотят они.

    Сам сначала хотел посоветовать хороший 3D принтер, такому подарку будет рад любой самодельщик, но потом подумал, что: 1. Возможно он у него уже есть; 2. Дарить фуфло за 400-600$ дело не благодарное, а на 1000-1500$ вы явно не рассчитываете; 3.Вы сами в этом не разбираетесь по этому без проблем можете влететь на бабки.

    Главное вы должны понимать, что радиолюбитель такой же человек как и вы и у него есть такие же потребности как и у вас.
    Ответ написан
    Комментировать
  • Возможно ли в цифровом виде считать показания с датчика этого прибора?

    @pfg21
    ex-турист
    купить термостат с интерфейсом 485. он будет стоит некоторых денег, но гораздо меньших чем усилия в написании прошивки и последующее выковыривание багов.
    тем более в условиях постоянно работающей штуки, управляющей некоторым процессом.
    Ответ написан
    Комментировать
  • Как подключить экран фотопарата? сделать видео вход на экран от CAMEDIA C-5060?

    Zoominger
    @Zoominger
    System Integrator
    Почитайте специализацию на экранчик.
    Посмотрите, какой там коннектор используется.
    Сколхозьте свой коннектор, только учтите, что где-то будет подаваться видеосигнал, а где-то - питание.
    Напишите свой драйвер для работы этого экранчика под Windows.

    Ну или просто на Али закажите за копейки полностью аналогичный, но уже с распаянным HDMI.

    spoiler
    И да, под женскими никами писать это год эдак 2005-ый, моё почтение.
    Ответ написан
    Комментировать
  • Как написать программу для моделирования электрических цепей?

    @VT100
    Embedded hardware & software.
    • Изучаете язык SPICE.
    • Делаете парсер языка в топологию и стоимости путей (номиналы компонентов).
    • Парсите топологию в матрицу (или - матрицы?) на основе закона Ома и правил Кирхгофа.
    • Опционально - упрощаете матрицу или топологию на основе замены "звезда<>треугольник".
    • Решаете матрицу(ы).
    • Смотрите исходный код ngspice и бьётесь головой о стол.
    • Повторяете до достижения приемлемого результата.


    P.S. Если Вы - программист, вперёд!
    Если электронщик - выберите программу по душе и изучайте её. P.P.S. В том смысле, что не надо делать инструмент, если не планируете заниматься их изготовлением.
    Ответ написан
    Комментировать
  • Вощможно запустить электронику после 10 лет простоя?

    anthtml
    @anthtml
    Системный администратор программист радиолюбитель
    Есть ГРП - газовый распределительный пункт. В нем установлена система телеметрии

    На этом точка. Все аппаратура завязанная на работу с безопасностью, это строжайшее следование инструкциям и регламентам производителя, а также местных технадзоров.
    Скорее всего у всех датчиков уже истекли сроки поверок, значит без новых поверок их эксплуатировать уже нельзя, по контроллерам возможно тоже.
    Если по инструкции условия хранения блоков/модулей допускают разброс температур и влажности за 10 лет, то возможно им и не особо поплохело.
    Но тут опять же другая медаль: согласится ли технадзор такое вводить, а горгаз обслуживать, бо у блоков/датчиков, как и у газовых плит 10 +3-5 продления с даты изготовления
    Ответ написан
    1 комментарий
  • Вощможно запустить электронику после 10 лет простоя?

    @lonelymyp
    Хочу вылезти из минуса по карме.
    За 10 лет там могло сдохнуть всё что угодно, по хорошему надо каждый блок или датчик перепроверять все клеммы протягивать. по факту это будет как заново сделать монтаж. Если пункт был тщательно закрыт, не отсыревал, то шансы на успех есть.
    Фиг знает... если заказывать работы в сторонней фирме, то возможно ценник будет как купить новый.
    Ответ написан
    1 комментарий
  • Может ли сгореть это устройство?

    gbg
    @gbg Куратор тега Электроника
    Любые ответы на любые вопросы
    Это устройство может не только обжечь, а натурально убить, если нарушится изоляция - потому что в импульсных блоках питания на GND уже есть 110 вольт из розетки через Y-конденсатор.

    В медтехнике применяют специальные источники питания с двойной изоляцией.

    Так что если вы хотите поиграться, пользуйтесь Power Bank
    Ответ написан
    3 комментария
  • Реализация автополива с Arduino, если ты ничего не знаешь?

    @deliro
    Раз https://youtu.be/B0893sJCs44
    Два https://www.youtube.com/watch?v=3suqsclnWiI
    Да и в целом три https://alexgyver.ru/

    Буду благодарен, если подскажите, как проблемы могут быть с реализацией такой системы и что мне понадобиться.
    В голове звучит как-то так - Arduino, клапан (Открытие/Закрытие воды) и датчик температуры, влажности и времени, но полагаю, что на практике - это будет непросто. Хотелось бы ещё взаимодействия с API.

    Arduino Nano для контроля. Ничего другого типа Uno не бери. У нано очень удобная посадка на макетку, она дешевле и по ресурсам тоже самое
    Макетка
    Рассыпуха в виде резисторов разных номиналов, кондёров и прочего
    Термистор не нужен, если на основе температуры ничего не происходит (а у тебя, кажется, так и будет)
    Помпа(ы) для прокачки воды
    Реле или MOSFET'ы для контроля помпы/освещения/открытия окон. Потому что через ардуину нельзя питать ничего мощнее светодиода
    Клапаны на соленоидах, если разные растения требуют разного уровня влажности и разного гистерезиса. Это дорого
    Или клапаны, которые регулируются руками. Неточно, нетехнологично, зато дёшево
    Датчики влажности с драйверами. Бери с запасом, они быстро выходят из строя
    Датчик реального времени, если системе важно не только опираться на данные датчика влажности, но и на прошедшее время и система почему-то будет часто вырубаться (кратковременное отключение электричества). В целом он не очень нужен
    Дисплей по желанию для отображения данных / настройки системы вручную кнопками
    Кнопки, если хочется настраивать вручную, а не через код (например, текущие данные с датчика влажности принять за сигнал к поливу, изменить время опроса датчиков, время полива и т.п.)
    Батарейный отсек например для 18650 с контроллером питания, если хочется питать ардуину автономно

    Взаимодействие по API (если подразумевается что-то с HTTP, JSON и т.п.) — сложно и непонятно зачем. Но если надо, то надо вайфай для ардуины, реализовывать HTTP и вот это всё. Вероятно, проще взять 2.4ГГц радио трансиверы и общаться ими. Или даже подключить ардуину по USB к компу, слать по Serial данные, а ПК уже использовать для того, для чего ты хотел бы использовать API
    Ответ написан
    3 комментария
  • Я новичок, как изучать микроконтроллеры AVR если их под рукой нет?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Выше подсказали протеус.
    Ну и зря вы на почту россии напраслину возводите.
    Примерно 2 недели и из китая приходит в белгородскую область, во Владик или Красноярск еще быстрее
    Ответ написан
    2 комментария
  • Я новичок, как изучать микроконтроллеры AVR если их под рукой нет?

    никак не могу даже определиться где все это добро купить в России

    Просто возьми ардуинку. Купить можно много где. В чипидип есть в принципе всё, но там конечно дороже, чем на али.

    Полноценных эмуляторов нет и не может быть, тк нужно симулировать работу всех электронных компонентов.
    Ответ написан
    Комментировать
  • Я новичок, как изучать микроконтроллеры AVR если их под рукой нет?

    Proteus.
    И с али заказать сами мк с программатором.
    Ну или поупражнятся в самостоятельном изготовлении.
    И по одной посылке о доставке не судят.
    Ответ написан
    Комментировать
  • Каков путь в робототехнику?

    Любой набор ардуино, пробуете писать код. Берете любую платформу (шасси)- пытаетесь программировать. Ну а дальше уже более грамотные подскажут..
    Ответ написан
    Комментировать
  • Как расчитать мощность микроконтроллера?

    Stalker_RED
    @Stalker_RED
    Умножьте максимальный потребляемый ток и напряжение из даташита, и получите максимальную мощность.

    Но учитывайте, что пиковое потребление будет далеко не всегда, а в моменты "сна" контроллеры могут потреблять совсем небольшие токи. (пример).
    Ответ написан
    Комментировать