问题标签 [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.
c - 如何将数组中的值存储到 MPLAB 上的变量中?
以下代码在 CodeBlocks 编译器上运行良好,但在 MPLAB C18 编译器上我没有得到相同的结果。我正在使用 PIC18 微控制器。
代码
代码块上的输出:64800
MPLAB 上的输出:-816
究竟是什么问题?这段代码不应该正常工作吗?谢谢!
c - PIC18 的数据类型?
我使用哪种数据类型来存储以下值?
价值:86400
代码:
如果我将此代码复制到 CodeBlocks,它可以正常工作。但是,在 MPLAB C18 编译器上,我会得到不同的结果。
代码块输出:86400
MPLAB 输出:20864
你如何解决它?谢谢!
c - 在 PIC18 上从用户那里获取数组值?
首先让我展示什么是有效的,然后我将展示什么是无效的。这段代码给出了正确的结果。
输出:86000
如果我希望用户输入以下值,我会得到不同的结果,这就是我拥有的代码。
输出:619328
这不应该以同样的方式工作吗?那么当用户输入值时我得到不同的结果怎么办?谢谢!
c - 如何使用 PIC18 写入和读取内存?
我想将一个数字存储到 PIC18,然后即使断电或设备重置也能保留它。我认为我的编写代码部分看起来不错,只是单元重置后它的读取部分看起来很奇怪。
我正在使用从 Microchip 获得的以下代码。
代码:
输出:1
但是,当我重置单元并仅使用读取代码时,我总是得到 255。
代码阅读:
输出:255
为什么会这样?我假设可能没有保存该值或读取部分不正确。谢谢!
memory - UART转SD卡
我正在尝试实现一种将数据从 dsPIC33F 写入 SD 卡的方法。我目前可以通过 UART 将数据传输到蓝牙和 USB,但我在网上找不到任何关于通过 UART 写入 SD 卡的信息;这一切似乎都是SPI。
我会使用 SPI,但我已经在使用 I2C,而且似乎很难在同一个 PIC 上同时使用 SPI 和 I2C,因为它们共享引脚。
那么,任何人都可以建议任何有关通过 UART 将数据写入 SD 卡的信息,或者同时使用 SPI 和 I2C 的方法吗?
我想要的只是某种形式的存储方法,所以如果有人可以建议另一种方法,也许是 EEPROM 或 USB 闪存驱动器,那么我会全力以赴。我需要至少 2GB 的存储空间,越多越好。
build - MPLAB IDE - 构建一个空项目
我正在尝试使用设备 PIC18f452 在 MPLAB 上构建一个空项目。这是我得到的错误:
Debug build of project 'C:\Users\Rabbiya\Desktop\MyProject.mcp' started.
Language tool versions: MPASMWIN.exe v5.35, mplink.exe v4.35
Preprocessor symbol
__DEBUG' 已定义。
2013 年 5 月 9 日星期四 20:03:42
Make:目标“C:\Users\Rabbiya\Desktop\18F452TMPO.o”已过期。执行:“C:\Users\Rabbiya\Desktop\New folder (2)\Microchip Solutions v2011-07-14\MPASM Suite\MPASMWIN.exe” /q /p18F452 "New folder (2)\Microchip Solutions v2011-07- 14\MPASM Suite\Template\Object\18F452TMPO.ASM" /l"18F452TMPO.lst" /e"18F452TMPO.err" /o"18F452TMPO.o" /d__DEBUG=1 制作:目标“C:\Users\Rabbiya\ Desktop\MyProject.cof" 已过期。执行:“C:\Users\Rabbiya\Desktop\New folder (2)\Microchip Solutions v2011-07-14\MPASM Suite\mplink.exe” "New folder (2)\Microchip Solutions v2011-07-14\MPASM Suite \LKR\18f452_g.lkr" "18F452TMPO.o" /u_DEBUG /z__MPLAB_BUILD=1 /z__MPLAB_DEBUG=1 /o"MyProject.cof" /M"MyProject.map" /W MPLINK 4.35,
链接步骤失败。
定义了项目C:\Users\Rabbiya\Desktop\MyProject.mcp' failed.
Language tool versions: MPASMWIN.exe v5.35, mplink.exe v4.35
Preprocessor symbol
__DEBUG' 的调试版本。
2013 年 5 月 9 日星期四 20:03:43
构建失败`
当我右键单击并在项目窗口中构建源文件时,它会成功构建。我应该做些什么?单独组装目录中的所有 .asm 文件?
c - MPLab 的 C 编译器问题
我是 PIC Programming 的新手,我根据这个博客开始了我的第一个程序。
http://embeddedlifehelp.blogspot.com/2010/02/pic-16f877a-help.html
但是当我要构建我的项目时,它会给我一个错误。请帮我解决这个问题。
这是代码。(如果有人可以将代码放入汇编中,请放在下面)
谢谢
已编辑
现在我尝试使用 MicroC.its 给出以下错误屏幕。请帮我解决这个问题。
它的意思是pic16f877a.h文件丢失。?是否需要手动添加到out文件夹。?我搜索该名称,但找不到该命名文件
sd-card - 编辑 dsPIC 的 FatFS 通用示例
我正在尝试使用 FatFS ( http://elm-chan.org/fsw/ff/00index_e.html ) 作为使用 SPI 与 SD 卡进行通信的一种方式。
FatFS 网站有许多示例,但我发现它们并不容易理解或遵循。可下载的 zip 中有两个示例适用于我,一个用于“通用”微控制器,另一个用于 PIC24。虽然 PIC24 看起来与我的 dsPIC33F 非常相似,但代码非常难以理解,具有我不关心的特定应用程序。
通用代码更容易理解,并且执行一个非常简单的应用程序:创建一个 txt 文件,写入它,然后关闭它。但是,我很难更改代码以使用我的 PIC。
我有 dsPIC33FJ128GP802。我在通用示例中添加了代码来重新映射 SPI 引脚、设置内部振荡器以及设置和启动 SPI 模块:
PIC到SD卡是:
- RP15,SPI时钟输出,到SCK
- RP14,SPI 数据输入,到 DO(数据输出)。
- RP13,SPI 从机选择,至 CS。
- RP12,SPI数据输出,到DI(数据输入)。
- SD 卡 CD 未连接。
有FatFS经验的人可以帮我做必要的改动。到目前为止,运行代码一直到 f_open,它返回错误 FR_NOT_READY。
现在我不想做任何花哨的事情,只是创建一个文件并写入它。我见过许多使用外部晶体振荡器的应用程序,而我没有。这是SPI的必需品吗?我是 SPI 新手,在此之前一直在使用 I2C。
在通用示例的 mmcbb.c 文件中,我必须进行一些更改以消除我遇到的一些错误,我用我自己的函数替换了他们的延迟函数,以创建与引发错误的时间相似的延迟,我还删除了出现在 disk_initialize(BYTE pdrv) 中的 INIT_PORT(),因为它引发了错误,并且我在进入任何 FatFS 代码之前初始化了端口,就在 main 的开头。在 mmcbb.c 的顶部有 #define 需要将相应的端口添加到我设置 SPI 的方式中,我这样做了(RBx 引脚与我在上面设置的 RPx 相同):
位运算符已经存在,我只是添加了 PORTBbits.RBxx。
这就是我所做的所有更改,但我发现在线查找有关使用任何库进行 SD 卡操作的信息特别困难(FatFS 和 MDDFS)。任何帮助将不胜感激!
c - localtime() 给出不正确的值
网上有大量代码让我相信以下内容会给我当前时间。然而,事实并非如此。我得到了我认为是 UNIX 纪元的时间;1970 年 1 月 1 日 00:00;00。
现在真的很烦人,为什么我的计算机系统时钟控制的不是当前时间?我正在为 C 中的嵌入式系统执行此操作。IDE 是 mplab。
uart - 如何在 MPLABX 模拟器中查看 PIC32 UART1 输出?
我正在使用 MPLABX v1.80 、 xc32 V1.21 和 Microchip 的示例 uart 代码(基本示例)。
我在项目属性中选择了模拟器。我在项目属性中为窗口输出启用了 UART1。
我尝试过同时使用 UART1 和 UART2 进行编译。但是我似乎无法找到输出的去向。
示例代码在这里: http ://ww1.microchip.com/downloads/en/DeviceDoc/PIC32_UART_CodeExample_041613.zip
谢谢你的帮助。