问题标签 [mplab]

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 回答
4382 浏览

loading - Microchip:如何在 MPLAB X 中加载多个 HEX 文件

我使用 MPLAB X(有时是 MPLAB 8)并完成了一些项目。我有这些十六进制文件:

  • 引导加载程序.hex
  • 魔术标志.hex

Bootloader 从地址 0x0 加载到 0x7FF。魔术标志位于地址 0x40 中(因此在引导加载程序区域中)。

现在我需要在 MPLAB X 中设置项目以加载所有内容(bootloader+magicFlag+app)。可以加载引导加载程序,然后是magicFlag,然后设置保留闪存并在应用程序上工作并仅加载应用程序区域(从0x800到0xFFFF),但这对我来说不太舒服。例如,当我使用 iSYSTEM 的 WinIDEA IDE 与飞思卡尔合作时,我能够设置许多要加载的 SX 文件,非常简单、快速并且可以正常工作。但是当我用 MPLAB XI 尝试它时,总是会出错:

(944) appl.hex 和 bootloader.hex 之间地址 0h 的数据冲突。

我尝试了什么:

  • 用于在项目属性中加载的设置文件(加载部分)
  • 在项目属性中设置内存范围(ICD 3 部分)

但我认为加载 ICD 3 没有问题。因为当 MPLAB X 创建统一的 hex 文件时,错误及时出现。

想象一下,这是我的链接器的一部分:

我提醒一下,这不仅是我的项目,而且只是带有 magicFlag 的引导加载程序,而且我只有来自 appl 的源代码。当然,最好在一个项目中拥有带有 appl 的 bootloader 源代码。

所以,MPLAB X 害死我了,请帮助我 :-)

0 投票
1 回答
458 浏览

c - 将代码从 PIC18F2480 移植到 PIC18F2680 微控制器

我在 MPLAB 中为 18F2480 处理器编写了引导加载程序代码。我目前的项目需要我将微控制器升级到 18F2680。

(两个芯片的主要区别是2480有16K程序存储器/768B RAM/256B EEPROM,而2680芯片有64K程序存储器/3K RAM和1K EEPROM。)

我已将所选设备更改为“PIC18f2680”,并将 2480 头文件替换为 18f2680.h 文件。我在使用我通常用来更新 2480 固件的程序与 2680 通信时遇到问题。(我无法提供有关此软件的详细信息,因为它是专有的。)

我只是想知道将代码从 2480 迁移到 2680 是否存在任何已知问题/并发症。

FWIW,我已经成功地将 2480 替换为具有 32K 程序存储器、1536 RAM 字节和 256B EEPROM 的 2580。代码工作正常,我所要做的就是替换头文件并在 MPLAB 中选择不同的设备。是否与 24/2580 和 2680 的 EEPROM 大小不同有关?

0 投票
3 回答
6965 浏览

pic - C30 PIC 编译器无法编译(MPLAB-X IDE)

我正在尝试编译一个非常简单的程序,我不明白为什么它不能编译。这是我的程序:

.h 和 .c 文件被添加到项目中。

和 .c 文件:

我正在使用带有 C30 编译器的 MPLAB-X IDE,它给了我这个错误:

我不明白为什么,如果我将我的函数放在 Main.c 中并且我不包含 #include "RunLengthAlgorithm.h" 它可以工作,但我无法让它工作包括一个文件。

0 投票
0 回答
100 浏览

microchip - 将 PmodOLED 从 JB 移动到 JA 头文件 - 32MX4 (MPLAB X IDE)

我是微控制器编程的新手,我的第一个任务是使用 PmodWiFi 插件接受 WiFi 连接。我读到 WiFi 芯片的默认引脚/端口是 32MX4 上的 JB 接头。问题是我目前在 JB 标头中安装了 PmodOLED 插件,所以我想将它移到 JA 标头中。在PmodOLED.h(我已经导入到我的库中)中,我更改了以下几行以对应于 JA 标头而不是 JB 标头中的端口:

但是,当我运行将 PModOLED 附件插入 JA 标头的代码时,它没有响应并且屏幕为空白。如果您能告诉我如何修改我的代码以便可以在 JA 标头中安装 PmodOLED 插件,我将不胜感激。

提前感谢您的帮助,古维

0 投票
1 回答
899 浏览

microcontroller - MRF24WB0MA WiFi 带 32MX4 初学者教程

我是 Microchip Programming 的初学者,我想设计一个可以连接到 WiFi 的机器人。我有 Cerebot 32MX4 微控制器 (PIC32MX460F512L) 和 PmodWiFi 卡 (MRF24WB0MA)。我完全不知道从哪里开始。我曾尝试从网上下载各种代码,包括 TCP/IP 堆栈和其他示例代码,但编译时出错或对机器人没有影响。我之所以选择这两种产品,是因为它们比较受欢迎,而且我希望这是一个相当简单的过程。您能否将分步教程的链接发送给我,该教程向我展示了如何设置它或 32MX4 的一些工作示例代码。目前我有一个通过 JB 接头连接到 WiFi 卡的功能性 32MX4 板。对不起,如果我听起来太愚蠢,

提前感谢您的帮助,古维

0 投票
4 回答
193 浏览

c - 为什么我需要这条线,据我所知它是多余的

下面是我用于解析令牌的一段代码。

底部附近有一条>>>>不再需要的行,但是如果我将其注释掉,则该cmd_parse_value_lookup()功能将失败。如果我把它留在里面,代码运行正常。谁能告诉我为什么,并解释发生了什么?

编辑:这是完整的代码:

0 投票
1 回答
1744 浏览

debugging - PIC24HJ256GP610/610A 差异导致的 RTCC 的 I2C 读/写问题?

我在使用 PIC24HJ256GP610A 上的 I2C 模块时遇到问题。我的代码(见下面的片段)在 PIC24HJ256GP610 [注意:不是 610A] 上运行得非常好。我正在使用 I2C 总线与 DS1374 RTCC 进行通信。但是在 610A 上,当尝试使用 I2C 向 RTCC 写入值时轮询 ACKSTAT 位时,它会卡住。此外,大多数情况下,通过 I2C 读取值时 RTCC 值不会增加(有时它确实会增加)。有任何想法吗?处理 I2C 模块的 610 和 610A 之间是否存在配置位/模式/设置差异?我试过换掉 RTCC 芯片,换掉处理器。所以,这里唯一的区别是 I2C 通信在 610 上工作,而不是在 610A 上。

610和610A有什么区别?610 是不再生产的过时部件,还是会继续生产?

在试验、探测信号和使用调试器单步执行时,我注意到了一些事情:

1)。I2C 时钟在即将发送的第 20 个位上无限期变高,如果我暂停调试器,它会在轮询 ACKSTAT 位时卡住。第一位似乎是起始位,然后是 9 个更多位,然后是另一个开始/停止位,然后是 9 个更多位,然后时钟线变为高电平。

2)。当时钟线卡住并使用监视窗口时,I2C1STATbits 寄存器中的值为 0x8008,这意味着从从设备接收到 NACK,并且最后检测到启动(或重复启动)位。

3)。我总是能够从 610 和 610A 的从设备 (RTCC) 中读取数据。然而,有时对于 610A,它的值不会增加,而是保持在某个整数值。我相信当我切断一切电源并重新编程一切时,RTCC 值会发生变化。有时它在读取值时保持不变,并且可能有 25% 的时间在读取值时实际发生变化。

4)。我无法使用 610A 通过 I2C 向 RTCC 写入任何内容。处理器在轮询 ACKSTAT 位时卡住了(我假设是因为它收到了来自 RTCC 的 NACK。)610 工作完美。

工具:MPLAB v8.86、C30 v3.31、ICD3

谢谢你,布拉德

0 投票
1 回答
3937 浏览

c - XC8 编译器错误“声明中没有标识符”

我最近在工作中接手了一些 C 和固件职责,并且在处理看似基本但找不到答案的问题时遇到了麻烦。我对 C 语言不是很有经验,但我在高级语言方面有多年的经验。

该固件是为 PIC18F4865 编写的,我无法正确编译和编程。它最初是使用 HI-TECH PICC18 编译器在 MPLAB IDE 8 上编写的,但我升级到 MPLAB X IDE 时遇到了问题。

首先,我使用的是相同的 HI-TECH PICC18 编译器,它似乎编程成功,但设备读取不正确。然后我切换到 XC8 编译器并在编译期间开始收到一条我无法绕过的错误消息。

eeprom.h 文件是

我在网上看了看,发现这个错误可能发生在以前包含的文件中,我检查了那个文件,一切似乎都很好。我什至重新排列了包含顺序,认为如果是这种情况错误消息会改变,但错误仍然抱怨这一行。

然后我想也许函数声明是无效的,因为没有参数被命名,所以我将第 10 行更改为:

这并没有改变什么。但是我确实有一种奇怪的感觉,当我再次清理和构建时,它并没有重新编译 eeprom.h。我不知道是否会发生这种情况或如何强制它重新编译。

我不知道修复此问题是否会解决我遇到的固件问题,或者我是否需要返回到 MPLAB IDE 8,但这仍然是我想要修复的问题。

0 投票
1 回答
498 浏览

mplab - MPLAB 跟踪寄存器

我是 PIC mplab 和 PIC 的新手。我开发了一个在模拟器下运行的程序,一切似乎都按预期工作。现在,我想记录我的程序在端口 C 上所做的事情。我有一个应用刺激的文本脚本。一旦事情开始,我就从那个脚本中分离出来,并为 LATC 添加一个带有触发器需求和跟踪文件名的跟踪寄存器条目。但是没有任何东西被写入文件。

任何提示将不胜感激。

0 投票
0 回答
1487 浏览

simulator - Microchip MPLABX ADC 仿真问题:ADC-W101:所选通道配置为数字 IO

我正在尝试使用 MPLAB X 模拟器模拟以下程序,但 ADC 似乎无法正常工作。我已将具有“0303”值的激励文件附加到 ADRESL 寄存器,但我没有读取数据,并且在模拟器控制台中我收到警告“ADC-W101:所选通道配置为数字 IO。所选通道:0。”。此外,一旦置位,即使 ADIF 被触发,ADCON0 GO 位也不会被清除。图片是16f88。是 MPLAB X 模拟器的问题吗?我已经用 16f88 检查了 MPLABX sim 的限制,但没有关于 ADC 的内容。