问题标签 [dspic]

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

c - Int 值在按钮单击期间不增加

我尝试将一个整数值从 0 增加到 2,然后每次单击按钮时再次回滚到零。当我单击按钮时,值会增加到 1 并自行停止。我正在使用带有开关和 LCD 显示屏的 dsPIC33 微控制器来查看值。我使用 mplab x ide 进行编码。我正在使用 Elcom MPS-1 开关(4A,250V)。这是我的代码。

0 投票
0 回答
139 浏览

memory - 写入闪存 dspic33e

我对带有 dspic33ep512mu810 的闪存有一些疑问。我知道应该如何完成:设置地址、锁存器等的所有寄存器。然后执行序列以启动写入过程或调用内置函数。

但我发现我所经历的与 DOC 中的内容之间存在一些细微差别。

  1. 在 WORD 模式下写入闪存时。在 DOC 中,它非常简单。以下是文档中的示例代码

但是根据我要写的地址,该代码不起作用。我找到了一个可以写一个 WORD 的解决方法,但我不能在我想要的地方写 2 个 WORD。我将所有内容都存储在辅助内存中,因此对我来说上位地址(NVMADRU)始终为 0x7F。NVMADR 是我可以更改的地址。我所看到的是,如果我要写入模 4 的地址不是 0,那么我必须将我的值放在最后 2 个锁存器中,否则我必须将值放在第一个锁存器中。

如果地址模 4 不为零,则它不像文档代码(上图)那样工作。该地址的值将是第二组锁存器中的值。我将其修复为一次只写一个单词,如下所示:

我想知道为什么我会看到这种行为?

2)我也想写一整行。这似乎对我也不起作用,我不知道为什么,因为我正在做 DOC 中的内容。我尝试了一个简单的写行代码,最后我只是读回了我写的前 3 或 4 个元素,看看它是否有效:

我看到的是存储在地址 0xE7FA 中的值是 125,在 0xE7FC 中是 126,在 0xE7FE 中是 127。其余的都是 0xFFFF。为什么只占用最后 3 个锁存器并将它们写入前 3 个地址?

提前感谢您的帮助。

0 投票
0 回答
28 浏览

microchip - __SP_init 和 __SPLIM_init 在哪里定义?

根据编译器手册,__SP_init 和 __SPLIM_init 是由链接器定义的,但在链接器脚本或映射文件中找不到它们。即使它们是由链接器自动定义的,它们也不应该出现在映射文件中吗?我在哪里可以找到它们的默认值?

我正在使用 dsPIC30f4013 和 xc16 编译器。

0 投票
0 回答
76 浏览

c - 使用 dsPIC33E 的 FFT 不返回频率

我正在使用 dsPIC33EP128GP502 并尝试运行 FFT 来测量输入的主频率。编译器没有显示任何错误,并且 ADC 本身似乎可以工作......(对于单个值)

我期望变量中的一些频率值在 0 Hz 和 ~96 kHz 之间peakFrequency。对于噪声信号(或根本没有信号),该值应该或多或少是随机的。通过外部施加的单音信号,我希望测量输入频率 +/- ~100 Hz。可悲的是,我的频率输出始终为 0。

测试信号由外部信号发生器生成,如果我想测量单个值,ADC 工作正常!

由于某些性能需求,FFT 必须在 dsPIC33E 的 DSP 内核上运行。

有没有人对 dsPIC33E 有任何经验,并且知道我的错误是什么?

ADC:TAD -> 629.3 ns,转换触发 -> 清除采样位结束采样并开始转换,输出格式 -> 小数结果,有符号,自动采样 -> 启用

也许任何人都可以找出我的代码中的错误/问题!