人!我以为将其包含在原始问题中,但没有。
投票时,您可以评论为什么要投票?
请使用它来使学习者完成他们的事情,并将他们的想法/问题更好地传达给他人。并非所有人都知道您的想法。谢谢
简而言之: 我需要将两个Android手机(彼此靠近或不靠近;两种情况下放置)的时钟彼此同步,并且精度最高为几毫秒(最大10、20毫秒)。
我正在做什么: 我有一个正在开发的应用程序,用于测量不同的GSM网络统计信息。我正在使用电话管理器来获取三种状态(“摘机”,“空闲”,“振铃”)。电话A呼叫电话B。两个电话都在运行一个应用程序,该应用程序保存有关上述状态的时间戳。进行多次通话后,我将时间戳导出到数据文件中,并分析它们以获得不同的网络统计信息。
我的问题是什么: 我必须交叉匹配时间戳才能获取统计信息。现在的问题是,如果电话的时钟不同步,那么我将无法获得准确的统计信息(例如,在电话A发起呼叫后,使电话B处于振铃状态需要花费多少时间?)。
我尝试过的事情:到目前为止,我已经尝试将时钟与NTP,GPS或原子钟同步。我已经使用ClockSync(Android应用程序)从原子钟获取两个电话时钟的偏移量。问题在于此偏移量取决于从手机到服务器的网络数据包的RTT。当我两次检查偏移量时(连续两次点击刷新),我的差异最大为100毫秒。两部手机的偏移都可能导致长达200毫秒的误差,这对我来说是无法接受的。
所有其他同步应用程序/方法都存在相同的问题。
可能的前进方向:(我认为)。我可能会开发一个应用程序
您的意见/建议:怎么做?并对最后一部分中描述的方法进行评论。
我使用ESP32 DEVKIT 链接和Adafruit VS1053 Codec + MicroSD Breakout - MP3/WAV/MIDI/OGG Play + Record - v4 链接来录制然后播放声音。我正在使用 Arduino IDE 进行编码。
我现在面临一个问题,该模块使用硬件中断来进行播放。但是当我尝试播放音轨时,ESP32 会一次又一次地重置。调试日志显示:
Guru Meditation Error: Core 1 panic'ed (Interrupt wdt timeout on CPU1)
Core 1 register dump:
PC : 0x400d1280 PS : 0x00060834 A0 : 0x800d128f A1 : 0x3ffc0bb0
A2 : 0x3ffc241c A3 : 0x3ffb1f20 A4 : 0x800d1779 A5 : 0x3ffb1f00
A6 : 0x3ffc241c A7 : 0x3f400f9c A8 : 0x800d1280 A9 : 0x3ffc0b90
A10 : 0x0000002b A11 …Run Code Online (Sandbox Code Playgroud) 我引用维基百科:
看门狗定时器(WDT;有时称为计算机正常运行或COP定时器,或简称为看门狗)是一个电子定时器,用于检测计算机故障并从中恢复.
在使用STM32F429I-Discovery时,我遇到了一个术语[in "stm32f4xx.h"],它使用寄存器来禁用Watchdog:
#define ADC_CR1_AWDIE ((uint32_t)0x00000040) //Analog Watchdog interrupt enable
Run Code Online (Sandbox Code Playgroud)
在这里,我无法理解模拟看门狗
如果可能的话,
#define ADC_CR1_JAWDEN ((uint32_t)0x00400000) //Analog watchdog enable on injected channels
Run Code Online (Sandbox Code Playgroud)
什么是注入渠道?