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

Вопрос Реально ли считать длительность импульса с шагом 0.1мкс ?

selevo

Member
Если да, то как, я пока решений не нашел, только 1мкс через готовые функции.
 

nikolz

Well-known member
в есп нет внешнего прерывания счета таймера
можно по прерыванию читать таймер
сам таймер будет считать с данным квантом а может и нет уже не помню
так как 10 Мггц это предел для пинов
 

selevo

Member
ESP8266
каким -то таймером прерыванием по входу
какая длительность импульса
какая динамика импульса
что хотите получит в итоге и для какого сигнала по динамике
Отображать хочу параметры сигнала с выхода генератора и выводить на дисплей.
генератор выдает импульсы от 0.5мкс и пауза такая же (он отдельно может выставлять то и другое)
Пока все.
 

nikolz

Well-known member
ESP8266
каким -то таймером прерыванием по входу


Отображать хочу параметры сигнала с выхода генератора и выводить на дисплей.
генератор выдает импульсы от 0.2мкс и пауза такая же (он отдельно может выставлять то и другое)
Пока все.
Для высоких частот надо измерять частоту
а для низких - период
это классика измерения.
 

nikolz

Well-known member
если у вас единичный импульс с длительностью 200 нс
то измерять его надо 1-2 нс а не 100 нс
однозначно это не для ESP8266
 

selevo

Member
мне хватит точности 100нс :)
Есть ли прямой доступ к таймерам, я нигде не нашел как их затактировать , какие частоты используются, как их выбирать, установка прескалеров... какие есть плюшки еще...
 

nikolz

Well-known member
мне хватит точности 100нс :)
Есть ли прямой доступ к таймерам, я нигде не нашел как их затактировать , какие частоты используются, как их выбирать, установка прескалеров... какие есть плюшки еще...
начните с документации по SDK
подробной документации вы не найдете ее нет
посмотрите свалку pvvx
 

nikolz

Well-known member
я понимаю вас, что хочется всегда халявы
типа за 5 копеек получить частотомер до 10 мггц
но чудес не бывает
 

selevo

Member
Свалочка интересная....
Спасибо.


Частотметр мне не нужен.
Понятие частота здесь не подходит, так как длина импульса может быть короче паузы в 1000 раз.
Мне просто интересен чип, если он такое не сможет при всей своей широте и частоте ))\ то мне смысла нет заниматься его изучением\использованием, для моей задачи есть простое решение TIM1 на меге328 :)
 

nikolz

Well-known member
Свалочка интересная....
Спасибо.


Частотметр мне не нужен.
Понятие частота здесь не подходит, так как длина импульса может быть короче паузы в 1000 раз.
Мне просто интересен чип, если он такое не сможет при всей своей широте и частоте ))\ то мне смысла нет заниматься его изучением\использованием, для моей задачи есть простое решение TIM1 на меге328 :)
правильно, нет смысла
он такого не сможет так как его задача wifi и сравнительно сложная обработка данных
ваша задача для более простой структуры железа но более быстродействующей по прерываниям работы счетчиков
 

pvvx

Активный участник сообщества
Если да, то как, я пока решений не нашел, только 1мкс через готовые функции.
По прерываниям, если активен WiFi, такое не реально. Джиттер из-за запрета прерываний превышает измерение в сотни раз.
Путем замера через прием SPI/I2S - на пределе, даже при макс. разгоне CPU ESP8266 до 300+ MHz :) ...
 

pvvx

Активный участник сообщества
ESP8266
каким -то таймером прерыванием по входу


Отображать хочу параметры сигнала с выхода генератора и выводить на дисплей.
генератор выдает импульсы от 0.5мкс и пауза такая же (он отдельно может выставлять то и другое)
Пока все.
Логика IO портов тактируется частотой кварца - 26МГц, шина к IO порту - так-же 26МГц + на ней есть FIFO, что внесет ещё джиттер...
Самый быстрый и доступный аппаратный счетчик на ESP8266 - счетчик тактов CPU. Норма у данного CPU 80 или 160 МГц.
В итого, без ОС, линейным опросом ножки в порту IO, на ASM, вы достигните максимального шага измерения не выше 0.04 мкс (1/26МГц).
 

selevo

Member
звучит фантастично....
С учетом того что я еще ничего не видел про доступ к таймерам этого процессора.
 

nikolz

Well-known member
Логика IO портов тактируется частотой кварца - 26МГц, шина к IO порту - так-же 26МГц + на ней есть FIFO, что внесет ещё джиттер...
Самый быстрый и доступный аппаратный счетчик на ESP8266 - счетчик тактов CPU. Норма у данного CPU 80 или 160 МГц.
В итого, без ОС, линейным опросом ножки в порту IO, на ASM, вы достигните максимального шага измерения не выше 0.04 мкс (1/26МГц).
взял ваше решение для получения точного времени.
не могу понять логику функции
get_mac_time()
вот этот момент
------------------------------
ux.dw[0]=ptr[0];
ux. dw[1]=ptr[1];
if (ux.dw[1]!=ptr[1]) {...}
-------------------------------
но условие никогда не исполнится т к выше ux. dw[1]=ptr[1];
 

nikolz

Well-known member
pvvx,
можете объяснить следующий эффект.
Беру Ваше значение как вы его называете: "принятый TSF от внешней AP"
*((volatile uint32 *)MAC_TIMER64BIT_COUNT_ADDR);
и беру значение системного времени функцией
system_get_time();
далее делаем следующий тест
в user_init()
запоминаем начальные значения
T1=*((volatile uint32 *)MAC_TIMER64BIT_COUNT_ADDR);
T2=system_get_time();
далее запускаем таймер с циклическим перезапуском на 10 секунд
а в колбеке таймера вычисляем прошедшее время от старта
T3=*((volatile uint32 *)MAC_TIMER64BIT_COUNT_ADDR)-T1;
T4=system_get_time()-T2;
===================================
естественно ожидать
что T3 будет прыгать относительно T4 ну хотя бы микросекунд на 100
но в действительности получаем статистическую разницу в 2 мкс вне зависимости 10 секунд прошло или 1000
иногда но редко в минус 2 мкс.
например
T3=11100000021
T4=11100000023
----------------------
вопрос За что боролись?
 
Сверху Снизу