Jump to content

    

Sagittarius

Свой
  • Content Count

    209
  • Joined

  • Last visited

Everything posted by Sagittarius


  1. GPIO0 в устройстве подтянут так же. Проблемы с прошивкой своего кода в модуль, AT-командами не пользовались, может с ними что то и работает, не пробовали.
  2. схема отдельного тестера-прошивальщика (заливаем свою прошивку), вроде все по доке. Питание с USB, с этого же компа переходник USB-UART на X1. Собрано на макетке, провода короткие, скорость 115200 (пробовал и другие, без разницы). ESP-07(на схеме) и ESP12E по боковым выводам совпадают. По общему количеству из последнего из 50 модулей по этой схеме 18 не прошились, с 32 все нормально. Из обнаруженных странностей - иногда CH_PD (Enable) у некоторых модулей притянут к 0 самим модулем. Если его подтянуть резюком 700-800 Ом к +3.3В и потом резюк убрать, то этот вход остается на уровне 1.5-2В, этого может хватить что бы модуль запустился. Если на 3.3В ткнуть без резюка то уровень на Enable будет 2-3В. из 5-ти модулей с таким косяком 2 ожило, 3 нет. Часть модулей на BOOT (GPIO0) вне зависимости от его подключения (GND/висит/подтянут к+) выдают 26МГц, у нормальных там в режиме прошивки 0.
  3. esptool, через переходник USB-UART. но еще до собственно программирования модули, с которыми все нормально мигают синим светодиодом, которые не прошьются - не мигают. Т.е. разница в работе уже просто при подаче питания.
  4. Так и делаем, на пружинных иголках стенд, 1/4 не прошивается, ни на что не реагирует, максимум если BOOT оставить висящим, то на нем 26МГц будет
  5. Здравствуйте. Кто ни будь применял модули ESP12E (AI-Thinker) в мелких сериях? Сделали устройство, делаем мелкую серию, из 70 модулей 22 не прошиваются, никакими светодиодами не мигают. Закупались в чипдипе. Такой процент брака это норма для модулей или это какие то их не учтенные особенности? У кого какой опыт применения? Спасибо.
  6. Здравствуйте. Скорее информации пост. После очередного обновления Win10 перестала открыватся рабочая либа (база данных через exel). Работало только если файл xls был предварительно открыт в Exel. При этом аналогичная библиотека (намного меньше размером) нормально работала. Вылечилось только удалением обновления и запретом обновлений вообще, через реестр. Если кто сталкивался с таким и победил с сохранением обновления - что делать? Спасибо.
  7. Делел проект на STM32F746G с SDRAM и видео выходом. SDRAM инитил куском либы из примеров, идущих с кубом-мх. Конкретно файл stm32746g_discovery_sdram.c (17 013 байт) но, как уже говорили, 133 там никак не получалось, и когда читал доку на H7xx то как запомнилось, выше 100 частоту SDRAM на нем тоже поднять нельзя. У меня на 100МГц плата в 4 слоя без особых ухищрений, единственно на что смотрели - чтоб длина проводника тактовой была не менее максимального из остальных адресов/данных/команд. Из доки на F746 === SDRAM waveforms and timings • CL = 30 pF on data and address lines. CL = 10 pF on FMC_SDCLK unless otherwise specified. In all timing tables, the THCLK is the HCLK clock period. – For 3.0 V≤VDD≤3.6 V, maximum FMC_SDCLK= 100 MHz at CL=20 pF (on FMC_SDCLK) === да, про куб - на прямую проект им сгенеренный с SDRAM у меня не заработал, только с другими файлами из примеров от этого же куба.
  8. LwIP, UDP

    автор забыл про отпуск перед написанием вопроса и ушел туда но уже вернулся :-) Вопрос именно про конкретную реализацию а не про сферический в вакууме RFC. Что сейчас наблюдается: используя udp_sendto раз в секунду посылается 28 пакетов. Пробовал как подряд в цикле так и с паузой 20-200 мс. Но глюк один и тот же. Иногда последний пакет из пачки задерживается и приходит как первый при начале посылок за следующую секунду. Задержка именно в LwIP, смотрел траффик по Wireshark. Так что где то внутри буферизация есть и возврат из udp_send не означает физическую отправку пакета. Собственно вопрос тот же, как правильно отправлять последовательность пакетов по UDP используя LwIP? Спасибо.
  9. LwIP, UDP

    Здравствуйте. Проблемка, не могу найти как сдеалть. Микроконтроллер периодически (раз в 1с) посылает UDP пакет, все работает. Но надо за один раз посылать порядка 20 разных отдельных пакетов. Буфер для формирования пакетов один. Как определить что предыдущий пакет уже отправлен и можно формировать и отправлять следующий? Определить что именно отправлен, обработан модулем Eth и выдан в линию связи (а не принят адресатом). Спасибо.
  10. Да, по дороге на работу как раз об этом подумал :-) так и есть, одни в CP1251 а другие в UTF-8, в IAR оба отображаются корректно. Теперь вопрос - а как IAR узнает какой файл в какой кодировке? Спасибо.
  11. Здравствуйте. Какой то косяк, но в чем никак не пойму. Собрал проект (STM32746, IAR 7.80, куб+freertos+uGFX) в исходниках uGFX определяется переменная как char const* text, ей в коде выполняется присваивание text="строка", и эта строка получается в кодировке UTF-8. В моем куске кода аналогичные строки получаются в CP1251. Если в своем коде описываю переменную как extern и размещаю ее в коде uGFX то она снова получается UTF-8. Включение мultibute support на результат не влияет. Наверное где то какая то опция в хедерах uGFX поднимается, но какая? Спасибо.
  12. Здравствуйте. Очередная засада с AD7124-8, разбираюсь с калибровкой. Процесс - выдаю сброс, инициализирую, для выбранного канала провожу внутреннюю калибровку, вычитываю все регистры, смотрю результат. Как понимаю производитель откалибровал АЦП для Gain=1 (PGA=0) и записал результат в регистры gain для каждого канала? и если я произведу калибровку на тех же установках то должен получить по крайней мере близкие к стартовым. И при этом, т.к. в процессе внутренней калибровки внутренние входы АЦП отключаются от внешних, то результат должен быть не зависим от конфигурации канала (что задано как вход). Реально же наблюдаю значительные изменения в регистре gain (изменяются 2 младших байта) и при этом есть зависимость от заданной коммутации канала - если подать на вход (AVdd-AVss)/6 или (IOVdd-DGND)/6 то регистр калибровки меняется весь, получается значение порядка 0xC0xxxx. Но это при установленном PGA=0(Gain=1). Если же задать PGA=1(Gain=2) то все приходит в норму, происходит лишь небольшая коррекция регистра калибровки. Собственно вопрос - а как правильно делать? Можно проводить калибровку для усиления 1 или это не корректно? И если значение калибровки (при Gain=2) от раза к разу отличается друг от друга на 0..70 это нормально? Спасибо.
  13. Опа! чего то не допер сразу. А ведь в доке то стоит запятая, 13.584, это как так? Спасибо.
  14. Если temperature sensor ставить на оба канала то результатом будет что то типа 0x7FFFe7, что тоже не проходит. Собственно с этой конфигурации начинал. А вот тут, вроде как форум самого AD: https://ez.analog.com/thread/94666 говорят именно про конфигурацию когда на IN+ подключают датчик а IN- на AGND. Да, по другим каналам (внешним, внутренним) приходят ожидаемые значения, там вроде как все нормально.
  15. Здравствуйте. Может кто ни будь сможет подсказать. Использую AD7124-8, пытаюсь измерить показания внутреннего температурного сенсора. На выбранном канале на "+" коммутирую сенсор, на "-" AVss. Конфиг на канал биполярный, буферизированный, референс внутренний. В принципе пробовал и всякие другие установки как по конфигу так и по фильтрам, как дефолтные так и из примеров и форума AD. Результат примерно одинаковый - результат преобразования 0xBE8xxx..0xBE9xxx что по формуле из доки дает температуру в районе 300 тысяч цельсия :-) Где то косяк, но в чем как то уже не придумывается. Может кто то сталкивался с подобным или подскажет рабочие настройки канал/конфиг/фильтр ? Спасибо.
  16. Здравствуйте. Такой вопрос возник. Есть многоканальная схема, что то типа основного листа, процессорной части (1 штука) и какого ни будь канала (несколько штук). Отрисовав делаю Annotate Shematic, за тем Board Level Annotate (схема наименования $ComponentPrefix$GlobalIndex). Теперь, если добавить к примеру, резистор в процессорную часть и снова сделать Annotate Schematic, то этому новому резистору будет присвоен номер, который был до этого назначен какому то компоненту канала, соответственно выполнение за тем Board Level Annotate приводит к тому, что нумерация всех резисторов каналов съезжает. На этапе первоначальной схемы ладно, терпимо. Но когда уже есть плата и надо внести изменения это как то напрягает. Очевидно какая то кривость в том, как я выполняю нумерацию. Как это делать правильно, чтоб нумерация в каналах сохранялась при изменении других частей схемы? Спасибо.
  17. О, спасибо! Коллега рядом как раз на подобное наткнулся, когда другая бага переехала из F4xx в F7xx, была в еррате на 4xx но отсутствовала в еррате на 7xx. Действительно, если прерывания запрещать то все читается нормально.
  18. 1. кеширование отключено 2. чтение происходит ошибочно, если, к примеру, последним в адрес base[11] было записано число 0x1234xxxx то выполненное сразу после этого чтение по адресу base[0] выдаст 0x12341234, хотя по этому адресу лежит совсем другое значение (по останову в отладчике читается правильное). При этом сам цикл чтения на шине будет отсутствовать. т.е. бага не просто в отсутствии цикла чтения на шине а в ошибочном результате самого чтения.
  19. Здравствуйте. Возникла непонятная ситуация. Проц STM32F746, к нему подключено внешнее статическое ОЗУ, 16 бит данных. Скелет программы сгенерен в CubeMX, кеш на команды и данные отключен. Тест простой - сначала пишу во внешнюю RAM 12 штук 32-бит слов (используя memcpy) потом читаю в цикле по одному uint32_t. В зависимости от наличия, частоты и длительности прерываний (простой таймер и инкрементом переменной во внутреннем ОЗУ), паузы между записью и чтением, уровнем оптимизации кода при компиляции иногда происходит сбой - циклов записи на внешней шине всегда 12 а вот циклов чтения иногда проскакивает только 11 (отсутствует выдача сигналов CS и OE). Судя по всему аппаратура проца пропускает первый запрос на чтение, при этом результатом самого чтения оказывается значение, которое последним записывалось во внешнюю RAM (продублированные последние записываемые 16 бит). В зависимости от каких то шаманских действий частота сбоев может быть от 1-2 в секунду до 1-го за 7-8 часов. Пробовал собирать проект в IAR и Keil. Может будут у кого какие мысли по этому поводу? Спасибо.
  20. Здравствуйте. Ниже была похожая тема, но там у ТС проблема что в IRQ было не попасть :-) у меня на оборот заведено периодическое прерывание 6-го таймера и отладчик в пошаговом все время попадает туда. В том же IAR это решалось опцией в настройках, а как тут? MDK ARM 5.17, проц STM32F746 + ST-Link/V2. Драйвера и прошивку обновил. Спасибо.
  21. Спасибо. Другими словами, мой пример просто некорректен с самого начала, а такие конструкции надо реализовывать через if-else, case и пр. ?
  22. Здравствуйте. Изучаю Verilog, возник вопрос, который не понимаю. пример счетчик 0-10: === module test1(clk, count); input clk; output reg[7:0]count; always @(posedge clk) begin count <= count + 8'b1; if (count == 8'b00001010)count <= 0; end endmodule что на него сгенерил Quartus: меняю строки в always блоке местами: always @(posedge clk) begin if (count == 8'b00001010)count <= 0; count <= count + 8'b1; end исчезает условие проверки на 8'hA: Вот никак не пойму - почему так? вроде в данном случае результат не должен зависеть от последовательности строк? Спасибо.
  23. темная сторона силы, асинхронные схемы :rolleyes: давно не работал с FPGA, со времен Max plus+, может быть просто привык :-D освою таймквест и тоже буду rtl обходиться.
  24. Спасибо, хоть что то стало прояснятся ... test_family... на max10 выдал 0, хотя это семейство устанавливалось (q16.0), на maxv выдало 1, но раз базы пусты то грустно, а как раз под него тест на gate level simulation и делал. а как включить для max10? Почитал Quartus II Scripting Reference Manual так вроде нет такой магии как "test_family_trait_of" - где про это пишут?
  25. опаньки ... а тогда вопрос - как отмоделить схему на пример в Max10 или циклон II ? вообще никак?