像使用PIC® MCU一样在MPLAB® X IDE中开发AVR® MCU


Microchip Technology Inc.
资深应用工程师
David Song


对PIC® MCU的爱好者来说,MPLAB® X IDE除了在一些配置不高的电脑上跑起来比较慢之外,不失为一款比较优秀的开发环境,其编辑、编译、调试和烧录功能都非常强大。而AVR® MCU的Studio 7开发环境,继承了Visual Studio(VS)的血脉,只是风格与X IDE不同而已。

 

好了,现在PIC和AVR两大MCU终于走到了一起,但对于习惯了使用X IDE进行开发的笔者来说,使用Studio 7进行AVR MCU开发还是有种种不习惯,特别是烧录芯片时,需要单独点开device Programming(器件编程)窗口,连接器件、配置fuse等等,才能烧录;并且要关掉这个烧录窗口才能返回到源代码进行修改;再次烧录再次打开,这一系列操作下来,还是有点繁琐的。在X IDE中这一切相对来说要简单得多,对配置字进行初始化之后,一键点击编译下载,一键导出hex文件,非常之方便。

 

恰逢MPLAB X IDE 更新至v5.0版本,随之而来的好消息是X IDE开始支持AVR系列产品了。笔者勇当小白鼠,于是有了本文的尝试。

 

首先,下载安装好MPLAB X IDE v5.0版本,该版本的总体风格与之前没什么差异,只是在“版本说明”中增加了对AVR系列的支持。笔者在新建项目时也确实看到了新增的AVR器件。


image.png


本文重点是介绍在X IDE中开发AVR MCU,因此,我们直接将Atmel START生成的Studio 7 项目导入到X IDE中,看看能否正常工作。

 

1.      首先,新建项目,选择Import Atmel Studio Project(导入Atmel Studio项目)


image.png


2.      选择好已存在的Studio项目,下一步

3.      器件型号可被完美识别


image.png


4.      硬件仿真工具Atmel ICE也能被完美识别

                                               

image.png

 

5.      一般来说安装过Studio 7的话,在X IDE也会自动识别到AVR编译器


image.png


6.      一路点Next(下一步),设置好新的项目名称,直至Finish(完成)

7.      全部导入完毕后,在X IDE的Project(项目)窗口,可以看到整个项目的文件包含结构。 目前版本似乎不能正确识别分类.h和.c  文件。随着后续的版本更新,我们相信应该会改善这个问题的。


image.png



8.      先不管这些文件架构,点击 Clean&Build  (清除并编译)image.png 按钮,编译看看

1533263036674804.jpg


OK。编译还是成功的。

9.      再试试Build& Programming (编译并烧录)image.png 编译和烧录芯片


1533263457408180.jpg


能正常连接Atmel ICE, 并正常烧录。不过会报一个configuration bits(配置位)错误!对AVR MCU来说就是fuse/lock bits(熔丝/锁定位)错误。


1533263529996372.png


10.      OK。我们再来看一下,能不能将fuse/lock bits代码化?打开X IDE的Configurattion Bits窗口,全是红色的,感觉是warning,不正常啊!


image.png


仔细看一下,发现左上角有个类似read(读取)的图标,那么点一下吧。


image.png

                                               

点一下,发现X IDE右下角有提示在读取配置位的进度条,数秒之后,所有设置全部读回来了,窗口变成了正常的灰色。


image.png


细心的笔者又发现,左下有个按钮,上面写着 Insert source code in Editor!(将源代码插入到编辑器)。就是它了!把配置插入到代码! 话不多说,打开main.c,插入到开头位置,然后点编译。


image.png


居然毫不犹豫地编译不过去了!

 

到这里,对一般工程师来说,可能此次尝试之旅就已经结束了…


image.png


但是,笔者可不能放弃,开始尝试创新之旅了…

 

找到添加的配置字代码,不是这里报错么?那我们来看一下好了。好在X IDE编辑功能强大, 按住Ctrl键,点报错的代码“fuse”,自动跳转到fuse.h;


看到了它的结构体原型,继续按住Ctrl键,点结构体原型“NVM_FUSES_t”自动跳转到iom4809.h文件,拖动到三个窗口并行显示,如下图所示:


1533264089144182.jpg


发现了一个大坑!.h中定义的Fuse是大写的,而Configuration Bits插入的代码是小写的。善于观察的笔者,发现了下面一系列的定义。OK全部抄过去,修改一下生成的代码。


1533264152400034.png


重新编译,啦啦啦,编译成功!尽管有黑色字体提示地址不匹配。


1533264275518914.jpg


修改这些代码的配置,再查看Configuration Bits配置窗口,其中的配置项目随代码的修改而改变。

 

点击烧录。成功,也不再提示错误了!


image.png


此时,回到Studio 7的Device Programming窗口进行验证,两边一致!!!配置字代码化初步成功!


image.png


11.      再次尝试,进入debug(调试)模式,断点、单步,基本都OK


image.png


经过艰苦卓绝的尝试,总算可以像使用PIC MCU一样在X IDE下开发AVR单片机了!

至此,本次AVR单片机的X IDE v5.0之旅结束。相信后续的X IDE及编译器的更新一定会解决上述遇到的问题,到时候在X IDE中不论是使用PIC MCU还是AVR MCU都会更加方便。