Other Parts Discussed in Thread: TIDA-01555
主题中讨论的其他器件:TIDA-01555
您好!
我感谢您提前为这个问题提供的帮助。 在 BeagleBone Black Rev C 上进行 PRU 编程时(我是汇编编编语言编程的新手)、我一直在努力对其中一个端口进行轮询、以确定传入数字信号的频率。 我不清楚、因为出于某种原因、我无法生成.bin 文件生成 "pasm -b filename.p"(我使用此命令生成.bin 文件)
-它确实会为我尝试过的其他汇编器程序生成.bin 文件。
-在运行 pasm -b 命令后,程序中没有错误,因为它显示0错误
我将获得以下输出-
通过2:0错误,0警告
写入27个字的代码图像
错误:无法打开输出文件:SIGNAL.bin
//signal.p.是我的成员程序文件
我已编写以下程序-
.origin 0 //在 PRU 存储器中启动程序
.entrypoint start //程序入口点(用于调试器)
#define delay 49994
#define init 0 //选择延迟值以适应所需的频率
// 1提供20MHz 时钟信号,从此处增加
开始:
MOV r0、初始化
MOV R1、延迟
MOV R2、INIT
MOV R3、INIT
MOV R4、INIT
MOV R5、INIT
MOV R6、INIT //将延迟值加载到 R1中
MAINLOOP:
MOV R6、r30
MOV r0、R1 //R6由 r30或 P9_27上的输入分配
QBNE COUNTER1、r6、0 //将 R6值与0进行比较,如果事实证明有误,则跳转到 COUNTER1
QBNE COUNTER0、r6、1 //将 R6值与1进行比较、如果事实证明存在错误、则跳转到 COUNTER0
COUNTER1:
subr0、r0、1 //将计数器减1并循环(下一行)
QBNE COUNTER1、r0、0 //循环、直到延迟过期(等于0)
MOV r2、0 //R2是0时间周期的计数器、设置为0
添加了 R3、R3、R4 //R4是0时间计数器循环的本地计数器
添加了 R5、r5、1 //R5是1个时间计数器循环的本地计数器
MOV r4、0 //为了平衡执行周期,增加了一个额外的命令
将数据传输到主转换器变量 R3后、MOV r4、0 //R4设置为0
Qba MAINLOOP
COUNTER0:
subr0、r0、1 //将计数器减1并循环(下一行)
QBNE COUNTER0、r0、0 //循环、直到延迟过期(等于0)
MOV r3、0 //R3是计数器1、设置为0
添加 R2、R2、R5 //本地计数器1的最终值被转换为 global 计数器1
添加 R4、r4、1
MOV r5、0
Qba MAINLOOP //此操作用于将指针发送回 MAINLOOP,这使得程序是无限的
结束:
停止//结束未实现的 PRU 程序
感谢你的帮助