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

gerber

Участник
  • Постов

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

  • Посещение

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


  1. И ещё надо убедиться, что volatile относится не к указателю, а к переменной, на которую он указывает.
  2. Есть такой термин "безопасное программирование". К примеру, что будет с вашим кодом, если список функций пуст (начинается с NULL)? Или в процессе отладки вы захотите (временно) отключить вызов какой-либо функции, заменив её на NULL в массиве? И чем будет ограничен вызов функций, если забыть завершить массив нулём? В последнем случае код может оказаться случайно рабочим, вы забудете про него на пару лет, а при очередной модификации начнутся глюки, и вы будете долго ломать голову. Логично и безопасно перебрать все элементы массива и вызвать ненулевые, разве нет?
  3. "Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам" (написано у вас в подписи)
  4. Последний ноль не особо нужен, размер массива известен в момент компиляции, и ходить по нему можно с помощью sizeof(UART_NN)
  5. Похоже, что в слой трафарета попали переходные, но не все, а те, которыми "прошивали" полигон. В целом, выглядит, как старая паста. Флюс недостаточно активен, поэтому шарики не сливаются в экстазе в каплю. Ну или какая-то экзотическая паста, с хитрым термопрофилем, которой нужен долгий преднагрев для активации флюса.
  6. У базовой станции и устройств в LoRaWAN разный IQ mode. Это сделано, чтобы устройства не слышали друг друга, общались только с БС. Аналогично, чтобы БС не принимали пакеты другой БС. Поэтому сниффер может слушать только один из каналов (либо восходящий, либо нисходящий), в зависимости от настройки IQ mode.
  7. pci.exe, hwinfo.exe, findpci.exe, подобные утилиты писались многими, поскольку все они работали через вызов PCI BIOS, и были довольно просты.
  8. Оба модуля сделаны на базе DW1000 чипа, поэтому разница только в антенне. Поскольку вы не будете (вероятно) использовать их для измерения расстояния между узлами, то и Antenna Delay не будет играть особой роли, как и диаграмма направленности. UWB приёмник прекрасно принимает и отражённые копии.
  9. Посмотрите в сторону импульсной сверширокополосной связи (UWB), стены проходит на ура, скорость 110 Кбит - 6.8 Мбит/с. Есть аппаратный ACK принятого пакета, по которому передающий узел может убедиться, что его пакет принят. Не надо никакого установления связи, узлы вещают в эфир свою информацию. Есть прецизионный пикосекундный таймер, с помощью которого можно задать точное время передачи пакета, таким образом поддерживать общее расписание выхода в эфир. Но даже без него 5 узлов будут нормально обмениваться, выходя в эфир по псевдослучайному принципу (ALOHA). При пересечении в эфире пакетов от разных узлов, кореллятор приёмника цепляется за самый сильный и таким образом хотя бы 1 пакет будет принят.
  10. В мороз резко увеличивается потребляемая от электросети мощность, люди включают обогреватели, водогреи. Поэтому, возможно, возросший уровень электромагнитных помех сбивает с толку ваши прошивки и ничего не работает. Запись в EEPROM два раза, потому что при чтении считалось не то и прошивка не увидела, что ключ уже есть. И т. п. Косвенно это подтверждается тем, что в холодильнике при -18 С всё работает.
  11. Spread Spectrum выключено. Смотрел, входная частота 18-500 МГц, выходная до 800 Мгц. И (я так думаю) за соблюдением условий должен следить IP wizard. И он следит, при указании частоты, которую невозможно синтезировать, он сообщает об этом. Смотрел, конечно, никаких противоречий с моим пониманием вопроса не нашёл.
  12. Есть проект для Lattice FPGA серии CrossLink-NX LIFCL-40, в числе прочего в проекте есть видеоконтроллер, выдающий поток на HDMI transmitter TFP410. На FPGA заведен выход внешнего генератора 60 МГц на один из входов PCLK. Однако видеоконтроллер, для правильного формирования развёртки HSYNC/VSYNC и вывода пиксельной информации требует в качестве опорного тактового сигнала вполне определённую частоту, зависящую от разрешения. Например, для 800х600х72 Hz эта частота 50 МГц. Для формирования такой частоты пытаюсь использовать PLL - с помощью IP wizard создаю PLL, указываю входную частоту 60 МГц, желаемую выходную 50 МГц, конфигурация проходит успешно, Tolerance 0.0 %, выход CLKOP с PLL идёт на вход видеоконтроллера, однако видеоконтроллер с такой опорой отказывается работать, изображения нет. Вывел выход PLL на отладочную ногу, смотрю осциллографом, частота 50 МГц есть, но даже осциллографом видно, что она "плавает", то есть периодически плавно меняется. Видимо, это и есть причина неработоспособности видеовыхода. В то же время на борту FPGA есть свой источник частоты 150 МГц генератор OSC, если ему задать делитель 3 и из него получить 50 Мгц, то HDMI выход работает отлично. Ранее работал с FPGA Xilinx и особых проблем с PLL на борту не встречал. Может быть, у Lattice есть какие-то нюансы, хотя с виду IP-блок довольно простой, на входе RST и CLKi, на выходе CLKOP и LOCK, в конфиге указываются частоты входа и выхода, блок сам рассчитывает множитель и делитель, есть ещё Feedback Mode, который указан как CLKOP. Что может быть не так с PLL?
  13. Медленное нарастание питания в цифровой технике может приводить к метастабильности триггеров, проще говоря, на какое-то время цифровая техника становится аналоговой. Вот из такого состояния выход и может составлять несколько минут/часов.
  14. 4700 мкФ в цепи питания контроллера - это жесть. Вполне возможно, что причина в этом - когда конденсатор разряжен "в хлам", нарастание питания идёт слишком медленно, и неустойчиво стартует кварцевый генератор.
  15. Сомнение в том, что это позволит сократить пару слоев или снизить класс изготовления PCB. Освобождается место на Top-слое, но всё равно нужно ставить via и уходить на внутренние слои. Почему бы это не сделать по классике около пада? Единственное исключение - если по верху можно соединить питающий полигон, но питающий полигон на Top-слое это извращение, похлеще чем хоккей на траве и балет на льду. Ибо конденсаторы всё равно на Bottom ставить и Via нужны, как ни крути. Если разработчик не хочет вникнуть в рекомендованный layout и готов затачивать посадочное место (убирать пятаки) конкретно под каждую свою разводку - ну что тут сказать...
  16. Очень сомнительно, что неиспользуемые шары помогают сэкономить 2 слоя топологии. Особенно если учесть, что для такого трюка неиспользуемые шары должны выходить на обочину корпуса, что далеко не всегда так. Обычно производитель BGA чипа серьёзно задумывается о распиновке и последующей трассировке своих кристаллов и приводит рекомендуемый layout.
  17. Приклейте зеркальце на деталь и поставьте лазерный диод + фотодиод + ОУ. Акселерометр наловит кучу всяких ускорений, начиная от центростремительного и до резонансных, замучаетесь обрабатывать. Да и чтобы получить точность 0,5 градуса на 30 оборотах в секунду, это надо выгребать измерения порядка 30000 раз в секунду, не каждый аксель это умеет.
  18. iMX287 http://starterkit.ru/html/index.php?name=shop&op=view&id=105
  19. Вывод выглядит неправдоподобным. Чтобы сжечь плату FR4 до черноты, пузырения и запаха, это надо сильно постараться. Неоднократно грел платы FR4 в районе 300 С без последствий. Скорее всего, в вашем случае имеет место быстрый неравномерный прогрев, например, если вы греете на ИК плитке.
  20. Видимо, есть приложение, которое анализирует некоторый Hardware ID, вычисленный из состава оборудования смартфона, в который входит в том числе и ID дисплея. Приложение, к примеру, привязывается к этому ID, и не позволяет с одного и того же смартфона создать несколько аккаунтов. Подменяя дисплей на аппаратном уровне можно с лёгкостью менять ID оборудования, хоп - и у нас уже другой смартфон (с точки зрения приложения), и мы можем начать заново, создать новый аккаунт и т. д. Поэтому, кстати, распараллелить MIPI тоже не вариант (видимо ...)
  21. Реально развесистыми могут быть include-директории стороннего ПО, например, SDK, к тому же SDK иногда обновляется, и после обновления SDK что-то может поломаться в сборке проекта и нужно откатить всё обратно на старый SDK, и т. д. Выручает построение include-путей через макросы типа $(SDK_DIR)/include;$(SDK_DIR)/drivers/include Первоначальный список путей для SDK можно стащить из какого-либо example, которые обычно идут с SDK.
×
×
  • Создать...