xmega128学习笔记.docx
《xmega128学习笔记.docx》由会员分享,可在线阅读,更多相关《xmega128学习笔记.docx(23页珍藏版)》请在冰豆网上搜索。
xmega128学习笔记
XMEGA128学习笔记1-bootloader下载程序
首先需要感谢AVR和与非网举办这次AVR大赛,其次要感谢在学习板申请当中阿呆给予我们小组的帮助,最后要感谢我们的指导老师。
我们小组将在论坛版块连载《XMEGA128学习笔记》系列,分享学习心得与大家共同探讨,也欢迎大家分享自己学习的心得,共同进步。
今天主要是叙述如何使用XMEGA的BOOTLODER功能下载程序。
首先请大家将附近的内容下载,由于论文附件大小的限制,FlipInstaller-3.4.3这个软件分成三个压缩包,需要大家一起解压,解压后进行安装,安装过程大家点击下一步就可以了。
第二个附件是“AVR1927_XMEGA-A1_Xplained_Example_Applications.zip”,这个压缩包是板子的程序和驱动。
大家解压后将“ATxmega128A1.xml”文件拷贝到“X:
\ProgramFiles\Atmel\Flip3.4.3\bin\PartDescriptionFiles”,其中X表示您安装FLIP软件所在的盘符,如图所示:
第三步:
将XMEGA开发板用USB连接线插入到电脑中,这时候电脑会提示发现新硬件,有驱动需要安装,如图2所示,选择“从列表或指定位置安装(高级)”
位置选择“AVR1927_XMEGA-A1_Xplained_Example_Applications\Driver”
安装后效果如图4,电脑多个一个虚拟串口,我的电脑显示的是COM8。
第三步:
拔掉USB,如何安装板上的SW0按键不放,在插上USB,使得XMEGA进入BOOTLOADER状态。
第四步:
打开第一步安装的FLIP软件,首先选择器件和串口的端口,成功后效果如图:
这时就可以打开一个HEX文件进行下载,附件中有一个是流水灯的HEX文件,大家下载进去后再复位,看看是不是板上的流水灯在闪烁。
更多参考内容请看
《AtmelAVR1927XMEGA-A1XplainedGettingStartedGuide.pdf》
《FLIP软件帮助》
今天的内容就到这里,谢谢大家的关注。
XMEGA128学习笔记2-CVAVR编译环境
XMEGA128常用的有GCC和IARforAVR两种编译环境,其中GCC是ATMEL公司开发的AVRStudio5.0,免费软件,而且内置了开发板的例程。
IARforAVR是一款商业软件。
今天我们向大家介绍一款支持XMEGA的编译环境CVAVR,它能够通过设置参数自动生成代码,无需查阅相关寄存器。
而且内置支持单总线,LCD等常用器件,下图是效果图:
XMEGA128学习笔记3-流水灯
GPIO的特点有
1、可以独立配置引脚输入或者输出
2、输出速率控制
3、多种输出模式
4、时钟输出等等
今天我们就做最简单的流水灯操作,和MEGA系列单片机一样,寄存器有:
1、方向寄存器DIR,设置为1表示输出模式,设置为0表示输入模式
2、数据输出寄存器OUT,设置1表示输出高电平,设置0表示输出低电平。
我们从原理图看到板上的8个流水灯在PORTE引脚上,代码如下:
#include
#include
voidmain(void)
{
unsignedchari;
PORTE.OUT=0xFF;//初始LED灭
PORTE.DIR=0XFF;//输出模式
while
(1)
{
for(i=0;i<8;i++)
{
delay_ms(1000);
PORTE.OUT=~(1<
}
}
}
当然你也可以使用CVAVR代码生成功能,快出尝试GPIO的更多功能吧,也欢迎您分享您的心得。
XMEGA128学习笔记4-中断
GPIO能够设置为中断输入模式,可以配置为“上升沿”/下降沿/双边沿和低电平触发。
今天我们就带大家设置SW0按键为下降沿,实现翻转LED0的功能。
第一步:
打开CVAVR软件,新建一个工程,选择代码生成功能,如图所示:
第二步:
使能低级中断功能
第三步:
设置SW0按键状态
第四步:
设置LED0状态
第五步:
点击生成代码
第六步:
加入以下代码
编译后下载,大家看看是不是很简单就实现了这个功能啊。
XMEGA128学习笔记5-串口USART
Xmega128的串口非常强大,最多能支持8个串口。
串口又有四种模式:
1、异步
2、同步
3、IRDA红外模式
4、SPI主模式
今天我们就使用CVAVR代码向导生成简单串口测试程序,实现每1s打印“HELLOWORLD”字符串,同时能将接收到数据回显到串口调试助手上。
第一步:
打开中断,因为我们需要实现串口回显的功能。
第二步:
从开发板的原理图可以看到串口是在PC2和PC3脚,所以需要设置GPIO,经过CVAVR的提示PC3初始输出电平为1能够更加稳定:
第三步设置串口:
使能接收和发送功能,并开启接收中断。
第四步:
最后生成代码,加入以下代码:
最后编译下载,复位后可以看到效果图:
XMEGA128学习笔记6-实时时钟RTC
Xmega128的RTC实际上就是16位定时器,它的框图如图所示。
时钟来源有两种:
1是32KHZ,2是1KHZ。
能够通过10位预分频,进一步得到低速频率。
图中Period表示周期,也就是最多计数值。
Compare是比较值,匹配时能够触发中断。
今天我就用RTC的匹配中断功能,进行1s报警闪烁LED0。
第一步:
打开CVARV,新建一个工程,首先使能低级中断:
第二步:
设置LED0端口输出。
第三步:
选择时钟源,开启RTC比较中断。
第四步:
生成代码,编译下载。
在RTC匹配中断函数中加入以下代码:
//RTCcompareinterruptserviceroutine
interrupt[RTC_COMP_vect]voidrtcxm_compare_isr(void)
{
//writeyourcodehere
PORTE.OUTTGL|=(1<<0);//LED0闪烁
}
XMEGA128学习笔记7-模数转换ADC
Xmega的ADC特点有:
1、高达12位精度
2、高达2M/s采样率
3、有符号和无符号输出选择
4、可选增益(1X2X4X8X16X32X64X)
5、流水线结构设计
6、4个虚拟通道
7、结果比较功能
8、知道校准
9、内部连接DAC输出
整体结构如图所示:
今天我们测量内部通道的VCC/10和内部温度。
首先根据前面写的设置好USART。
然后我们按照下图设置ADCA进行内部通道的采集,0通道是内部温度,1通道是VCC/10.
最后生成代码,然后加入以下代码:
while
(1)
{
//Placeyourcodehere
delay_ms(1000);
ch0=adca_read(0);
ch1=adca_read
(1);
printf("tempref:
%d,vcc/10:
%d\r\n",ch0,ch1);
vcc=((float)ch1/4096-0.05)*10;//0.5是误差修正
printf("VCCValue:
%0.2fV\r\n",vcc);
}
}
实验现象,得到温度数据需要转成实际的芯片内部温度,没有找到相应的公式。
大家可以把手放到芯片上,明显温度有上升的趋势。
XMEGA128学习笔记8-负温度系数热敏电阻NTC
板上的热电偶原理图如上图所示:
使用的型号是NCP18WF104J03RB,PDF见附件所示。
负温度系数热敏电阻器的电阻温度特性可用下式表示:
R=Ae(B/T)式中:
R---温度为T时热敏电阻器的电阻值;
A---与热敏电阻器材料物理特性及几何尺寸有关的系数;
B---热敏指数;
T---热力学温度。
T=273.15+t
CVAVR相应地设置如图所示,串口设置前面已经多次叙述过。
说明书上叙述,外界温度为25度时,R=100K,带入原理图电压应该为0.3V
与实际测试效果相符合。
XMEGA128学习笔记9-光敏传感器
光敏传感器等于一个电流源,根据外界光的大小,产生不同光电流。
传感器型号是TEMT6000,说明书见附件所示。
板上的原理图如下:
CVAVR的设置如下,这里需要说明的参考电压选择的是AREFpinonPORTA,所以需要将PA0连接到VCC,参考电压为3.3V。
XMEGA128学习笔记10-数模转换DAC
特点:
1、12位精度
2、高达1M/s的转换速度
3、连续驱动或者采用保持输出
4、内置偏置和增益校准
5、高驱动能力
更新了最新版本CVAVR2.05.2,有DAC的功能啦,不过有4K代码的限制。
http:
//www.hpinfotech.ro/
本例程使用最新版本,请大家去官网下载最新软件。
DAC的框图如下所示:
打开CVAVR的DAC生成面板,准备写一个在DACA通道0输出一个锯齿波。
然后加入以下代码:
//Placeyourcodehere
for(value=0;value<0XFFF;value++)//锯齿波
daca_write(0,value);
实验现象如图:
XMEGA128学习笔记11-定时器TC
特点有:
1、16位定时/计数
2、双缓冲定时器周期设置
3、高达4位比较或者捕获通道
4、波形产生单脉冲/双脉冲/频率发生器
5、输入捕获带噪声消除/频率捕获/脉宽捕获
6、32位输入捕获方向控制
7、定时器溢出/错误中断或者事件
8、每通道有一个比较匹配或者捕获中断/事件
9、支持DMA
10、高阻高精度扩展Hi-Res
11、高级波形扩展AWeX
今天我们就使用定时器进行简单的LED灯闪烁,CVAVR设置如下:
编译后下载,就能看到LED0间隔1s闪烁。