完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨,我有一个应用程序,我必须读一些数字输入,但我不确定我的估计是否正确。我使用的是64MHz的PIC18F23。这里我有三个输入,其中一个是时钟,用上升沿发信号通知其他两个数字输入处的值是有效的(不幸的是,时钟输入不是在引脚处,在那里它可以用作外部中断)。时钟是2MHz。所以我必须永久地读取时钟输入,一旦它从0变为1,就读另外两个输入,并将结果转换为两个32位的值。用这些数据做的所有其他操作都是在IRQ之外完成的,这样主环上就不会有其他负载了。定时非常紧凑,但是根据我的计算,它可以工作,意味着有可能正确地读取输入信号。我的问题是:我的假设是否正确,32个时钟周期足以读取两个数字输入,将比特转换为两个32比特值并继续执行re时钟输入的AD循环?谢谢!
|
|
相关推荐
6个回答
|
|
那么每个时钟输入8个指令周期?似乎不太可能。
|
|
|
|
我有32个时钟周期的整个操作-你如何计算出8个指令呢?
|
|
|
|
忘了IRQs吧。如果一个中断发生在你接收数据的时候,它会把一切都搞糟。你的CPU将不能做IRQs或任何其他东西,而你正在接收。即便如此,这也是非常具有挑战性的。
|
|
|
|
首先……我不知道有PIC18F23这样的怪物。不管怎样……你的线程的标题提到了100kHz,你的叙述说输入位时钟是2MHz。我假设这意味着你必须每500纳秒(1/2MHz)读取两个输入引脚,每10微秒(1/100kHz)处理32位采样。每秒百万条指令。指令周期时间是62.5纳秒(1/16MHz),然后……假设在获取输入位期间中断被禁用,那么总共有8个指令(减去检查位时钟状态的循环开销)来将两个输入位转换为两个32位。Tiger-Values。我不愿发表平淡的声明,所以我将把结论留给你。有可能吗?我将提到,您不必使用循环;您可以拥有32个“位捕获”序列的序列,这些序列在检测到转换时测试时钟和移位。您仍然需要将每个位转换为32位整数。您甚至可以将其分解成四个序列,这些序列将位转换为8位整数。或者一些这样的事情。对于每个移位序列,您仍然有总共8个指令(包括对输入时钟中变化的位测试)。但是,暂时忽略移位内容,并继续进行自顶向下的考虑……使用这些32位值执行som的代码可以消耗多少时间Effice有用(也就是说,多少个指令周期)?记住您必须减去每个样本的移位过程所用的时间,以及每10微秒重复采样过程的“大循环”开销。查看汇编语言输出并计算指令周期。如果您想用汇编语言执行该操作,请编写一些代码。计数指令循环,问候,戴夫
|
|
|
|
在8位PICS上,每个指令周期需要4个时钟。64MHz/4=16MHz指令周期/秒,因此每2MHz时钟有8条指令。戴夫的建议是我能想到的可能起作用的唯一方法——展开所有东西,所以除了测试输入时钟信号之外没有任何循环。即使这样,我认为也不能保证可靠地工作。而且中断马上就出来了。听起来你已经有硬件在手了。也许有可能用18FXXK40或K42代替18FXX23,它具有完全的PPS能力。然后,您可以将数据和时钟插入SPI端口,并让硬件处理它。
|
|
|
|
好的,谢谢大家,看来我必须寻找另一种方法来阅读我的输入:
|
|
|
|
只有小组成员才能发言,加入小组>>
5223 浏览 9 评论
2024 浏览 8 评论
1949 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3198 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2252 浏览 5 评论
769浏览 1评论
655浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
583浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
667浏览 0评论
569浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-16 16:43 , Processed in 1.572491 second(s), Total 86, Slave 70 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号