问题标签 [xc16]
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.
pi - Microchip XC16 dsp.h 定义了不正确的 PI 值?
在 XC16 编译器的 DSP 例程头文件 (dsp.h) 中有以下几行:
但是,PI 的值实际上是(到相同的小数位数)是:
dsp.h 定义的值在小数点后第 16 位开始发散。对于双浮点运算,这是非常重要的。对于 Q15 表示,这并不重要。sin(pi/4) 的值也与小数点后第 16 位的正确值不同。
为什么 Microchip 使用的值不正确?是否有一些与计算三角函数值相关的深奥原因,或者这只是一个错误?或者也许没关系?
xc16 - 不能使用 typedef 枚举来存储状态信息
嗨 - 我正在使用带有 Microchip dsPIC33F CPU 的 XC16 C 编译器。我正在尝试使用枚举来存储设备的状态。我有访问者来获取和设置设备状态。状态被(或应该)捕获在一个名为“currentNodeState”的变量中,该变量声明如下:`
然后我在 set 访问器中使用它:
这会导致以下编译器错误:Node_IO.c:168:22: error: expected identifier or '(' before '=' token 关于为什么出现错误消息 Jim 的任何建议
struct - 为什么这个 typedef 给出的 sizeof() 值比预期的大?
我使用这种形式的 typedef 来简化对微处理器寄存器和其中位字段的访问。
不幸的是,sizeof(REG_8)
返回 2 而不是预期的 1。 REG_16 和 REG_32 的类似定义返回大小为 2 和 4,正如预期的那样。sizeof(uint8_t)
并按sizeof(int8_t)
预期返回 1。
该类型按预期工作。例如,
给出a.b2
值 1,因此不存在对齐问题。
删除1struct
的sizeof
值,所以看起来存在填充问题,但如果是这样,为什么?
谁能解释一下?我正在使用针对 16 位处理器的 Microchip XC16 编译器(基于 GCC)。
uart - PIC24FJ128GA010 Uart 不工作
我在 explorer 16 板上使用上面提到的 pic 控制器。我正在尝试配置 UART,但它不起作用我的代码看起来像这样。
上面的代码不起作用。我只在我的主文件中初始化配置位和 Uart 初始化函数。寻求帮助。
问候 Sanket
c - MPLAB XC16:混合 C 和汇编
我正在尝试将一些 C 和汇编语言混合在一起,但我有一段时间了。我对 C 有一定的经验,对汇编有一些经验,但我以前没有在同一个项目中使用过它们。
目前,我正在尝试编译最简单的项目,即 Q1.15 定点乘法。我实际上并不关心代码输出,我只需要编译一些东西以便我可以构建它。
myq15.h:
myq15.c
myq15.s:
我的“主”文件只是调用 q15_add() 和 q15_mul() 实例。
编译时,链接器状态:
同样,我试图弄清楚如何将程序集和 C 文件混合用于其他目的,但如果我不能让这个简单的程序工作,我就绝望了!
谢谢,
gcc - 是否可以从代码中访问 XC16/gcc 目标标志?
我正在使用 Microchip 的 XC16 编译器为 Microchip dspic33 系列处理器编译代码。
我有一些在多个应用程序中使用的代码(即它在代码库中)。对于某些模块,我想确保在编译期间设置某些编译器标志,最好使用预处理器。特别是,我对测试 -mauxflash 和 -code-in-auxflash 目标标志感兴趣。
有没有办法在编译期间测试编译器选项?
我尝试使用 xc16-gcc -dM -E - < /dev/null 转储所有#defines,但似乎没有任何改变。有 3 个与 auxflash 相关的定义(AUXFLASH_LENGTH、__AUXFLASH_BASE 和 __HAS_AUXFLASH),但与目标标志无关。
c - 是什么导致宏名称错误后缺少空格?
我正在 MPLAB X v3.35 中为 PIC24F 开发一个项目。在过去几周的某个时间点,编译器开始对编译中的每一行给出以下警告。编译器行中的什么可能导致这种情况?列号似乎没有指向任何有意义的东西,唯一没有由 MPLAB 生成的是-DGIT_VERSION="v1.0-1-g14e8d84-d
我在许多其他项目中使用过类似版本的标志。
pic - Microchip XC16下的malloc()是否保证产生字对齐地址?
如果对奇数地址上的内存进行 16 位访问,dsPic30/33 和 18E/F 部件将产生内存故障。使用 malloc() 分配堆内存时,返回地址是否保证字对齐?(即偶数)
你会记得,malloc 以字节为单位,而不是单词。
我能够找到的文档(16 位语言工具库参考手册 50001456J.pdf)在这个问题上是静音的。
==== 编辑:我应该补充一点,我只收到过来自 malloc() 的偶数(字对齐)地址,所以到目前为止一切都运行良好。尽管如此,如果我得到一个奇怪的地址,我的代码会导致一个陷阱(因为我确实执行了类似的操作((uint16_t *)foo)[3] = 20000;
)。因此,我想确保 malloc() 始终返回偶数地址。
microchip - 如何分配代码xc16
我使用 MPLAB X IDE 和 XC16 编译器为 dsPIC33EV256GM104 处理器开发了两个程序。现在我必须将程序“合并”成一个(我必须只导出一个 HEX 文件),但第一个程序应该从地址 0x000000 开始分配,第二个程序从 0x005000 开始分配。
你能帮我解决这个问题吗?非常感谢您的帮助与合作
问候
microcontroller - Microchip XC16:我们可以使用它的地址访问端口吗?例如:&PortA?
正如我的问题所说,要通过其地址访问端口,我们可以将其写为“&PORTA”吗?
在我的问题中,我想使用Modbus Protocol从/向HMI读取/写入端口值。
我有一个结构数组:
HMI 每次读取数据时,都会读取寄存器&rwCoil_000x的当前值
每当 HMI 写入数据时,寄存器&rwCoil_000x都会更新。
相反,我想使用&PORTA来读取端口状态或更新端口状态。
可能吗 ??&如果可能的话,这是更新端口状态的正确方法吗?
或者有什么更好的方法,请指导我。
(我用的是dsPic33E系列)