恭喜,你发布的帖子
发布于 2023-09-26 19:50:22
24楼
以下是我的测试程序,硬件上Q0.0接线到I0.0,I0.0滤波选了最小的0.2us
ORGANIZATION_BLOCK MAIN:OB1
TITLE=程序注释
BEGIN
Network 1
// Q0.0以20us周期10us脉宽输出脉冲(50KHz)
LD SM0.1
MOVB 16#81, SMB67
MOVW 20, SMW68
MOVW 10, SMW70
PLS 0
Network 2
// I0.0接收Q0.0输出脉冲进行计数,在计数到1000000进入中断0
LD SM0.1
LPS
MOVB 16#F8, SMB37
MOVD 0, SMD38
MOVD 1000000, SMD42
HDEF 0, 0
ATCH INT0, 12
AENO
ENI
LPP
HSC 0
Network 3
// 以250ms为周期产生定时中断,每隔250ms进入中断1
LD SM0.1
MOVB 250, SMB34
ATCH INT1, 10
AENO
ENI
END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK SBR_0:SBR0
TITLE=子程序注释
BEGIN
Network 1
// 程序段注释
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=中断例程注释
BEGIN
Network 1
// 计数中断读HC0当前值获得中断响应延迟
LD SM0.0
MOVD HC0, VD0
END_INTERRUPT_BLOCK
INTERRUPT_BLOCK INT_1:INT1
TITLE=中断例程注释
BEGIN
Network 1
// 250ms定时中断获取当前HC0值减去上次值从而计算出两次定时中断期间HC0的计数差
LD SM0.0
MOVD HC0, VD4
MOVD VD4, VD12
-D VD8, VD12
MOVD VD4, VD8
Network 2
// 程序段注释
END_INTERRUPT_BLOCK
从监控数据看高计中断响应延迟在60us 左右,250ms 的定时中断读得的高计差值在12500。当脉冲频率提升到100KHz时高计中断响应延迟仍在60us 左右,250ms 的定时中断读得的高计差值在25001.数据是符合预期的。
请填写推广理由:
分享
只看
楼主