问题标签 [xc8]
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 - 为什么这个简单的 PWM 在 xc8 中不起作用
我知道互联网上有很多例子,但是这段代码需要什么才能工作?
频率振荡器 = 4mhz
周期 = 0.25us
duty_cicle = 250
预分频 = 16
PR2 = 124
我想看看 :
PWM 周期 = 2ms
任务周期 = 1ms
真诚的宁
c - 传递结构时 XC8 编译器错误,499
我一直在尝试编译代码。我对 XC8 编译器很陌生。我有以下代码。
主程序
bmp280.h
bmp280.c
执行此代码后,我收到错误消息
如我所见,没有错字。命名是正确的。我也希望结构被正确传递。
在 XC8 编译器中我需要注意什么新东西吗?
这是针对pic16f1618
微控制器的。
Makefile-impl.mk
c - 如何在#define 中评估逗号
我正在使用 XC8 编译器开发一个带有 PIC 的小型嵌入式应用程序。在 XC8 中设置引脚的使用(输出或输入),程序员应该执行如下指令:
尤其是:
- 寄存器前缀中的 TRIS(常量)
- A是端口
- bits 是后缀(常量)
- RA0 是引脚的名称
我想要做的是用人类可读的名称定义所有引脚,例如:
并以这种方式定义一些类似SET_OUTPUT
或使用的宏: .SET_INPUT
SET_OUTPUT(LED_1)
我试图做的是这两个宏:
但是,先前定义的常量内的逗号不会扩展并解释为单个参数。我也试过:
没有成功。
本质上与这个问题相反:Comma in C/C++ macro
它是否存在解决方案或更方便的方法来做到这一点?
c - 错误:(195) 表达式语法
我有一个为 PIC18 和 PIC24 编译的代码库。
在为 PIC24 上的新传感器编写驱动程序时,我为 PIC18 重新编译并且压力计算失败:
在编译时,会抛出错误i2c.c:546: error: (195) expression syntax
(第 546 行是该filter_pressure_left =
行)。
我看不出任何语法错误来抛出这个错误,这是由使用 xc16-gcc 编译时没有抛出的支持。
编译器版本:
- XC16-GCC V1.23
- XC8 V1.33
要求的附加信息周围使用的值:
pic - 需要使用 mplab 和 xc8 编译器读取 pic16f688 的模拟输入
我正在使用 PIC16f688 尝试读取模拟输入并根据读取的电压打开或关闭灯。使用这张图片,我已经成功地让灯闪烁使用开和关。这是我用于此的代码。
在阅读了不同的内容后,我最终得到了这段代码来尝试读取模拟输入。
当我运行它时,无论输入是什么,灯都会亮起,包括输入接地时。
我在 MPLab 中使用 XC8 编译器。
pic - MPLAB xc8 pic16f688 pragma for WDTE Ignored
使用 #pragma 时,CONFIG = WDTE OFF
我收到一条消息:
WDTE 设置为 ON 我要更改它吗?
我确实回答是的。
我担心的是其他配置语句被忽略了吗?我说不出来。新话题。尝试用 PIC16F688 使 LED 闪烁。
我让它工作,有点。我确保#pragma 语句在#include 和#define 之前。接下来是#pragma
不起作用的语句块。
我采用十六进制方法来避免定义 ON 和 OFF 我在 RUN 下拉菜单下使用 MPBLAB 的“设置配置位”来设置位,将它们更改为十六进制。这仍然给出了WDTE
,然后错误消失了,我发现了一个 PWRTE CP 错误。我发现我已将 MCLRE 设置为 1,因此将其设置为 0 我仍然收到配置错误消息,但程序运行了。
然后,我只使用了语句#pragma config CONFIG 0xFF5
。我没有收到配置错误,但警告说 0xFF5 将自动截断为0xFFF
.
现在一切都运行了,但是,我无法运行调试。
现在有这个问题,我想这是一个不同的线程。然而,问题出现了,配置字是如何形成的,哪些位构成了字的一部分。我试图从一些寄存器中猜测,但一无所获。很高兴知道。此外,注意 0xFFF 将字中的每个位设置为 1 意味着所有 my #pragma config statements (bits) = 1
,这是没有意义的。
我使用其他故障排除方法使我的程序和电路运行。我想在将来使用调试。我已经在 PICkit 3 指南中阅读并重新阅读了PGD
关于PGC
在芯片上运行时钟的信息。我的示波器说我有一个运行时钟(内部 4 MHZ)。PIC16F688 不使用术语PGD
和PGC
,但引脚分别标有ICSPDAT
和ICSPCLK
。为什么调试不起作用?
c - 宏定义的 C typedef
我这里有一点复制/粘贴问题。我有一些数据类型,我根据我需要的位数来定义类型。我使用的是 8 位 MCU,因此使用数据适合的最小类型很重要。
代码最终看起来像这样:
我不喜欢这些行:
因为 int16_t 和 MY_TYPE_T 是复制粘贴的。此外,由于我在多个变量上使用它,因此存在复制/粘贴问题,因为我在 MY_TYPE_2_T 和 MY_TYPE_3_t 中重复相同的代码(注意:实际上并未在项目中命名这些“MY_TYPE”)。
我正在寻找一种方法来根据位数对类型进行 typedef 并输出有关该类型的消息,或者如果类型变得太大则给出错误。
xc8 - XC8 从顶层 ROM 构建字体表
我在 XC8 (1.37) 中编写了一个准系统程序模板,用于为 18F 系列开发和测试新的 GLCD 功能。编程通过 PICkit3 完成。由于我需要快速重新编程几次代码,因此尽可能快地编程非常重要。通常,代码大小约为 2K,编程时间不到 10 秒,一切都很好,直到我必须使用字体表,定义为:
现在,只添加了 400 美元的字节,编译器将表放在 ROM 的末尾,64K 内存的编程需要超过 1 分钟。
有没有办法避免这种情况?
我试图手动限制 MPLABX 选项中的内存范围,但这很烦人并且有点不安全(有时部分代码被截断)。
compilation - 微芯片 xc8 编译器 (908) 退出状态 = 1
我正在使用开发板提供的微芯片源代码为 16F1947 开发 dali 代码。
感谢我的公司,我有专业版的编译器,所以我能够使用 PRO 模式构建以前的项目,以及构建工具提供的所有优化。
当我从 microchip 站点下载 dali 项目并尝试使用 xc8 [在 PRO 模式下] 编译它时,构建失败并显示错误消息:
aspic 是他们的汇编程序,从 XC8 上的微芯片用户手册中不清楚信号 11 指的是什么。进一步的测试表明,这与他们的许可证管理器 xclm 有关,因为如果我尝试在没有任何优化的情况下构建他们的代码,并且在自由模式下,它构建得很好。众所周知,这会导致臃肿的代码充满不必要的循环和变量被来回复制。
我在做傻事吗?还是我只需要花更多的钱购买最新最好的编译器版本。
提前谢谢,wb
performance - PIC 16f1827 ADC 转换太慢 XC8
我按照本教程更改了我的微控制器 16f1827 的代码。我还更改了代码的功能。如果 ADC 值超过最大值的一半,它应该打开一个 LED。ADC 值,如果小于一半,则关闭 LED。
代码在 XC8 中编译没有错误。问题是 PIC 检测到 ADC 变化太慢。如果我将输入引脚连接到正参考值,它会以大约 2 秒的延迟打开 LED。当我将 ADC 输入更改为 0v 时也会发生同样的情况。检测到所有变化都非常缓慢。为什么ADC工作这么慢?