• Делаем бесконечную карту памяти для PS1
    +2

    (минутка занудства) тёплое — это тёплое, не надо путать его с мягким.
    Флешки с SPI-интерфейсом бывают и с NOR внутри, и с NAND (у этих объемы от 0.5 до нескольких гигабит). Так что SPI FLASH — штука несколько абстрактная.

  • Хакаем CAN шину авто. Мобильное приложение вместо панели приборов
    0

    Надо купить ELM327, подключить его к компу (с нормальным терминалом экспериментировать гораздо удобнее) и проверять…
    Кажется мне, необходимо и достаточно раздела Using J1939 в доке. Ну и фильтр настроить надо. Но я, надо сказать, не настоящий сварщик, с кан-шиной общался только БЕЗ этой elm.


    А программу для телефона придётся самостоятельно писать. Ничего особо сложного, отправка десятка строчек в порт и парсинг двух ответов с отображением результата, но такой программы точно никто ещё не делал.

  • Идем по приборам
    0

    Очень интересно, спасибо. Местами, правда, очень напоминает "теперь рисуем оставшуюся часть совы", но в любом случае большое спасибо.


    Вопрос по теме: а что, в приборках у программы нет контрольной суммы? Любой желающий модифицирует что угодно, и оно запускается?


    Я просто чуть-чуть интересовался работой блоков управления двигателем — там контролька на контрольке, и, вроде как, сверху ещё и подписью прикрыто (на самых последних разработках).

  • Идем по приборам
    0

    Так оно и есть. У Вас в том самом кусочке новое значение сравнивается с неким r17, делённым на 1000. Откуда берётся r17, на том кусочке не видно.

  • На корпусе вашего компьютера напряжение 110 Вольт
    +1

    Точно так же. Надо учитывать, что эти два конденсатора не идеально одинаковые, да и утечки тоже имеют место.
    Проверил по такому случаю БП от старенького зенбука. Формфактор похож на яблочный, третьего контакта в вилке нет. Держусь рукой за разъем — между ним и землёй 24 вольта (неприятных ощущений нет). Не держусь — 57 вольт. (всё остальное "стекает" через мультиметр).

  • На корпусе вашего компьютера напряжение 110 Вольт
    0
    Насколько я понимаю система из системника и стеллажа является конденсатором и из-за этого все и происходит.

    Полистайте https://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%91%D0%BC%D0%BA%D0%BE%D1%81%D1%82%D1%8C (формула плоского конденсатора) и https://ru.wikipedia.org/wiki/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D0%BE%D0%BD%D0%B4%D0%B5%D0%BD%D1%81%D0%B0%D1%82%D0%BE%D1%80 (формула импеданса конденсатора)
    У меня получается, что эта емкость измеряется в пикофарадах, и как-то "прилично" через неё щипать не должно.


    Ну и первый же вопрос, который должен возникать "у меня куча дорогой техники, не сделать ли мне нормальную проводку дома" ?

  • На корпусе вашего компьютера напряжение 110 Вольт
    +1

    Ох, беда-беда.


    На пальцах. Между точками А и Б — максимум 20 сантиметра. Между точками Б и Ц — три фута. Найти между А и Ц от 80 до 130 сантиметров (в зависимости от фазы луны в розетке в данную конкретную миллисекунду) сами сподобитесь?

  • На корпусе вашего компьютера напряжение 110 Вольт
    +2
    Приложил схему фильтра бп

    Вы б сюда эту схему приложили.
    Превьюшка мелкая, но насколько я могу её рассмотрать — схема абсолютно симметричная (как и должно быть). От переворачивания она останется абсолютно такой же, как была.

  • Алгоритмы рандома
    0
    использовать std::random_device для получения зерна лучше чем от time(NULL), однако в случае с компилятором MinGW в Windows функция практически не работает

    Вот на эту тему хотелось бы подробностей.
    Пока что нагуглилось что оно RESOLVED FIXED
    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85494
    Опс. Там target=10.0

  • Алгоритмы рандома
    +2
    Так нельзя писать по двум причинам:

    По трём. Есть большая вероятность, что результат (rand()<<16) приведётся к 32-битному int (где-то, кстати, есть 64-битный инт?). Ещё один сдвиг на 16 от него ничего не оставит.

  • Алгоритмы рандома
    0

    Алгоритм из дума уж больно похож на https://xkcd.com/221/
    :-)

  • Расшифровка данных в CAN шине VW Polo sedan
    –1

    Не очень понятна мотивация выкладывать данные для неизвестного дяди, извините.
    Тем более, если верить реддиту (eurosens — это вы?) дядя получает за подобную работу деньги.

  • Расшифровка данных в CAN шине VW Polo sedan
    0

    Рекомендую начать с триллера от Miller & Valasek. Сходу книжка не нагугливается, но где-то в сети должен лежать pdf с кучей интересной информации.

  • Расшифровка данных в CAN шине VW Polo sedan
    0

    если вам для диагностики, а не по прямому назначению, есть решения подешевле

  • Пузырьковый дисплей на ардуино
    0

    Ох. Duty Cycle и Direct Current похожи только на первый взгляд.
    А если б там было падение на ключе 40 вольт при токе "примерно 340 мА" на канал, получилась бы неплохая грелка на сотню ватт.

  • Пузырьковый дисплей на ардуино
    0

    Например, https://www.st.com/resource/en/datasheet/uln2001.pdf 10-я страница.
    VT100 в какой-то другой документ смотрит, но порядок цифр примерно одинаковый.

  • Rust Embedded. Разработка под процессоры Cortex-M3 на примере отладочной платы STM32F103C8T6 (Black Pill)
    0
    И после всего оказывается что ещё и CAN не доступен
    Что значит недоступен? То, что готового драйвера нет, и придётся самому с регистрами работать?
    Ну так это статья "пишем хелловорлд". Для нормальных боевых проектов всё равно придётся писать свой код со своими азартными играми и продажными женщинами.
  • Rust Embedded. Разработка под процессоры Cortex-M3 на примере отладочной платы STM32F103C8T6 (Black Pill)
    0

    Маленький проект проще скопипастить с другого маленького проекта со всеми его настройками.
    Ну и в кейлах-иарах в package'ах, мягко говоря, далеко не все возможные библиотеки представлены.

  • Rust Embedded. Разработка под процессоры Cortex-M3 на примере отладочной платы STM32F103C8T6 (Black Pill)
    +2

    Подозреваю, это просто китайские гении маркетинга придумали "дешёвую блэк пилл", впаяв на новую плату старый контроллер. О таком странном гибриде только сейчас узнал.


    UPD. извините, соврал. Картинки "black pill STM32F411" и "black pill STM32F103" заметно различаются.

  • С++, метапрограммирование и регистры микроконтроллера
    0
    В общем, либо не до конца понял эту идею

    +1
    У меня серьезные подозрения, что вышеприведённая конструкция работает только по совершенной случайности — потому что из двух weak'ов первым линкеру подсовывается правильный (не стандартный-пустой).

  • С++, метапрограммирование и регистры микроконтроллера
    0

    Пользуйтесь компиляторами, которые умеют C++14

  • Древности: цифровая кассета как аудиофильский формат
    +1
    напряжение сильно ниже требуемых 10 вольт. Виновными оказались два сопротивления.

    f15, Константин, чисто из любопытства: что это за резисторы такие? В моём понимании, резистор, если его не перегружать, штука вечная.

  • Древности: цифровая кассета как аудиофильский формат
    +2

    При работе за столом полноценная модель с ручками на порядок удобнее всех этих переносных недоприборов. За ту же цену, причём, характеристики будут лучше.


    Эти устройства надо брать, если надо отлаживаться в "естественной среде обитания" устройств. Или если гальваноразвязка с сетью нужна.

  • Древности: цифровая кассета как аудиофильский формат
    +2

    Имхо, для хоббийных занятий (да что уж там, для изрядной части профессиональных) достаточно пары каналов. Отказ от 3 и 4 каналов позволяет снизить стоимость процентов на 20-30. Ещё процентов 30 можно сэкономить, отказавшись от полосы 100 МГц. 50 МГц будет достаточно, чтобы проверить источники питания, а для аналоговой техники — вообще, с гигантским запасом.


    Цифровые шины, если возьмётесь за реверс, лучше захватывать saleae и аналогами. Софт-анализаторы типа saleae или sigrok гораздо приятнее, чем поделия из комплекта осциллографов.


    PS а ещё можно расширить хобби на собирание древней измерительной техники. Она тоже необычайно красива и интересна. Дорого только (глянул ебей: 20-летний тектроникс стоит как современная китайская балалайка).

  • Трактат о Pinе. Мысли о настройке и работе с пинами на С++ для микроконтроллеров (на примере CortexM)
    0
    Я полагаю так, что если между LDREX и STREX было прерывание, то STREX не сработает

    Да, всё верно. Это подтверждается и экспериментами (см. на форуме) и документацией (ссылка выше).


    А вот про любое обращение к памяти neiver на easyelectronics написал зря, и его там в комментариях поправляли. А Вы это перепечатали...


    Ну и код у Вас сильно избыточный.В большинстве случаев достаточно один раз прочитать LDREX'ом и один раз записать, а не перечитывать по три раза...

  • C++20 утверждён! Чего ждать и к чему готовиться разработчикам в C++23
    0

    Спасибо, изучу.
    И я неправильно выразился: по ссылке примеры использования библиотеки. Я что-то очень похожее пишу в cpp-файлах (общедоступной ссылки не дам), вроде б работает...

  • Трактат о Pinе. Мысли о настройке и работе с пинами на С++ для микроконтроллеров (на примере CortexM)
    0

    lamerok Сергей, мы тут подумали и решили (ц), что в разделе про атомарные операции написана полная фигня.


    Код работает правильно (ну… почти… Работает пока тип этого атомика 32-битный), а вот с объяснением беда…
    Подробности у производителя.

  • C++20 утверждён! Чего ждать и к чему готовиться разработчикам в C++23
    0

    забыл ссылку добавить, извините:
    дескрипторы USB создаются в compile-time и прямо в таком виде передаются "наружу"

  • C++20 утверждён! Чего ждать и к чему готовиться разработчикам в C++23
    0
    Те же designate initializers возьмите: до clang 10 они банально небезопасны!

    Приведите ссылочку, пожалуйста.
    Хочу знать, с какой стороны ждать грабли.
    Я использую для заполнения структур (например, вот этот файл можно почти безболезненно переименовать в cpp), и пока с проблемами не сталкивался. Зря использую?..

  • Аппаратный ключ шифрования за 3$ — возможно ли это?
    +2
    конкретно для этого чипа обойти защиту довольно легко

    Это несколько не так. На медиуме расписано, как легко и просто обойти защиту "отключить пины SWD", но при включенном RDP загрузчик не работает (точнее, не работают никакие способы чтения flash). Кажется, возможна атака, описанная Обермаером (ссылка в медиуме), но у неё есть куча допущений (описаны в работе этого самого Обермаера).
    Также, вероятно, работает атака с глитчем питания (вот эта).


    Но говорить, что всё так легко и просто, я бы не стал...

  • Статическая подписка с использованием шаблона Наблюдатель на примере С++ и микроконтроллера Cortex M4
    0

    Не знаю, как у IAR'а, а в GCC это не влияет никак:
    https://godbolt.org/z/KDhRfo
    правда, появляется другой варнинг — про неиспользуемый tmp.


    можно приделать ещё один костыль вида


        (void) ((subscribers.HandleEvent(), 0) + ...) ;

    но понятнее код от этого не становится...

  • CAN sniffer
    0

    Ну так отлаживайте, пожалуйста :-)
    Там "протокол" в отдельный модуль выделен. В принципе, ничто не мешает его подменить.


    Я вот свой велосипед пилю на эту же тему (правда, сейчас забросил...).
    И вот совершенно непонятно, откуда у меня должно возникнуть желание поддерживать железо, которое я никогда не видел… Мотивация "может быть, кто-нибудь когда-нибудь будет использовать" какая-то слабая.

  • CAN sniffer
    0

    … а также степень нажатия на педаль, расход и ещё 100500 параметров, которые связаны с оборотами

  • CAN sniffer
    0

    Вы, простите, готовы купить для автора "распространённые адаптеры"? Или предлагаете заниматься отладкой по переписке?

  • Новогоднее настроение из Arduino и палок
    0

    Ничего страшного с "линией передачи данных" не случится.
    Зато хоть какая-то диагностика есть...

  • 5 способов сделать Python-сервер на Raspberry Pi. Часть 2
    0
    разрешить многопоточность в Flask

    … как раз не нужно. Оно ж наверняка гораздо быстрее, чем обмен по I2C. Имхо.


    Наверное, где-то что-то портится, в регистры PCA пишется мусор, и какой-то моторчик сходит с ума (я не в курсе, что будет с сервой, если её кормить "нестандартным" ШИМом).


    Диагностика — для начала выводом передаваемых данных из адафрукт-библиотеки, потом логическим анализатором на входе и на выходе PCA.
    Опять же, имхо околожелезячного программиста.

  • 5 способов сделать Python-сервер на Raspberry Pi. Часть 2
    0

    Осознать всю портянку кода не смог, извините. Особенно непонятны почти одинаковые ряды elif'ов. Вроде б оно в пару условий схлопывается...


    set_pwm_freq — это установка частоты ШИМа. Единое на все каналы (особенность PCA). Насколько я понимаю в сервах (а понимаю не очень много...), рекомендуемая частота для встроенного в серву драйвера — полсотни-сотня герц. Т.е. тут всё вроде б нормально.


    Как интегрировать def set_pwm?

    What do you mean? Я просто предлагал переписать адафруктовое безобразие.


    Дело осложняется еще тем, что после динамичных передвижений слайдеров PCA задирает ток до 1,5 А и при этом проседает напряжение.

    Сама PCA вряд-ли столько может потребить (там абсолютный максимум по паспорту — 0.4 ватта), это какой-то моторчик с ума сходит.
    Кажется, Дмитрий прав, и тут действительно идёт запись в несколько потоков.
    Попробуйте натыкать косты.. отладку:


        def set_pwm(self, channel, on, off):
            if self.cur_channel is not None:
                как_там_у_фласка_запись_в_лог ("Error! Simultanious write in two channels!!")
            self.cur_channel = channel
            # тут, собственно, пишем
            self.cur_channel = None

    И в случае появления подобных сообщений думать, как их лечить (а лечить надо обязательно! какая каша будет на I2C в этом случае, даже разбираться лень).
    Хотя, если желание поразбираться есть, купите у китайцев клон Saleae Logic. Замечательная штуковина для отладки всяких подобных околожелезных вопросов. Стоит рублей 400 всего.


    PS DmitrySpb79, мы вам тут не сильно мешаем? Питон есть, распбери тоже, но от темы мы явно отклонились :-)

  • 5 способов сделать Python-сервер на Raspberry Pi. Часть 2
    0

    Да что там переваривать-то...


    Вам надо добавить установку 5-го бита в регистр MODE1 (см. даташит, страница 14) куда-нибудь в PCA9685 __init__()
    и переделать


        def set_pwm(self, channel, on, off):
            """Sets a single PWM channel."""
            self._device.write8(LED0_ON_L+4*channel, on & 0xFF)
            self._device.write8(LED0_ON_H+4*channel, on >> 8)
            self._device.write8(LED0_OFF_L+4*channel, off & 0xFF)
            self._device.write8(LED0_OFF_H+4*channel, off >> 8)

    во что-то вроде


        def set_pwm(self, channel, on, off):
            """Sets a single PWM channel."""
            # onL, onH, offL, offH
            self._device.writeList(LED0_ON_L + 4*channel, [on&0xff, on>>8, off&0xff, off>>8])

    Это уже ускорит обмен в раза в 2-3. Для дальнейшего ускорения надо переделать архитектуру — собирать все параметры в одну кучу, и засылать единоразово по какому-то событию.
    Кстати, я был неправ — в этом случае все значения ШИМов будут обновляться одновременно, по окончанию передачи.


    И да, есть большая вероятность, что "затык" в чём-то другом. Но слово "Flask" мне не очень знакомо, здесь я не помогу...

  • 5 способов сделать Python-сервер на Raspberry Pi. Часть 2
    0

    Сама по себе PCA9685 умеет генерирует 16 ШИМов совершенно независимо друг от друга. Задать новые значения ШИМа одновременно, правда, не получится (и авторы микросхемы не заморачивались с тем, чтобы новые значения применялись одновременно), однако там есть возможность загрузить новые значения за один обмен по шине. С учётом скорости шины в 1 МГц (правда, насколько помню, RPi умеет только до 100 кГц) получается довольно бодро.


    Правда, господа из Adafruit этот режим не осилили, и пишут мало того, что в каждый канал по отдельности, так ещё и в каждый канал по 4 транзакции вместо одной...

  • Unix-пароль Кена Томпсона
    0
    Зачем верить Вам на слово

    … и следующей же строчкой — данные, которые я же и предоставил. Ну отлично просто.


    Ладно. От идеи "схлопнуть N паролей в N^(2/3) записей" мы, кажется, уже окончательно отдалились, и то хорошо.