完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我有一个PIC18F26K22项目。我试图在主循环中创建的17ms窗口期间以1mhz的速率扫描输入端口的值。为了说明我所看到的不寻常的行为,在每次扫描端口值时,我简单地将输出端口设置为扫描值。输出端口应该简单地跟随输入端口,最多延迟1us。当我用一个简单的按钮按下改变输入端口时,我看到输出端口的状态变化,最大延迟大约为0.9us。当我在输入端口上有一个31位的信号,其位宽为32us,没有变化。在输出端口,我的问题是,为什么不呢?以下是在我的100mhz逻辑分析仪上捕获的端口,用于当我通过按钮按下改变RB1(引脚22)上的状态时:如您所见,LATC2遵循RB1(0.9us延迟)。以下是在RB1(引脚22)上的位流期间捕获的端口:如您所见,数据流的LATC2上没有RB1的跟随这是我创建这些测试的主要C代码:
|
|
相关推荐
12个回答
|
|
|
32位计数器的循环开销几乎肯定超过1美元。你使用免费编译器吗?
|
|
|
|
|
|
是免费编译程序。但是我的逻辑分析器应该是正确的,它似乎在20000毫秒内退出了,并且捕获了0.9M延迟的按钮按压。WLOPS作为一个int,必须到30000,得到18.7MS的窗口,每个循环大约是0.6US。
|
|
|
|
|
|
作为一个简单的测试,我建议减慢输入脉冲,使它们更长和更慢的速率。也许起步较慢/慢,然后慢起来,如果它慢时工作。
|
|
|
|
|
|
我不太关心是否能够以超出可用范围的较慢的比特率完成这项工作。我已经用我的按钮按下示例说明了我的代码和硬件设置以最低的比特率工作。从我在数据表和谷歌的所有研究中,我没有发现任何东西。NG表示,在读取之前,需要读取端口后的延迟。在端口读取之后,我尝试了每个具有_u._us(10)的循环(确保每个RB1数据位至少有3次读取,即使延迟有效,对我来说也是不可行的),但是仍然不能工作。端口位是否已更新?这并不重要,因为按下按钮的例子显示最大延迟为0.9us,并且我看到最低延迟为0.4us,所以必须很快。
|
|
|
|
|
|
我只是在自由模式下编译了你的循环,它是~ 30个指令周期。在16MIPS时,我们差不多有2个指令周期,所以我认为您的时间测量有问题;您的时间测量误差大约为2倍。如果您真的需要以1MHz轮询I/O,请记住您有16个指令周期的时间预算,其中两个指令周期将由分支消耗。这将需要一些非常仔细的编码。你的评论说比特是32美圆的-为什么你需要在1兆赫进行轮询?你有没有理由用中断或外设捕获这个波形?
|
|
|
|
|
|
这是非常奇怪的,我的100MHz范围确认了32位的宽度和18.7MS的窗口。在调试和独立时,我得到相同的时间。你有第二个装置来确认你的时间吗?我没有任何额外的IOC引脚,CCP复杂性不需要在我看来,据我可以说,这应该工作。问题是你能扫描一个端口的最快速率是多少,就像我说的,即使有10us的延迟,给出大约100khz的速率,它也不能工作。我需要~1mhz,这样我可以把我的数据流解析成一个数组,即使需要必要的指令开销,我也可以这样做。第一位总是很低的,所以如果我能使信号下降到~1us的精度,我只需要沿着~15us移动,并且每32us就开始读取端口(以便进入预期的位中心)来解析它。整个过程是使用无延迟()的无定时器和无中断的。
|
|
|
|
|
|
我不是在测量时间,而是从编译器中查看程序集列表。在64兆赫PIC18上生成的代码不可能在1 US中执行。即使在PRO模式下,生成的代码也是24个循环,也就是1.5个。
|
|
|
|
|
|
哇,我有两个时间测量装置,我用了很多年了。他们过去都同意彼此的意见,也同意外部波发生器的意见。尽管如此,从范围上看,我已经指出了潜在的问题。我认为我的逻辑分析器使用的逻辑电平不同于PIC18。我将对此进行汇报。
|
|
|
|
|
|
我尝试以较慢的速度进行测试的目的是为了发现在所估计的时间上是否存在错误,并且可能显示出还有其他问题。错误的逻辑电平可能对单个或非常缓慢的转换工作,但在更高的速度下失败。如果不能用宽脉冲(与DC不一样)的慢速速率工作,那么它将永远不会运行得很快。仅仅几十年的经验,提出一些简单的测试来发现真正的问题。
|
|
|
|
|
|
谢谢你,杰克,如果我打出逻辑电平,我会走得更远。只是检查了范围和逻辑分析仪在2vp-p 1khz方波,两者都在不到1%的误差内点亮。我现在试着更努力地驱动我的光隔离器。
|
|
|
|
|
|
哇,一个优化我的光隔离器驱动电流和输出电阻的工作,以保持一个50%占空比15kHz方波的外观,它由一个PIC12输出,其VDD范围从3V到4.2V,在相同的15kHz下运行在4.2V PIC18的逻辑电平上。但我认为我有一些可以工作的东西,否则我会添加一些驱动程序。所以,我的第一个问题的答案是,我的15KHz数据流低比特的低电压恰好高于我的PIC18认为低电压应该是。另一方面,我的逻辑分析仪把它们看成是低点,谢谢所有的想法!
|
|
|
|
|
|
为了显示我可以扫描设想,我定时我的“下降沿”探测器循环超过15次尝试。在RB1实际下降沿后,边缘始终在1.3US和2.03US之间(平均1.75μs)。然后,我等待14.25us到达第一个总是低位的“中间”,此时我启动32us延迟,这成为我的“解析”时钟。这给了我一个“解析”时钟开始,它位于第一个总是很低的RB1位的实际中间的0.5us以内。我仍然无法理解为什么我能够在看起来不可能的时间相对于理论时间做这个边缘检测。以下是这个序列的捕获:注意E-B时间为1.97μs,这是当边缘下降RB1和当我退出检测环路时的延迟。这是一个测试BR1信号,只是交替位,实际的RB1信号将更随机,但总是第一位低。另外,我把WLop转换成int类型。下面是上面显示的循环代码:
|
|
|
|
|
只有小组成员才能发言,加入小组>>
5244 浏览 9 评论
2035 浏览 8 评论
1955 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3209 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2260 浏览 5 评论
779浏览 1评论
672浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
598浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
682浏览 0评论
579浏览 0评论
/7
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 02:14 , Processed in 1.490569 second(s), Total 98, Slave 82 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2026