问题标签 [mplab-x]

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 投票
0 回答
29 浏览

c - XC16 - 如何防止将参数 const 数组主体复制到 RAM?

我知道 const 变量被复制到 RAM 以便它们可以被引用,但是如果我在函数调用中声明一个 const 数组主体作为参数,那么每次调用时它都会被复制到 RAM 中吗?

我的意图是将数组放在 Flash 中,而不是复制到 RAM 中。我不确定这是否__attribute__((space(prog))会奏效。

0 投票
1 回答
126 浏览

c - 关于我的代码为什么有错误的任何线索?

我使用 MPLAB X IDE(一种用于微控制器的软件)来编译我的代码,但由于某种原因,它一直说至少有两个错误(特别是在粗体区域)。我试着寻找,但我仍然不确定为什么会这样,所以任何帮助将不胜感激。

0 投票
0 回答
103 浏览

microchip - MPLAB X IDE 在闪烁后显示消息“Hold in reset not implemented”

我正在做一个项目,我们使用 Microchip 的 SAM L10 MCU。我们将 MPLAB X IDE v5.50 与 XC32C 编译器 v3.0.1 和 Harmony 3 配置器一起使用。有一段时间一切都很好。

最近我们使用 SAM D20 MCU 创建了一个硬件版本,我需要安装更新的插件(bsp、csp、core、mhc,...),以便 Harmony 能够使用该 MCU 创建一个新项目。对于那个项目,我总是在闪烁后两次收到“保持重置未实施”的消息。此外,我需要在闪烁后进行电源循环。

最初我认为这可能是我们的 SAM D20 板的问题。

但是现在我更新了 L10 项目以使用新插件,而且每次在板之间切换时切换 Harmony 文件夹非常烦人。

Harmony 显示了一些关于版本不匹配的警告,然后成功转换了配置。之后代码生成和编译工作正常。

缺点是现在我的 SAM L10 板也收到了相同的消息,需要进行电源循环,这很烦人。

使用 Segger J-32 调试探针在 MPLAB X IDE 中完成闪存。

有什么技巧可以避免该重置问题吗?

由于旧插件版本不允许使用 Harmony for SAM D20,因此恢复更新并不是一个真正的选择。

更新:似乎并不总是需要电源循环,但我还不确定在什么情况下我需要它。

0 投票
0 回答
32 浏览

mips - 在 XC32 下为 MPLABX 崩溃处理器创建 MIPS 程序集 ISR

这个问题涉及在 MIPS 汇编中为 MPLABX 中由 XC32 编译的项目编写 ISR。

我的主要项目是用 C 编写的,因此我成功地分支到 Timer1 中断,如下所示:

但是,当我尝试使用这种格式使这个 ISR 的汇编版本工作时:

我永远不能用断点来捕获程序执行。打开计时器后,我的代码处于无限循环中,但是(可能)在计时器关闭后,程序没有进入 ISR,而是跳到代码的不同部分。

一些需要注意的事情:ISR 的 C 版本也崩溃了,直到我在控制寄存器中将向量间距设置为 8 字节(上电时默认为零)。除非我在链接器文件中也将向量间距设置为 8,否则 MIPS 版本根本无法编译(注意,没有这个,C 版本仍然可以正常运行!)。我必须将向量间距设置为 16 以避免 MIPS ISR 引发异常,即使当我检查生成的 lst 文件时,它占用的空间也不会超过任何默认异常处理程序。向量间距为 8 时,处理器会在计时器关闭后立即抛出异常,我什至无法在断点处捕获任何内容。我使用的是 PIC32,Coprocessor0 的 Cause 寄存器中的值为 0x801c10,应该告诉我来源等同于“保留”)。

在另一个论坛答案(https://www.microchip.com/forums/m306645.aspx)中,一位评论者说发帖者应该看看编译器如何翻译 ISR 的 C 版本,但我不知道该怎么做那。在 lst 文件中,我只能查看最终的汇编命令,而不是如何使用所有 .section 等内容编写它,尽管暗示这可以通过他们提供的示例来完成。我还应该注意,作为 XC32 示例提供的核心计时器的 ISR 如下所示:

...所以我不确定我会如何搞砸(注意:我也尝试过这种简单的风格,但无济于事。这个示例项目甚至不包含自定义链接器脚本,所以我没有不知道他们如何避免向量间距的问题。这里的任何帮助将不胜感激。

0 投票
1 回答
115 浏览

pic - 如何在没有 MPLABX 或 XC32 的情况下为 PIC32MM 开发

在使用 MPLABX5.5 + XC32 3.01 工作仅一个月时,我已经有 3 个单独的实例,其中代码编译不正确,导致我的程序在堆栈或帧指针开始使用不正确的地址后失败。我想转储这些工具并尝试其他方法,因为跟踪编译器错误占用了我太多时间。还有什么其他东西可以用来与 PIC32MM 一起工作吗?即使访问与 XC32 不同的编译器也可能会有所帮助。

0 投票
0 回答
57 浏览

embedded - 这个 PIC16F877A HCSR04 示例有什么问题?

我正在使用PIC16F877A开发距离传感器。
我正在使用MPLAB IDE 和 XC8编译器。
我的目标是在一定距离水平逐渐打开正确的 LED,但 LED 闪烁不稳定。我究竟做错了什么?distance/5

  • 当它测量 5 厘米时,它是 5/5,结果是1,并且 1 个 LED 亮起。
  • 当它测量 10 厘米时,它是 10/5,结果是2 并且 2 个 LED 亮起。
  • 当您测量 15 厘米时,它是 15/5,结果是3 和 3 个 LED 亮起。
  • 当您测量 20 厘米时,它是 20/5,结果是4 并且 4 个 LED 亮起。
  • 如果距离小于 5 厘米或大于 20 厘米,则没有 LED 灯亮

https://i.stack.imgur.com/fFKQg.png

0 投票
1 回答
39 浏览

adc - 如何在 12 位 ADC 上结合 ADRESH 和 ADRESL

MICRO:PIC18LF47K42 编译器:XC8 应用程序:MPLABX

嗨,我试图在我的 12 位 ADC 中组合这些值。他们进入 ADRESH 和 ADRESL。我的 ADC 设置为右对齐,格式如下: ADRESH:(----MSB,x,x,x) ADRESL: (X,X,X,X,X,X,X,LSB)

这是我第一次与 ADC 合作,诚然我对他们了解不多。但是通过检查我的结果寄存器中的值,我可以看出我没有很好的分辨率。我很确定这是因为我如何结合 ADRESH 和 ADRESL。我怎么能这样做?又是一个 12 位 ADC。它正在使用 han LDR 进行测试,当没有光时,我得到 0,这很好,但是当有轻微的光时,它会变成 48 的十进制值,所以我再次稍微增加亮度,它保持在 48。直到大跳到哪个命中跳到64或什么的。

这是 ADC 初始化函数

0 投票
0 回答
33 浏览

c - 如何将无人驾驶设备应用到和谐v3中

我想将 HM628128 和 MX25L800 应用于 MPLAB® Harmony v3 的文件系统。但是 Harmony v3 的默认文件系统(MEMORY 驱动程序)只能适用于下面列出的 RAM/ROM。

  1. AT24
  2. AT25
  3. AT25DF
  4. SST26
  5. 非易失性存储器
  6. 内存

在此处输入图像描述

有谁知道诸如编码新驱动程序和重新编码MEMEORY驱动程序来解决这个问题的方法?先感谢您。

0 投票
0 回答
12 浏览

sensors - 可以在函数中读取来自传感器的数据吗

我正在使用 icm 20948 传感器,在运行 HarmonyV3.i2c 的 MPLABx 上编程是通信模式。我可以在函数中读写吗,它必须在一个while循环中吗?

例如会:

在函数中正常运行。非常感谢

0 投票
0 回答
30 浏览

c - MPLAB X IDE / XC32 / SAMD21XPlained Pro / printf() 不工作

我正在使用一块SAMD21XPlained Pro板子Mac (OS Big Sur)MPLAB X IDE v6.00 (XC32 compiler)我目前在尝试通过该printf()功能在我的终端上显示消息时遇到问题。

我是嵌入式编程的初学者,我尝试遵循有关STDIO 串行通信的教程:https ://www.youtube.com/watch?v=3pwdpYj5s_A&t=397s

根据本教程,我首先尝试只做 aprintf()但我没有在终端上看到任何东西(我没有尝试scanf()第一次尝试)。我唯一改变的是我包含了 stdio.h 文件,我用 a 做了第二次测试baud rate 9600(因为我真的不知道如何定义波特率,我想像那样测试)。

我在几个论坛上读到问题来自XC32编译器默认使用的事实,UART2printf()必须使用UART1在终端上显示。一些人建议xc.h重新定义默认值UART1( __XC_UART = 1),但这似乎仅适用于PIC32MXµC。根据我对XC32编译器文件的研究,xc.h文件 forPIC32MX与for 的文件不同,PIC32/SAM而仅用于PIC32MX定义的文件__XC_UART

我还尝试将“ Microchip Developer Help ”中针对“ Redirect stdout for Use With printf() ”的建议应用到以下XC32类别: https ://microchipdeveloper.com/xc32:redirect-stdout

问题是它似乎也仅适用于PIC32MXµCs(p32xxxx.h包含在代码开头的文件仅存PIC32MX在于XC32编译器中)。

经过几天的研究,我尝试了不同论坛上提出的许多解决方案,但仍然找不到有效的解决方案,所以我想知道您是否有想法?

谢谢 !