问题标签 [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.

0 投票
2 回答
576 浏览

pi - Microchip XC16 dsp.h 定义了不正确的 PI 值?

在 XC16 编译器的 DSP 例程头文件 (dsp.h) 中有以下几行:

但是,PI 的值实际上是(到相同的小数位数)是:

dsp.h 定义的值在小数点后第 16 位开始发散。对于双浮点运算,这是非常重要的。对于 Q15 表示,这并不重要。sin(pi/4) 的值也与小数点后第 16 位的正确值不同。

为什么 Microchip 使用的值不正确?是否有一些与计算三角函数值相关的深奥原因,或者这只是一个错误?或者也许没关系?

0 投票
1 回答
335 浏览

xc16 - 不能使用 typedef 枚举来存储状态信息

嗨 - 我正在使用带有 Microchip dsPIC33F CPU 的 XC16 C 编译器。我正在尝试使用枚举来存储设备的状态。我有访问者来获取和设置设备状态。状态被(或应该)捕获在一个名为“currentNodeState”的变量中,该变量声明如下:`

然后我在 set 访问器中使用它:

这会导致以下编译器错误:Node_IO.c:168:22: error: expected identifier or '(' before '=' token 关于为什么出现错误消息 Jim 的任何建议

0 投票
2 回答
625 浏览

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,因此不存在对齐问题。

删除1structsizeof值,所以看起来存在填充问题,但如果是这样,为什么?

谁能解释一下?我正在使用针对 16 位处理器的 Microchip XC16 编译器(基于 GCC)。

0 投票
1 回答
410 浏览

uart - PIC24FJ128GA010 Uart 不工作

我在 explorer 16 板上使用上面提到的 pic 控制器。我正在尝试配置 U​​ART,但它不起作用我的代码看起来像这样。

上面的代码不起作用。我只在我的主文件中初始化配置位和 Uart 初始化函数。寻求帮助。

问候 Sanket

0 投票
2 回答
1821 浏览

c - MPLAB XC16:混合 C 和汇编

我正在尝试将一些 C 和汇编语言混合在一起,但我有一段时间了。我对 C 有一定的经验,对汇编有一些经验,但我以前没有在同一个项目中使用过它们。

目前,我正在尝试编译最简单的项目,即 Q1.15 定点乘法。我实际上并不关心代码输出,我只需要编译一些东西以便我可以构建它。

myq15.h:

myq15.c

myq15.s:

我的“主”文件只是调用 q15_add() 和 q15_mul() 实例。

编译时,链接器状态:

同样,我试图弄清楚如何将程序集和 C 文件混合用于其他目的,但如果我不能让这个简单的程序工作,我就绝望了!

谢谢,

0 投票
1 回答
194 浏览

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),但与目标标志无关。

0 投票
1 回答
3308 浏览

c - 是什么导致宏名称错误后缺少空格?

我正在 MPLAB X v3.35 中为 PIC24F 开发一个项目。在过去几周的某个时间点,编译器开始对编译中的每一行给出以下警告。编译器行中的什么可能导致这种情况?列号似乎没有指向任何有意义的东西,唯一没有由 MPLAB 生成的是-DGIT_VERSION="v1.0-1-g14e8d84-d我在许多其他项目中使用过类似版本的标志。

0 投票
3 回答
567 浏览

pic - Microchip XC16下的malloc()是否保证产生字对齐地址?

如果对奇数地址上的内存进行 16 位访问,dsPic30/33 和 18E/F 部件将产生内存故障。使用 malloc() 分配堆内存时,返回地址是否保证字对齐?(即偶数)

你会记得,malloc 以字节为单位,而不是单词。

我能够找到的文档(16 位语言工具库参考手册 50001456J.pdf)在这个问题上是静音的。

==== 编辑:我应该补充一点,我只收到过来自 malloc() 的偶数(字对齐)地址,所以到目前为止一切都运行良好。尽管如此,如果我得到一个奇怪的地址,我的代码会导致一个陷阱(因为我确实执行了类似的操作((uint16_t *)foo)[3] = 20000;)。因此,我想确保 malloc() 始终返回偶数地址。

0 投票
0 回答
226 浏览

microchip - 如何分配代码xc16

我使用 MPLAB X IDE 和 XC16 编译器为 dsPIC33EV256GM104 处理器开发了两个程序。现在我必须将程序“合并”成一个(我必须只导出一个 HEX 文件),但第一个程序应该从地址 0x000000 开始分配,第二个程序从 0x005000 开始分配。

你能帮我解决这个问题吗?非常感谢您的帮助与合作

问候

0 投票
2 回答
268 浏览

microcontroller - Microchip XC16:我们可以使用它的地址访问端口吗?例如:&PortA?

正如我的问题所说,要通过其地址访问端口,我们可以将其写为“&PORTA”吗?

在我的问题中,我想使用Modbus Protocol从/向HMI读取/写入端口值。

我有一个结构数组:

HMI 每次读取数据时,都会读取寄存器&rwCoil_000x的当前值

每当 HMI 写入数据时,寄存器&rwCoil_000x都会更新。

相反,我想使用&PORTA来读取端口状态或更新端口状态。

可能吗 ??&如果可能的话,这是更新端口状态的正确方法吗?

或者有什么更好的方法,请指导我。

(我用的是dsPic33E系列)