• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Решено Частотомер и WEB

pvvx

Активный участник сообщества
-------------------------------
У меня счет фронтов работает без проблем. Делал даже для двух пинов с разными частотами -работает до 140 кгц по каждому из пинов.
одновременно счет двух частот.
---------------------------------------------
Разрешение и запрет прерываний делаю этим:
#define XT_CLI __asm__ __volatile__("rsil a2,3"); //отключить прерывание
#define XT_STI __asm__ __volatile__("rsil a2, 0");//включить прерывание
----------------------------------------------
Проблемы возникают если начать управлять включением и отключением пинов в программе.
А ка тогда ловить фронт \ а потом / ? Это требует обязательного переключения в прерывании...
В пустой ОС может и 140 кГц, но при WiFi и выкрутасах SDK - фигу.
 

pvvx

Активный участник сообщества

pvvx

Активный участник сообщества
Не совсем понял, какую отрицательную часть надо мерить.
Необходимо было измерить длительность импульсов и их кол-во. К примеру по активному нулевому уровню...
Некое подобие CTMU
Ещё пример - если есть измеритель времени длительности импульса, то на простом диоде можно сделать термометр. Пропускаете через диод ток в пару мА, отключаете ток и измеряете время до фронта спада напряжения. Оно в пределах 5 us у тупых диодов (например 1N4001) и на 100% зависит от температуры с пропорцией к величине объема полученного заряда при прямом токе... Т.е. измерение температуры без ADC на одной ноге и дешевом датчике. (с) данный принцип не имеет, дарю - можете патентовать. :)
Такого дерьма без (с) из моей практики и знаний физики за время работы накоплено много, т.ч. часто нужно измерение длительности и положительной и отрицательной части периодов...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Понятно, я таким способом хотел емкость мерить, но когда емкость стала от 1 до 8 пф , тоESP не потянул.
Вы собственно тоже предлагаете измерять емкость диода,вернее сазать емкость в параллель обр сопротивлению и сопротивлению входа. поэтому относительно 100% линейности это надо доказать. Да и DS1820 включается тоже одним проводом к одному пину и без каких либо навесок и коррекций.
Там зависимость не линейная и "емкость" практически любого диода к 1000 пФ на уровне напряжения его открытия. Кроме специализированных, со специальными добавками. Их явно вы не применяете. Это не емкость - это "заряд температурой" кристалла. Условно можно сказать, что вы в нем током создали "плазму" :) (ИФК излуяение или называйте как больше нравиться и ближе к вашим темам физики), когда сняли ток - она детектируется обратно, а распределение температуры зависит от внешней :) Заряд ограничен размером кристалла. Это одна из "емкостей", но их, которые видны даже на осле, к 5 типам у обычного диода... Слово "плазма" взято по аналогии и современной "моде" :) описания ДДРВ процесса в диодах.
Электрическая емкость – это абстрактное понятие :) У него нет четкого физического принципа. Это наплодило воображение некоторых фриков-ученых для других тупых людей, чтобы как-то можно было считать :) Если измерите емкость диода на его границе открытия, к примеру, как это диктуют формулы, по частоте контура (LC) с амплитудой в несколько нановольт, то получите эти нано-Фарады на любом диоде.
Замер емкости по частоте LC (С - емкость диода) на амплитуде до 1 мВ и постоянном смешении подаваемом на диод:
Cd1N4002grf.gif
 
Последнее редактирование:

pvvx

Активный участник сообщества
Предположим это так.
Но Вы предлагаете измерять время разряда (чего, если не Емкости?)
Далее надо измерить интервал в 5 мкс . Если измерять его с погрешностью 0.1% ( т е 100 гр с погр 0.1гр), то потребуется измеритель периода с погрешностью измерения 5 нс. А это уже не ESP. Даже погрешность 1% требует дискрет 50 нс, это тоже не ESP.
Поэтому DS1820 -это лучший вариант по сравнению с Вашим.
Я не про то, просто есть такое свойство у диодов, что можно на одном выводе, переключая внутреннюю подтяжку этого вывода и замеряя время фронта, получить температуру. И не более :) 5 us - это условно и является средним для массовых диодов.
Пример, можете повторить, если есть осел, резистор и диод (лучше бы и генератор, чтобы не в ручную коммутировать "время заряда диода" :) ):
1N4001_7kHz.gif
Так что это только на схеме рисуют диод, а на самом деле это ужасно нелинейный элемент и на диод похож отдаленно :)
У импульсных диодов хвост по времени меньше - по тому они гордо названы "импульсные". Но и к ним можно подобрать время и ток заряда, когда их "хвост" будет максимальным. Та-же фигня и с детекторными диодами, хоть они на МГц-цы...
Главное в длительности "хвоста" - это температура. Остальное - мелкие побочки.
Мощность максимального "заряда" диода зависит от объемов кристалла. Для выпрямительных это порядок 2 кило Вт! Импульсные. Т.е. их максимальный импульсный "заряд", который они могут поглатить и потом выдать обратно - более одного кило Вт!
Разрешение CTMU у многих MCU менее 1 нс.
 
Последнее редактирование:

pvvx

Активный участник сообщества
pvvx,
вопрос не совсем по теме, хочу услышать Ваше мнение.
Есть такие устройства называются "фотосепаратор".
Например, сортирует гречку по цвету. Потенциально можно сортировать например зерно по клейковине, таблетки по содержанию активного вещества.
Хочу замутить такое устройство в дешевом и компактном варианте . Есть идеи?
Неа. Много раз наблюдал только западное оборудование на заводах. Нашего не встречал... К примеру прикольно отстреливают воздухом шелуху от семечек в сыпящемся потке очищенных (там было производство халвы вроде :)). Мы изготавливаем оборудование для многих заводов... по этому, на начальном этапе развития конторы посетил десятки заводов по всей России... Сейчас этими делами в конторе заняты уже специальные отделы...
Т.е. суть в том, что можете заинтересовать только зарубежные фирмы, но не наладить производство у нас :) Это слишком сложно и возможно только уже имеющейся крупной конторе, типа нашей и более :p (С оборотами много лимонов в месяц и соответствующими пройденными этапами в разных сферах...)
Но в этой сфере уже есть готовые и законченные решения (в основном у западных фирм).
 
Последнее редактирование:

pvvx

Активный участник сообщества
Мнение понятно.
У нас вроде бы Воронежсельмаш делает или перепродает.
Я не вдавался в данные устройства. У нас тема немного другая, чаше нужная и конкуренции с западом не имеем. Иногда замешаем их дурное оборудование, т.к. наше имеет срок работы от 10 лет, а их до 1 года до последующих глобальных затрат на продолжение эксплуатации :)
Счас, после более 25 лет работы, сами наступаем на свой хвост - почти затовар, а старое так и работает. Надо что-то делать - ухудшать качество и прочее, чтобы оборудование изнашивалось и покупали новое :) Дыра на новое оборудование в стране уже более двух лет - так называемый кризис. :) Обновляются только сверх-мощные фирмы-заводы. Более мелкие не имеют средств... Ну чё вам описывать и так известную всем ситуацию с промышленностью в России ? ... Пример Детройт-а вам не о чем не говорит? :)
По этому никому и ничего ныне не надо. Только халявы.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Займите новую нишу. Вроде бы время подходящее
А нам незачем это. Имеющаяся - теперь вечная. Кризис не сильно сказывается, т.к. применение до малых фирм (стоимость минимального оборудования сравнимо со стоимостью автомашины), и все современные технологические цепочки требуют его, и чем больше развитие - тем больше требуется :p А по физике процесса у нас считай главные, поставившие эту тему на современный поток. Конкуренты могут дать только дополнения, которые мы тут-же применим, т.к. проработка вперед ведется только у нас. Конкуренция - это хорошо :) Для нас - это халява, которая только поможет, как в целях рекламы и распространения решений, так и по тому, что сможем ухудшить уровень качества до их вариантов. :)
В этом деле очень помогают китайцы :)
Всегда можно сослаться на “аналоги”, произведенные китайцами :) В обществе уровень "какчества" считается по среднему из имеющихся в продаже :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
Понятно, я таким способом хотел емкость мерить, но когда емкость стала от 1 до 8 пф , тоESP не потянул.
Измеритель емкости на ESP нормальный не сделать. Фронты затяжные, уровень входного триггера пина плавает от температуры и напряжения питания. Его АЦП вообще не работоспособен при включенном WiFi, т.к. задействован в нем на измерение внутренних параметров для работы WiFi драйвера и имеет ужасную помеху на входе от работы своего передатчика...
А вот вам пример, показывающий, что нельзя ничего включать на ноги ESP, ответственные за выбор типа загрузки.
AL307A_2ns_10A_2.gif
(попытка замера его максимальной емкости по энергии, запасаемой в энергетическом плане... От импульсов в 10..20 А длительностью до ~7 нс c амплитудами до 1 кВ не умирает ни одна деталька, зато можно узнать разные её характеристики... :) )
Светодиод, включенный на пин выхода при рестарте ESP всегда может дать ему не тот уровень на ноге для загрузки в неправильном режиме (не из Flash) по многим причинам, включая его освещенность внешним источником.
В итоге ножек у ESP для замеров с датчиков практически нет. Для нормального изделия придется прикручивать внешний MCU, что удорожает систему и делает её не конкурентно-способной по сравнению с использованием других модулей WiFi.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Следовательно реально можно оценить достоинства и недостатки какого-либо железа лишь для конкретной задачи.
1) Есть задачи в которых ESP вполне подходит.
Тут немного не правильный подход. :) Если для эксперимента - годится всё, что есть под рукой. А вот для производства - тут ESP всегда мимо, как и что к нему не прикручивай. Поэтому спора - "хто лучше" нет.
Вон на AVR есть "универсальный измеритель деталек" - работает же, хотя данные с него нельзя сказать, что годятся как измерения :)
 

pvvx

Активный участник сообщества
Тут у нас с Вами схолостический спор.
Можете конкретно ткнуть чем ESP не подходит для производства?
Т е раз два три - конкретно- типа ноги кривые, морда ящиком, руки крюки ну и тд
1) Отваливается его station до "протектед" при рядом работающем другом модуле WiFi или при приеме помех в WiFi эфире.
2) При работе его WiFi создает помеху другим участникам WiFi.
3) При пересбросах, включая управляемые внешние, если попали на момент работы передатчика (это 90% вероятность при передаче длинного файла) не глушит передатчик и глушит всю окружающую радиосеть. Несущая частота передатчика при этом имеет другой диапазон - отношение кварца к разработке и имеющегося на модуле. Аналогичное поведение при плавном включении питания...
4) Не имеет сертификации на работу в WiFi.
5) Чип не защищен от обычных бытовых ЭМИ помех - перегружается или виснет. Проверок и сертификации на это не имеет.
6) Имеет программную возможность, при глюках, к перегреву чипа и выходу из строя.
А так - замечательный чип :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
Хорошо.
Теперь давайте по порядку.
п 1-3. Много не проверял. Но у меня рабоатает роутер с WIFI( до него 4 метра) и включаю радом с ESP смартфон (до него 30 см) На смартфоне ловлю свои сети и еще 5 соседских. их сигнал не меняется - включен ESP или нет.
Смарт сертифицирован и обычно проверен. Он не работает в режимах частой инициализации WiFi, как это происходит у IoT устройств, где присутствуют дополнительные протоколы, которые тоже имеют спецификацию у альянса WiFi. Вот при них он и виснет. Толи там пакет какой более длинный принимает и переполняет буфер, то-ли берет не тот пакет для подстройки частоты своего передатчика...
п 4-5 согласен. Но если это не военная приемка, а как Вы указывали выше -малый бизнес, то этому бизнесу эти пункты особо не мешают . Вообще-то у ESP Тоже есть вроде какие-то сертификаты. Но вопрос а нужны ли они?
Если продавать хоть ОДИН - то нужны. В данном случае оформление сертификата наверняка будет на общее устройство, и его личные, от Espressif можно засунуть в помойку. Тем более это не сертификат на работу устройства в составе WiFi сетей! Там уровень типа что он не шумит более 100 мВт :) Так-же вы внесли модификацию в модуль, залив в него свою программу, а сам модуль с али сертификата не имеет... Короче "но" очень много и итог - штраф.
Продавать радио-устройство без сертификации у нас запрещено.
 
Последнее редактирование:

pvvx

Активный участник сообщества
А какая альтернатива?
------------------
и еще вариант:
Просто выключить WIFI ( либо включать редко без выкрутасов) и использовать как встраиваемый дешевый, компактный и мощный микроконтроллер. Чем не вариант?Что в конкурентах?
А нифига нет в конкурентах. Везде надо сертификат. Собираете, подготавливаете партию, отдаете образцы в разные разделы поверки (или платите щенками, знакомствами или чемоданами с купюрами куда надо), получаете сертификаты на изделие и вперед :)
Но вот по варианту без скобочек ESP не пройдет. Придется менять назначение товара - исключать что это WiFi или что-то подобное, чтобы проверка была только на уровень шума :) Более точно - наймите юриста.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Резюме:
Что есть - то и будем есть.
Для ESP нет альтернативы. И если где-то кому-то ESP мешает,то это проблема тех, кому она мешает.
А они этого даже не знают,так как у них нет в штате сотрудника с ником "pvvx"
А мне то пофиг. Я не комиссия по надзору, а в конторе есть штатные юристы :)
На RTL871x, именно модули, к примеру от RAK и других проиводителей модулей с RTL, есть все сертификаты, включая замеры ESD (проверки на электрические разряды :)). Они все независимо от Realtek произвели свои испытания и получили сертификаты, что говорит: Там, отдав модуль на поверки, в составе оборудования, можно спать спокойно.
 
Последнее редактирование:

nikolz

Well-known member
А мне то пофиг. Я не комиссия по надзору, а в конторе есть штатные юристы :)
На RTL871x, именно модули, к примеру от RAK и других проиводителей модулей с RTL, есть все сертификаты, включая замеры ESD (проверки на электрические разряды :)). Они все независимо от Realtek произвели свои испытания и получили сертификаты, что говорит: Там, отдав модуль на поверки, в составе оборудования, можно спать спокойно.
Мы же не про сон с Вами говорим.
Вы все пытаетесь доказать что модуль за 400 лучше чем за 100, так кто бы возражал.
А я лишь говорю, что и за 100 вполне решает множество задач, где за 400 не нужен.
Не все же ездят на мерседесах, кто-то и на бмв согласен, а кто-то и на ладе рулит.
 

pvvx

Активный участник сообщества
Мы же не про сон с Вами говорим.
Вы все пытаетесь доказать что модуль за 400 лучше чем за 100, так кто бы возражал.
А я лишь говорю, что и за 100 вполне решает множество задач, где за 400 не нужен.
Не все же ездят на мерседесах, кто-то и на бмв согласен, а кто-то и на ладе рулит.
Тот, кто рулит даже на Ладе - имеет права (сертификат) :p
Опять перевираете сравнивая модуль за 120 и модуль за 150 руб.
И это всё из-за того, что вам не освоить более современный модуль с множественными встроенными аппаратными контроллерами?
Ну вы и даете... :)
Документации и исходных кодов с примерами на него больше, чем на ESP.
Посмотрите кол-во вопросов по ESP и их уровень - все так и находятся в полном незнании что там в ESP из-за отсутствия на него документации и большинство занято борьбой с изготовлением заплат-патчей к его SDK :p
У вас нет ни одной технической характеристики для ESP8266 чтобы она не была лучше по сравнению с RTL8710AF. Т.е. ваши выводы - это чистый спам.
Предположим, взять пример - надо сделать синхронизацию устройств - на RTL открываем SDK, берем хидер WiFi регистров и читаем аппаратный TSF счетчик, а если что ещё надо, то вешаем на событие в SDK по приему baecon :p Ну и т.д.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Та не мнение, а как, что проще где реализовать.
Попробовал сделать ваш частотомер, тупее не смог написать:
Код:
#define GPIO_LED_PIN        PA_4
#define GPIO_IRQ_PIN        PC_4

gpio_t gpio_led;
gtimer_t my_timer;

volatile u32 io_irq_count;

void gpio_demo_irq_handler (uint32_t id, gpio_irq_event event)
{
    io_irq_count++;
}

void timer1_timeout_handler(uint32_t id)
{
    gpio_t *gpio_led = (gpio_t *)id;
    gpio_write(gpio_led, !gpio_read(gpio_led));

    u32 cnt = io_irq_count;
    io_irq_count = 0;
    printf("%lu,\n", cnt);
}

void fATTT(int argc, char *argv[])
{
    gpio_irq_t gpio_btn;

    // Init LED control pin
    gpio_init(&gpio_led, GPIO_LED_PIN);
    gpio_dir(&gpio_led, PIN_OUTPUT);    // Direction: Output
    gpio_mode(&gpio_led, PullNone);     // No pull
    gpio_write(&gpio_led, 0);

    // Initial Push Button pin as interrupt source
    gpio_irq_init(&gpio_btn, GPIO_IRQ_PIN, gpio_demo_irq_handler, (uint32_t)(&gpio_led));
    gpio_irq_set(&gpio_btn, IRQ_FALL, 1);   // Falling Edge Trigger
    gpio_irq_enable(&gpio_btn);

    // Initial a periodical timer
    gtimer_init(&my_timer, TIMER1);
    gtimer_start_periodical(&my_timer, 1000000, (void*)timer1_timeout_handler, (uint32_t)&gpio_led);
}
// добавить в консоль команды:
MON_RAM_TAB_SECTION COMMAND_TABLE console_commands_test[] = {
        {"ATTT", 0, fATTT, ": Test"}
};
Вписал прямо в HTTPD пример (web сервер).
Подал частоту на пин с гена. Определил, что более 300кГц уже не стабильно - пропускает прерывания при работе теста Web.
Приоритеты прерываний не стал менять - Оставил 300 кГц - вышло это:
Снимок1326.gif
Какие регистры, какие запреты прерываний и прочего? Нафиг туда лезть. Это не ESP.
Крутяться там себе задачи и всё работает:
Код:
CPU total run time is 1157311
TaskName        DeltaRunTime    percentage
loguart         268             <1%
IDLE            1126740         97%
wsbcast         22              <1%
Tmr Svc         138             <1%
TCP_IP          3923            <1%
esphttpd        8082            <1%
captdns_t       0               <1%
rtw_TDMA_       0               <1%
cmd_threa       1526            <1%
rtw_recv_       9804            <1%
rtw_littl       2384            <1%
rtw_inter       4257            <1%
rtw_xmit_       13              <1%
rtw_check       0               <1%

Task List:
==================================================
Name      Status Priority HighWaterMark TaskNumber
loguart         R       4       228     15
IDLE            R       0       36      2
TCP_IP          B       9       677     4
Tmr Svc         B       5       444     3
wsbcast         B       3       118     7
captdns_t       B       6       708     5
rtw_TDMA_       B       7       219     14
cmd_threa       B       6       221     11
rtw_xmit_       B       5       181     9
rtw_recv_       B       5       885     8
rtw_littl       B       10      439     12
rtw_inter       B       6       211     10
rtw_check       B       5       219     13
esphttpd        B       7       2370    6
 
Последнее редактирование:

pvvx

Активный участник сообщества
Скетч в RtlДурине:
Снимок1329.gif
Частота 155555Гц
В цикле Дурины есть доп. задержка для синхронизации процессов...
 

pvvx

Активный участник сообщества
Потестил наоборот, во время работы WiFi+Web: на измерение времени полупериодов, путем тупой вставки в процедуру gpio_irq переключения на другой фронт:
Код:
WdgPeriod = 10000 ms
CLK CPU         166666666 Hz
RAM heap        170648 bytes
TCM heap        64768 bytes
NetBIOS init, interface 0: 'RTL871X0' 1: 'RTL871X1'
RTL8195A[Driver]: port switch - port0(wlan2), port1(wlan1)
SoftAP ip: 192.168.4.1
RTL8195A[Driver]: set ssid [******]
RTL8195A[Driver]: start auth to **:**:**:**:**:**
RTL8195A[Driver]: auth success, start assoc
RTL8195A[Driver]: association success(res=2)
RTL8195A[Driver]: set pairwise key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4)
RTL8195A[Driver]: set group key to hw: alg:4(WEP40-1 WEP104-5 TKIP-2 AES-4) keyid:2
Station ip: 192.168.1.122
>attt
Period: 90121 us, Lo: 176 us, Hi: 89945 us
Period: 90121 us, Lo: 176 us, Hi: 89945 us
Period: 90120 us, Lo: 176 us, Hi: 89944 us
Period: 90121 us, Lo: 176 us, Hi: 89945 us
Period: 90120 us, Lo: 175 us, Hi: 89945 us
Period: 90121 us, Lo: 176 us, Hi: 89945 us
Period: 90120 us, Lo: 176 us, Hi: 89944 us
Period: 90121 us, Lo: 176 us, Hi: 89945 us
Period: 90121 us, Lo: 176 us, Hi: 89945 us
Period: 90120 us, Lo: 175 us, Hi: 89945 us
Period: 90121 us, Lo: 176 us, Hi: 89945 us
Period: 90120 us, Lo: 175 us, Hi: 89945 us
Period: 90120 us, Lo: 175 us, Hi: 89945 us
Period: 90120 us, Lo: 176 us, Hi: 89944 us
Period: 90120 us, Lo: 176 us, Hi: 89944 us
Period: 90120 us, Lo: 175 us, Hi: 89945 us
Period: 90120 us, Lo: 177 us, Hi: 89943 us
Period: 90121 us, Lo: 176 us, Hi: 89945 us
Period: 90121 us, Lo: 176 us, Hi: 89945 us
Period: 90120 us, Lo: 176 us, Hi: 89944 us
Period: 90120 us, Lo: 175 us, Hi: 89945 us
Осел говорит: Period: 90.16 ms, +Width: 89.92 ms, -Width: 0.160 ms
Какие-то несовпадения, та фиг с ними - по прерываниям всё равно никто ни частоту, ни период, не измеряет, кроме Nicolz :)
 

nikolz

Well-known member
сделал частотомер на ESP предел 1.5 Мгц. Реально измерял лишь 0.8 Мгц. время измерения 0.3 сек.
Кроме того, частотомер автоматом переходит на измерение периода, если частота меньше 1000 гц.
Это обеспечивает время изменения для частот более 1 Гц не более 1 сек.
А не замахнутся ли нам, скажем, на 100 мгц?
 
Сверху Снизу