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

lcd - dspic33f lcd 4位模式

我正在使用带有 mplab xc16 的 dspic33fj128mc802。我想在 4 位模式下使用 LCD,但似乎无法初始化它,也不知道我在做什么错。任何帮助将不胜感激调试。我查看了其他示例,我的代码看起来与其他示例相似,但仍然无法正常工作

0 投票
1 回答
339 浏览

fft - KissFFT 与 DSPIC - 舍入误差

试图让 KissFFT 定点实现与 DSPIC 保持一致。问题是 Kiss 中的定点实现是真正的定点,但 dspic 在 40 位寄存器中进行乘法和求和,然后在舍入后向下移动到 16 位。KissFFT 可以是 16/32 位定点或浮点。到目前为止,浮点数是最接近的匹配,但我需要它们准确。我不确定在 ASM 代码中每个频率 bin 更新了多少次,但正如您所见,每次更新 bin 时,累加器结果都会移位和舍入。我没有足够的 FFT 知识来解决这个问题。如果有人能指出我正确的方向,将不胜感激。

这是 ASM 代码:

0 投票
0 回答
86 浏览

interrupt - 使用 dsPIC33EP256GP502 在 I2C 网络中同步多个从机

dsPIC33EP 同步

你好,

有人可以解释我如何使用 dsPIC33EP256GP502 在 I2C 网络中同步多个从机,详细信息附在上面的链接中。

谢谢和问候, 阿基尔

0 投票
1 回答
1494 浏览

c - MikroC,UART。请求多个字节

  • 微控制器:dsPIC33EP512MU810
  • 编译器:MikroC

我正在尝试通过UART. 要获取所需的信息,您发送一个请求字节以接收单个数据字节。请求多个字节时,我很难识别数据字节。

UART 接收通过中断处理:

我的单个数据字节代码如下所示:

这工作正常。

如果我需要更多,那么我只需要一个数据字节,如下所示

这种方法的问题是下一个请求字节可能已经被传输,而不能确定最后一个数据字节是否被正确接收。

这会导致数据被“加扰”。这意味着可以在当前请求中解析来自最后一个请求的数据字节,依此类推。

我似乎找不到合适的解决方案。任何建议都会很棒!

循环缓冲区实现:

UART中断:

主循环处理:

UART发送例程:

处理接收到的数据:

0 投票
0 回答
427 浏览

interrupt - 通过 UART 与 PC 应用程序通信 dsPIC。接收中断处理

我正在使用 UART 与 dsPIC x16 微控制器通信我的 C# 应用程序。我想发送/接收固定大小的帧,并尝试通过以下方式对其进行管理:

}

问题是它仅适用于第一个接收到的帧。之后,程序再次进入接收器中断并将标志 readFrame 设置为 true,即使没有发送任何字节并且卡在队列中:

我已经阅读了一些清除 UART 读取缓冲区的建议,以防止程序再次进入 ISR,但我找不到解决方法。

0 投票
2 回答
330 浏览

communication - UART 通信 dsPIC33EP256MU810

我对微控制器编程非常陌生。

我在用着

  • MplabX v3.26 作为 IDE
  • XC16 编译器
  • PICKit 3
  • p33EP256MU810 (dspic)

用于编程

我编写了非常简单的程序来闪烁 LED 并通过 UART 发送几个字符,请参考以下源代码:

LED 闪烁部分工作正常,但我在 UART 的另一端收到垃圾字符,我正在使用串行监控工具 (X-CTU) 监控数据。

我的主要问题是我无法计算波特率。如果我做错了什么,请告诉我。

谢谢

0 投票
0 回答
163 浏览

dspic - 16 位 dsPIC33F 的 32 位计算需要 460 个指令周期?

我使用 16 位定时器作为函数的硬件延迟delay_ns(UINT32 ui32_delay_val_ns);。在函数内delay_val除以Tcy。定时器运行Tcy时间为 25ns(指令周期时间为 40MHz),因此每个滴答声(或 TMR4 val 位)将为 25ns。

作为一个优秀的软件工程师应该做的,我对该函数进行了一些测试,我想知道一些事情。

见时间:delay_ns: 10, a=2 b=27 c=485 d=494 e=504

我要求 250ns,即 25ns 的 10 个 TMR4 滴答。

a 在 BOOL bStart = 1 和 TMR4.ON = 1 之后;(2个周期没什么奇怪的)。

b = TMR4 val 在我将之前的 16 位铸造 ui 32 位 val 值除以 25 之后;

当我将原始 32 位 val 除以 25 时,c = TMR4 val(直接在 b 之后!!)。

如您所见,使用 16 位 val 需要 25 个指令周期(可能也很多?),但使用 32 位需要 +450 个周期?换句话说,一个 32 位 val 的简单除法需要 11.5 us!

特别是因为这是 Microchip 的 dsPIC33 变体,它有一些改进(流水线、双 ACU 等)。我知道它是一个 16 位的 MCU,但为什么要花这么多周期?

0 投票
1 回答
692 浏览

memory - dsPic33 页面擦除大小

我在 dsPic33EP256MC502 应用程序上工作,我需要在闪存上写入以保存配置。除了擦除页面之外的所有工作,我擦除太多或太多。

数据表说页面擦除页面大小是“1024条指令”(3072字节)由于指令是24位+幻象字节,指令是32位对齐的我们需要两个地址单元来寻址一条指令

示例:
0x000000:[幻影][指令1][指令1][指令1]
0x000002:[幻影][指令2][指令2][指令2]
0x000004:[幻影][指令3][指令3][指令3]
0x000006:...

A/ 我天真地计算1024 条指令页面大小,例如:

  • 4096 字节(包括虚字节)[1024 条指令 x 4 字节]
  • 3072 个有用字节。[4096 字节 x 0.75]
  • 所以我们需要2048个地址单元[4096 / 2]来寻址一个页面:每页0x800地址

B/我做了一个经验测试来验证,我发现每页有 0x600 地址,这意味着 1024 条指令是:

  • 0x600 是 1536 地址
  • 3072 字节(包括虚字节)[1536 x 2 字节]
  • 2304 个有用字节[3072 字节 x 0.75]
  • 我发现擦除页面是768 条指令 [3072 / 4]

我不明白数据表如何计算有或没有幻象字节、三个或四个字节的指令?每页有多少个地址可用?

有人可以帮助我理解我的错误和/或获得一个好的观点吗?

0 投票
2 回答
96 浏览

c - 关于“如果”的陈述未遵循

我正在使用 dsPIC 对 C 进行一些编程,我发现了一个小问题,我不知道它为什么或如何发生。MPLAB 编译器 C30

我有这个代码:

----对不起,我没有具体说明,假设不进入if,假设!=是这样,因为我希望程序做的是当两个变量相等时,它应该回到while(1)开始.----

我在 MPLAB (8.92) 的手表上查找了变量,它们是相同的。我不认为问题出在代码之前或之后或任何其他地方,但我可能是错的。有没有人在你体验期间发现了同样的问题?

感谢您的时间。

0 投票
1 回答
953 浏览

microcontroller - dsPIC33 外部中断

我试图了解如何将外部下降沿中断附加到 dsPIC33EP512MU810 微控制器。通过浏览互联网,我发现了以下代码:

我试图了解如何将此中断附加到 A10。我应该将什么地址传递给 RPINR0?哪些引脚可用于此类中断?