Jump to content
    

gerber

Участник
  • Posts

    881
  • Joined

  • Last visited

Reputation

8 Обычный

About gerber

  • Rank
    Знающий
    Знающий

Recent Profile Visitors

10,695 profile views
  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?
×
×
  • Create New...