Как стать автором
Обновить
50
0.3
Александр Козлов @alcotel

Инженер-электронщик

Отправить сообщение

О, да, знакомый мостик. Если кто не в курсе - на али со стоковой прошивкой он продаётся для скручивания показаний одометра.

Но я вполне припаивал отладчик проводами к чипу, тем более, что мне оба кана требовалось, и питание 12V.

У многих версий этого мостика ещё косяк есть - ноги 5 кан-трансиверов либо соединены вместе, либо ещё и куда-то подключены. Из-за этого кан работает рандомно, греются трансиверы и регулятор напряжения. На вашей плате, кстати, он тоже есть.

Вот так пришлось исправлять
Вот так пришлось исправлять

Огромное спасибо!

У меня не последняя версия, т.к. ставлю из репозиториев для убунты 20. Но раз проект развивается так стремительно, имеет смысл и из последних исходников попробовать собрать.

Ясно. Проверю. Может, несхождение симуляции действительно было именно в предыдущих версиях. qucsator, вроде так назывался тогда математический движок.

Сейчас по вашим статьям добавил qucs в список реп. Версия 24.2.1. ngspice установлен, и судя по логам из qucs, работает.

В базовой библиотеке косяк встретил. "Источник напряжения прямоугольной формы", когда его параметры задаются из уравнения, а не руками, перестаёт генерировать. А я им пользуюсь и как пилообразный генератор, и для развёртки ВАХ, как на железе. Его модель в нетлист для ngspice, насколько я в итоге разобрался, неправильно выводится.

Последние версии не пробовал, но и в перечнях изменений не видел этого бага. Зарепортить кому-либо? Что приложить для этого? Или может я сам пришлю правки. Но дайте понять, в какой области исходников это всё искать.

Офигенный софт, на самом деле. Пользуюсь давно, версия по-моему что-то типа 0.16 в официальных репозиториях убунты тогда была, не помню уже точно. Редактор схемы, кстати, я считаю намного удобнее, чем Altium Designer, например. Очень всё просто, но понятно и предсказуемо, поэтому вносить изменения получается быстрее.

Я не СВЧист. Изредка использую развёртку по АЧХ. Больше "Моделирование переходного процесса". Импульсные, триггерные, автогенераторные схемы - ван лав. Часто наталкиваюсь на то, что симуляция заходит в тупик на очередном переключении. Есть ли какие-то общие рекомендации для параметров симуляции, или для самой схемы при моделировании таких устройств?

Если передавать дальше именно логический уровень - нет проблем. Логика дальше просто поменяется с NAND на OR или с NOR на AND. Вы как-бы выносите -1 за скобки (b-a)=-(a-b). Или просто меняете соглашение, что называть 0, а что 1.

Вы можете всю логику перевернуть вверх тормашками, поменяв местами VCC и GND. Можете - не всю, а отдельные участки. Можете объявить нулём +3..+15В, а единицей -15..-3В, как в RS232. Можете объявить нулём состояние "ток есть" и единицей "тока нет", как в MIDI. Объявить: "активный уровень сигнала nRST - низкий". Поменять местами провода дифф.пары. Объявить, наконец, что код возврата программы 0 - это ОК. Математика от этого не поменяется, а меняется только соглашение между выходом и входом.

Но если вы хотите выходом логической схемы, например, открыть NMOSFET, тогда да, уже физический уровень напряжения будет иметь значение. И имеет значение, 3 это вольта, или 5, или все 12 придётся организовывать. А не абстрактные 0 и 1.

Что-то много букв получилось)

И даже без диодов (и без транзисторов, и без всего) - вообще легко. Достаточно поменять соглашение о соответствии физических параметров сигналов логическим уровням слева и справа от провода.

Чуть поиздевался над схемой, да простят меня @Lunathecat и китайские авторы
Чуть поиздевался над схемой, да простят меня @Lunathecat и китайские авторы

В процессе обработки данных нет никакой разницы, принять за логическую "1" зажигание LED3 или LED4. Поэтому у FPGAшников и ASICшников "НЕ" вообще за операцию не считается, т.к. никак не влияет на задержку и тактовую частоту.

Это как по соглашению принять "не ноль" за успешное завершение функции, или за ошибку. Вообще по барабану.

Предусилитель и без оптрона будет обеспечивать хорошую развязку от антенны.

Я сам интересовался когда-то, т.к. занимался физикой оптических волноводов. Помню, когда-то... - это не релевантный источник. Бодро погуглив "laser intensity noise" сейчас я нашёл только характеристики супер-пупер лазеров, у которых шум нормируется производителем. -140 дБ/Гц, говорят, но за много к$.

70 дБ - это похожая цифра. Но это ху , мягко говоря, весьма небольшой динамический диапазон. Чуть похуже проводной телефонной связи, в районе GSM что-то. И у товарища сигнал-то намного ниже 0 дБ. (под 0 дБ я подразумеваю ток постоянного смещения СИД, и соответствующее напряжение на нагрузке 50 или 75 Ом)

Если прям пипец интересно, напомните мне в личку в конце сентября. Мне соберут платы с фото-датчиками и 16-битными АЦП. Проверю. СИД (типа как в пульте ДУ) в комплекте будет. Лазерную указку найду уж.

Супер! Тоже игры на бумаге люблю.

Оффтопик, наверное:
Был тут недавно на экскурсии в крепости-тюрьме Орешек. Кто там только не сидел, но 200 лет назад там сидели декабристы перед отправкой в Сибирь. Некоторые там и насовсем остались. Так вот. Легенда гласит, что эти товарищи с помощью перестукивания умудрялись играть в шахматы. Похоже, это была самая ранняя сетевая игра, что я теперь знаю.

Склероз с возрастом приходит)

ОЗУ - оперативно забывающее устройство
DDR RAM - видимо, вдвойне оперативней это делает

Кэш на всех процах разделяется. И в ядрах GPU, и даже в микроконтроллерах Cortex-M0 за $1.

UPD: Микро-архитектура с кэшем у всех получается гарвардской. Но я что-то я не замечал, что разработчики ставят один чип или планку памяти отдельно для данных, а второй - отдельно для программ. Чисто гарвардская - это разве что AVR/Ардуино и PIC.

Уже лет 15 как время случайного доступа к памяти держится в районе 40-60 нс. Сложите 3 тайминга памяти,типа 22+24+22, разделите на её тактовую частоту (половину скорости DDR), и получите это самое время.

А время последовательного доступа в линейке DDR2,3,4,5 таки уменьшается за счёт большей параллельности, буферизации и скорости самого интерфейса. Софтописатели и компиляторы это учитывают.

Оптический S/PDIF, он же TOSLINK, на каждой второй материнской плате ставится. Для цифрового сигнала по оптике - самое бюджетное решение.

Но вот микровольты аналогового сигнала, как автору нужно, обычный лазерный диод не передаст. Шумит адски. Даже специализированные одночастотные лазеры стоимостью $∞ не особо справляются.

Светодиоды в качестве фотоприёмников я пробовал. Не взлетело от слова совсем.

Про согласование спектров тут уже сказали. Лучший вариант - ближний ИК и кремниевый приёмник. Быстрые оптопары, аналогичный приведённой в статье - например 6N135, 136. У них, кстати тоже отдельно фотодиод и усилительный транзистор. Фотодиодные оптопары теоретически тоже бывают.

Но если вы собираетесь передавать слабый сигнал от антенны, учтите шумы. У светодиодов они ни разу не нормированные. А у лазеров, как тут некоторые предлагают - полнейший мрак.

Чтобы измерять сигналы различных каналов необходимо динамически переключать (перекоммутировать каналы)

Это не проблема. DMA по таймеру вполне способен достаточно точно переключать каналы.

Также и для снятия сигнала с АЦП на большой скорости (до 0,8 MSPS, вроде, у этого мк при тактовой частоте всего 32 MHz) без DMA не успеть. Но вот беда, может кто-то подскажет, я не нашёл ни в документации, ни в примерах, как у этого мк зациклить DMA.

UPD: Программная коммутация, как в вашем примере, тоже будет работать. Только сначала надо запустить преобразование, потом поменять канал, потом ждать.

Нет у этого мк буферного ОУ. И у большинства мк тоже нет. Вход коммутируется через мультиплексор непосредственно с конденсатором УВХ. Поэтому обычно предъявляют требования к выходному сопротивлению источника сигнала.

Схема АЦП из описания

Действительно. И время выполнения тестов у автора чуть больше, чем О(n) как раз и получается:

Тесты

n =10e8 0,6 секунд

n=10e9 7 ceкунд

n=10e10 73 секунды

Где же тут O(log n) !?

Как в плюсах - не знаю. В си atomic_t это просто тип данных, которые записываются и читаются за один такт, грубо говоря. Не разваливаются по пути из ядра в память и обратно. Для данного мк атомиком будует int32. А вот int64, или невыровненный int32 - уже не будут.

typedef struct { volatile int counter; } atomic_t;

volatile запрещает оптимизацию доступа, если быть точнее. Я сказал, в память, значит в память. Я сказал, в таком порядке, значит, в таком.

Вполне используется volatile, например, при объявлении портов ввода-вывода у ARMовских мк. Порядок доступа к ним ой как важен.

Ёмкость ещё измеряется в литрах и количестве патронов)

На самом деле у той ёмкости, которая в фарадах, неудачное русское название. Англоязычные товарищи ёмкость бака, магазина или аккумулятора называют "capacity". А ёмкость конденсатора - "capacitance". Как эта скасаать парусски?) Точно не знаю.

Ампер-час - в электростатике это вообще-то электрический заряд, 3600 кулон, 2,2x10²² лишних электронов на катоде аккумулятора. Возможно, именно это для химиков выглядит удобно. Может, для маркетинга эту цифру везде вставляют. Но потребителю действительно нужна энергия, а не заряд.

Вт-часы - просто устоявшаяся единица. Электросчётчик можно и в джоулях или калориях проградуировать, как, например, теплосчётчик. Но так уж пока принято.

Информация

В рейтинге
2 211-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Embedded Software Engineer, Разработчик электроники
Lead
От 280 000 ₽
Electronics Development
Development of printed circuit board
FPGA
Programming microcontrollers
Sound processing