本帖最后由 qintian0303 于 2021-12-7 17:20 编辑
开箱 幸运地获得了PIC® & AVR® Curiosity Nano开发板活动中的ATtiny1627 Curiosity Nano,非常感谢活动方。开发板获得后还是让我挺意外的,比我想象的小很多,不过开发板还是挺亮眼的,红红的PCB让人眼前一亮,对于满眼绿油油的板卡让人心生欢喜,错落的针孔设计也挺巧妙,避免不焊接时导致排针无法良好接触的问题,点赞! 个人第一次在工作中接触的MCU就是PIC16F系列,使用MPLAB IDE+下载器的方式进行在线调试,已经很多年没有接触了,在我的印象中,PIC的单片机和51系列单片机很像,当时都是通过直接修改寄存器的方式进行控制,不过这次的测评活动也让本人对AVR(本家)单片机有了一个全新的认识。
开发环境配置 活动页面有详细的关于本次开发板相关的资料,遇到了很多的新东西,所以就把他作为一个全新的事务去详细的了解。 准备进行一个MCU的控制时,首先要有一个载体,对于我们的实物载体就是本次的开发板,虚拟载体就是写程序用的开发环境。在活动页面中有详细的介绍进行开发环境的安装与使用。开发环境选择的是MPLABX-v5.50(安装包大小约597M),为了使用和之后开发方面,有关插件全部安装了,安装完之后的文件大小还是不小的。之后根据当前开发板MCU的位数选择了MPLABXC8编辑器,不知道资源出现了什么问题,编辑器的文件并不大,但是下载非常慢。对应的MCC和编辑器添加到MPLABX-v5.50后,咱们的开发环境就基本准备就绪了。
MCC插件是一种图形化配置工具,类似于STM32cubeMX,在配置的过程中将外围的初始代码就完成了。利用MCC可以配置时钟,引脚等外设功能,STM32cubeMX很方便,但是使用HAL库确实是颠覆人们的习惯,后续配置篇会着重体验一下MCC。
开发板详情 接下来我们就要好好了解一下开发板了,一块口香糖大小的板子、板载调试器、带12位ADC的灵活ATtiny1627 AVR微控制器。板载一个按键和LED,引脚分布如下:
连接开发板后可以看到开发板信息: 新建项目及初体验 遇到了一个问题,无法创建新项目,重启软件没有反应,重启电脑后可以正常创建项目了。 我们在接触一个新的MCU和开发环境时,首先想到的就是程序能否正常编译,最简单的方式就是操作一下IO口,板载的LED就是直观反映状态是否正常的关键。使用MCC新建一个项目并添加延时和PB7引脚的控制:
添加完delay和PB7配置后,然后点击Generate进行程序生成,在主函数中添加延时和LED翻转,点击调试下载到开发板进行观察,下载程序相对于Jlink的下载调试速度略慢一些。
开发板的LED现象正常,现在我们进行定时器中断使LED闪烁。定时器中断涉及到了两个地方的配置,添加TCA0定时器并配置+中断管理配置,配置和位置如下图:
在写中断函数时还有一个小波折,由于STM32的编程习惯找了好久都没有找到中断函数,最后在tca0.c中发现了回调函数void TCA0_DefaultOverflowCallbackRegister(void)。在此过程中发现不能实时查看全局变量,这对于编程者来说不太友好,也可能这款MCU或者板载下载器不支持,欢迎大佬指导。 接下来我们就要体验一下外部中断了,不能浪费了按键,每按一次按键,LED翻转一次状态。AVR的外部中断设置非常简单,只要在Pins下对按键引脚(PC4)设置中断触发条件就可以,这必须点一个赞。调试过程中发现只通过MCC配置(PC4)并没有成功,通过示波器观察此时引脚上只有一个峰峰值200mV左右的波,这是不正常的,通过尝试,解决办法是在main.c中再调用一次SW0_SetPullUp(),前后对比如下:
为了保险起见,按键引脚(PC4)的配置都重新调用了一次。 把IO_LED_Toggle();直接放在中断回调函数里,实际操作效果(按键一次,LED翻转)理想,然后尝试将操作都放到while中,出现了异常,按键控制失效了,通过查看示波器发现进入按键中断后导致DELAY_milliseconds()的时间延长了,取出后中断按键控制LED正常。 各个中断之间影响比较严重,不要在while里使用DELAY_milliseconds(),会导致定时器和外部中断改变的全局变量在main中不起作用或无法执行。
MCC在进行串口初始化时,有关引脚的函数全都没有生成,导致串口试验没有成功。 收到开发板后兴致浓浓地试了试,对于8位的MCU来说,ATtiny1627还是挺不错的,MCC相对于Cube也是各有所长,本人比较喜欢MCC的排版和配置操作简单,但是有时初始化文件会丢东西,这个就会让人比较抓瞎。希望Microchip能多开发一下MCU的生态圈,让PIC和AVR系列MCU被更广泛的应用,越来越好!
|