问题标签 [psoc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 试图了解 *ramVectorTable 如何到达 ramVectorTable[ ]
我试图了解这段代码的实际作用。特别是声明和初始化指针 ramVectorTable 之后的部分最让我困惑。
它是关于设置指定系统中断号的中断向量的函数。如果这有帮助的话,它适用于具有 ARM Cortex M3 的赛普拉斯 PSoC 5。
c# - 如何在 C# 和 C 中计算 CRC16-CCITT/KERMIT
我正在计算 CRC16-CCITT/KERMIT,以便检查 C# Winforms 应用程序和微控制器(PSoC5LP/Arm Cortex-M3)之间 64 字节数据包传输的数据完整性。我很接近,但只是没有完全让 CRC 计算在两者之间对齐,并且很难弄清楚原因。我计算 CRC 的示例数据包是:
02 03 01 02 03 04 05 07 08 09 0A 0B 00 00 06 0E 0C 0D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
在我的 Winforms 应用程序和这个在线 CRC 计算器中,这个数据包的 CRC 为 0x4D8C
由于这些排列,我假设 C# 计算中的计算是合法的。无论如何,这是代码。从这个页面中提取,唯一的变化是我硬编码了多项式(0x8408):
现在,问题在于为微控制器提供了一个有效的 CRC16-CCITT/KERMIT 计算器功能,该功能将为该数据包生成相同的 CRC。
这是我目前拥有的(从这个答案中提取):
我这样称呼它:
这是我得到一些有趣的地方。该数据包是 64 字节,但实际上(对于此数据包),只有前 29 个字节是我正在使用的数据。其余的只是填充以满足 64 个字节。当我在 WinForms 端计算 CRC 时,看起来它正在使用所有 64 个字节,包括填充。当我在微控制器端做同样的事情时,我得到了 0xE918 的结果。奇怪的是,如果我将长度参数限制为我感兴趣的 29 个字节,我会得到 0x4C8B,它非常接近我正在寻找的 0x4D8C。我还注意到,在我使用的在线计算器中,它声称输出的 XOR 应该是 0x0000。我在输出上使用 XORs 0xFFFF 的 C 函数。将其更改为 0x0000(并处理所有 64 个字节)给我 0x16E7。
所以我不确定问题出在哪里。这是我第一次使用 CRC,所以我可能会遗漏一些明显的东西。有任何想法吗?
预先感谢您的帮助!让我知道我是否应该提供任何其他信息。
c - ICM20948使用顺序
我目前正在开发基本例程,以便与 IMU 或惯性测量单元进行通信,TDK 的 ICM20948 - InvenSense 通过我自己开发的 PCB 使用 I2C 协议,我目前具有与之通信的功能,例如:
还有一些工作正常(我读过告诉我这是工作的寄存器)关键是ICM20948数据表设备没有指定我配置它以读取加速度数据的顺序,我找到了一个代码在 GitHub 上,更具体地说是https://github.com/dtornqvist/icm-20948-arduino-library,它是用 Arduino 编写的,我试图将它移植到我目前使用的语言 c,得到当前配置功能
之后我打电话给我的:
函数,它应该通过 UART 向我返回 45u 和 46u(加速度)寄存器信息的混合,但我正在接收下一个输出(我正在使用 Hterm 0.8.3 来捕获 uart 输出)
我没有真正的线索,即使我移动我的 pcb,产生加速度,结果保持为 0x0。有没有人使用过这类软件并且可以给我一些关于如何继续工作的建议?或者我的代码有任何我没有看到的重要错误?
android - 当我将函数调用移动到不同的按钮时,为什么我的 ble 应用程序会崩溃?
我目前正在尝试使我正在开发的应用程序更易于使用,但在尝试合并建立与 PSoC 4 BLE 连接所需的按钮数量时遇到了问题。最后,我想要一个按钮来处理服务的搜索、连接和发现。但是,当我在处理激活蓝牙无线电的方法下复制并粘贴代码(用于搜索、连接和发现)时,应用程序在遇到扫描回调时崩溃。我仍然是 Android 应用程序开发的新手,我正在尝试使用调试器,但我似乎被卡住了。第一个代码片段是我想要做的,第二个片段是被调用的扫描函数。以下代码段是调试器输出。
c - 使用 PWM PSoC 的直流电机速度和方向
我需要能够使用 PSoC LP5 和 L293D 改变小型直流电机的方向和速度。使用的电机是其中之一:https ://www.elecrow.com/dc-toy-hobby-motor-130-size-p-265.html 。通过更改输入,我能够在没有 PWM 的情况下更改方向,这给了我下表。
但后来我也不得不改变速度。该项目的原理图可以在下面找到。PWM 周期已设置为 1000。
我的代码如下所示:
电机现在只逆时针转动,然后停止 5 秒,然后再次做同样的事情。我尝试了其他组合,例如也使用 SPEED_Write,但没有得到我想要的结果。
任何帮助表示赞赏,在此先感谢:)
serial-port - 尝试从串行端口检索数据但程序卡在 getchar
我正在使用嵌入式系统将数据从 25 个传感器发送到我计算机上的腻子终端。效果很好。
我想将终端功能的读取添加到嵌入式系统(这样我就可以发送命令)。所以我尝试使用 getchar() 来读取我在 putty 终端上写的任何内容。首先,我只想获取字符并将字符打印回腻子上。它有点工作,但我的传感器数据应该每 500 毫秒打印一次,直到我在腻子中输入一个字符后才会打印。就好像我的代码卡在 getchar() 上并卡在 while 循环中,直到 getchar() 读取到一些东西。
这是我的 int main() 中的永远循环。我不会分享其余的,因为它并不是真正需要并且太笨重(它只是初始化模块)。在这个循环中,我正在读取一个传感器,尝试从 putty 读取,写入 putty,然后开始我的下一次扫描:
embedded - exp() math.cic 在循环中不起作用
我目前正在为学校项目开发 pid 调节器。由于电晕已经关闭了学校,我们无法获得任何硬件来测试它。所以我想在微处理器(PSoC5LP)上模拟 PID 调节器。所以我正在实现一个返回所选直流电机的阶跃响应的函数。
当我找到传递函数“(-3.47*exp(-6.36*s)+3.47))”的输出时,如果我在代码中手动定义“s”的值,我会得到正确的结果。但是当我在代码“未定义对“exp”的引用中将 s 设置为递增时。
问题似乎是我不能在循环中运行 exp 而增加它。在另一个项目中尝试过,唯一发生的事情是循环运行 10 次并打印出 exp() 以及循环运行的 nr 次(不起作用)
因此,如果我在循环中手动选择 S,它会起作用,但如果它增加它就会停止。我试图使用另一个变量并增加它,但它仍然不起作用
不工作
确实有效,但没有完成结果的增量如您所见,在循环中完成的唯一更改是“s”已被定义为一个值
这行得通
不这是错误:Build error: undefined reference to 'exp'
编译器输出的日志
--------------- 构建开始:04/28/2020 01:34:42 项目:Plotterkode,配置:ARM GCC 5.4-2016-q2-update 调试 ------ --------- 代码生成步骤是最新的。编译步骤是最新的,不需要做任何工作。arm-none-eabi-ar.exe -rs .\CortexM3\ARM_GCC_541\Debug\Plotterkode.a .\CortexM3\ARM_GCC_541\Debug\cy_em_eeprom.o .\CortexM3\ARM_GCC_541\Debug\CyDmac.o .\CortexM3\ARM_GCC_541\ Debug\CyFlash.o .\CortexM3\ARM_GCC_541\Debug\CyLib.o .\CortexM3\ARM_GCC_541\Debug\cyPm.o .\CortexM3\ARM_GCC_541\Debug\CySpc.o .\CortexM3\ARM_GCC_541\Debug\cyutils.o . \CortexM3\ARM_GCC_541\Debug\pc_uart.o .\CortexM3\ARM_GCC_541\Debug\pc_uart_PM.o .\CortexM3\ARM_GCC_541\Debug\pc_uart_INT.o .\CortexM3\ARM_GCC_541\Debug\pc_uart_BOOT.o .\CortexM3\ARM_GCC_541\Debug \pc_uart_IntClock.o .\CortexM3\ARM_GCC_541\Debug\isr_pc_uart.o 。step_respons':
C:\Users\Vikto\Desktop\plottercode\Plotterkode.cydsn/./plotter_position.h:125: undefined reference to
exp' collect2.exe:错误:ld 返回 1 退出状态命令“arm-none-eabi-gcc.exe”失败,退出代码为“1”。--------------- 构建失败:04/28/2020 01:34:42 ---------------
c - 我目前正在使用 PSoC 5LP。我想从 Psoc 5Lp 的 EEPROM 的第一行读取 8 字节的 HexaDecimal 数据
我能够在 EEPROM 的第一行写入 8 字节的十六进制数据,但我无法理解如何从 EEPROM 读取 8 字节数据并将 8 字节十六进制转换为十进制并将该十进制值保存为任何无符号整数。有没有最简单的方法可以在不使用 sprintf 的情况下将 8 字节十六进制转换为十进制,因为 sprintf 将值转换为字符类型并且我想将十进制值存储为无符号整数?
c - 我正在使用 PSoC 5。我想知道从 EEPROM 读取后如何将 8 字节十六进制转换为十进制
EEPROM数据:
我在读取数组中的第 0 行 EEPROM 后保存结果
Ex - Uint8 EEPROM_res[8];
我想将 HexaDecimal(0x8877665544332211) 转换为十进制 (9833440827789222417) 并将十进制值保存为整数数据类型以供进一步比较。8字节十六进制的最简单转换方法是什么?
c# - C# 中的 PSOC 端口连接
我在使用赛普拉斯的 PSOC Programmer 提供的 PP_COM_Wrapper dll 中的端口接口时遇到问题。我正在使用 CY8CKIT-0529 PSOC 5LP 原型设计套件。我能够成功打开电路板的端口,并验证我可以使用 PSOC 提供的 USB-I2C 桥对其进行写入。但是,当我关闭端口或检查端口是否打开时,命令会返回端口已关闭。对于 closeport() 命令,它返回 -1 和“端口未打开!” 对于 IsPortOpen() 命令,它返回一个 0,表示端口已关闭,并且没有错误消息。运行这两个命令后,我仍然可以通过 I2C 向电路板写入数据。我附上了我正在运行的用于连接、断开连接和检查以下状态的代码。任何关于我为什么无法关闭端口以及程序为什么认为端口已关闭的反馈将不胜感激。我错过了命令的使用吗?
PP_COM_Wrapper Api:赛普拉斯的 Api 文档
PP_COM_Wrapper 的使用:
PP_COM_Wrapper.PSoCProgrammerCOM_ObjectClass pp = new PSoCProgrammerCOM_ObjectClass();
开放端口:
端口是否开放:
断开端口: