问题标签 [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 投票
1 回答
71 浏览

optimization - 如何为每个函数部分切换编译器的优化级别?

如何为每个函数在不同级别上切换编译器 (xc16) 的优化级别?

例如:

0 投票
1 回答
484 浏览

disassembly - xc16获取反汇编(listing.disasm)文件的命令是什么?

我想listing.disasm为我的项目获取反汇编 () 文件。我当前的编译命令生成 .elf、.map 和 .hex 文件。我如何(或什么命令)产生一个单一的listing.disasm?注意:我有多个 C 文件,但我需要一个反汇编文件。

我知道 MPLAB X IDE 中有一个选项可以在构建时创建 listing.disasm。但我正在使用批处理文件构建。

编译器:XC16 处理器系列:PIC24F

0 投票
1 回答
307 浏览

c - XC16 编译器 - 为 BTSTS 创建内存操作数的内联汇编约束(间接内存寻址)

我正在尝试创建的是调用 BTSTS 指令的高级方法。

到目前为止我尝试了什么:

以上产生以下汇编输出:

但这不是我想要的。该位应直接在内存中设置,以便指令是原子的:

完成它的正确方法是什么?

最接近的方法如下:

这里的“a”是一个全局变量而不是一个局部变量

这次生成以下汇编输出:

它好一点,但是我不想明确指定它周围的大括号 [%0]。编译器/汇编器没有办法知道需要间接内存寻址吗?

编辑:我又尝试了一件事。尽管文档中没有提到“m”约束,但我尝试了它

上面会产生类似的东西

这也是不正确的,不会改变r。也许没有提到“m”约束,因为它是错误的?

顺便提一句。正确的代码是

或类似的东西

0 投票
1 回答
289 浏览

c - UART PIC24 - 接收连续的 ASCII 字符流

我目前正在使用带有 UART 的 PIC24,并且能够接收(Rx)和发送(Tx)字符。当尝试接收连续的字符流时会出现问题,其中开始位和停止位之间没有延迟。

UART设置为;7 个数据位,1 个奇偶校验位和 1 个停止位,1200 波特

在终端上显示接收到的字符时,它表明只有某些字符才能正确打印。我不认为这是波特率错误,因为当开始位和停止位之间的小延迟(即按住键盘上的键)时,我能够正确接收和打印字符。

要读取连续发送的两个字符,我正在执行以下操作。

0 投票
1 回答
86 浏览

c - time(NULL) 在 PIC-IoT WG 开发板上返回 0

我正在使用 PIC-IoT WG wifi 开发板开展一个项目。我正在尝试修改演示代码以便能够在我自己的服务器上使用它。该演示在几个地方使用了这样的代码:

每次我打开它时,它都会在 15-20 分钟内尝试连接到服务器,但是这些代码部分没有运行,time(NULL)似乎返回 0。

据我了解,如果是 PIC 微控制器 time(NULL) 应该返回指令周期数。

为什么返回0?为什么它停止返回0?

0 投票
2 回答
929 浏览

microcontroller - 如何将 dsPIC33 HEX 文件转换为二进制文件?

我在 dsPIC33 上的应用程序有一个 HEX 文件,现在我想通过串行方式将文件发送到微控制器。

由于编译器生成的 HEX 文件是 intel hex 格式,我尝试使用 将其转换为二进制文件arm-none-eabi-objcopy,但正如预期的那样不起作用。

是否有任何工具可以将 HEX 或 ELF 文件转换为 dsPIC33 的原始二进制文件?

0 投票
1 回答
132 浏览

delay - 我们可以为 dspic33ep256mu814 控制器的 mplab 中的 xc16 中的 _delay_ms 添加延迟函数的限制是多少?

任何人都可以解释为 dspic33ep256mu814 控制器的 MPLAB 中的 xc16 编译器中的延迟“_delay_ms()”标识符给出的最大限制吗?

提前致谢。

0 投票
0 回答
57 浏览

struct - C:访问具有奇数编号的结构时出现地址陷阱错误。成员

我正在使用 MPLABX 和编译器 xc16-gcc 为 16 位 dsPIC33CH128MP508 微控制器开发。我正在编写通过 I2C 从 RTC 读取的代码。我定义了以下结构:

struct 的问题sRTC_TIME_t有奇数个成员,内存对齐由编译器自动打包。从 RTC 读取也需要打包结构。

当试图读取第一个成员sec 时,代码会使用TRAPS_ADDRESS_ERR = 2, /** Address error Trap vector */.

sRTC_TIME_t time;

second_reading = time.sec.SECONDS;

当我们在结构中添加第八个虚拟成员时,sRTC_TIME_t没有错误!

这个问题的根源可能是什么?

0 投票
0 回答
82 浏览

atomic - 使用 CPSNE 指令在 dsPIC33F 上进行比较和交换/交换

有没有更好的方法在 dsPIC33F 上实现“比较和交换”的互锁变体?

是否有完全避免 DISI 的变体,因为“[...] 此指令不会阻止优先级 7 中断和陷阱运行。”

0 投票
0 回答
74 浏览

c - XC16 反汇编 (uint32) & (uint32) 操作

我正在试图弄清楚一些 uint32 操作在 16 位 dsPIC 上需要多少个周期。我从按位 AND 开始并编写了以下程序:

查看反汇编以查看编译器为程序集提出的内容,我得到以下信息:

20 个周期,6 个 I/O 移动和 14 个内核。这对我来说看起来很疯狂。难道就不能这样做吗?

这将核心周期降至 2,这至少对我来说是合乎逻辑的(2 个 16 位宽的 AND)。我不明白的编译器是什么?