




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、动手实验手册器了解如何使用AVRMCU中于内核的外设(CIP)通过开发红外先决条件预备知识对集成开发环境有基本的了解对寄存器级C语言编程有基本的了解软件要求Atmel Studio 7.0Atmel Studio XMEGAE_DFP版本1.2.51硬件要求XMEGA-E5 Xplained A型Mini B USB电缆功耗调试器A型Micro B USB电缆PDI编程电缆3根双跳线电缆红外LED器附件简介本培训旨在介绍AVR XMEGA器件系列及其外设的使用以及相应的文档和头文件。XMEGA-E5 Xplained将用于开发红外器,利用于内核的外设(CIP)来产生能够由红外进行的调制波形。功
2、耗调试器将用于编程和调试,在本培训中还将用作临时逻辑分析器(借助Atmel Studio中的数据可视化工具)。本培训分为以下几项任务(具体取决于所使用的CIP,并且每项任务都以前一项任务为基础):1.2.3.时钟、系统和基本定时器设置(还会设置端口)增强型直接器(EDMA)中断和XMEGA定制逻辑(XCL) 2017 Microchip Technology Inc.C18H01 PNP-第1页动手实验手册目录先决条件1简介11.关键图标标识32.作业1:时钟、系统和基本定时器设置项目初始化4时钟设置7定时器设置9系统和I/O设置13调试基本设置16使用数
3、据可视化工具绘制定时器波形输出193.作业2:增强型直接器.233.13.2数组到数组24数组到定时器344.作业3:中断和XMEGA定制逻辑4波形. 41使用XMEGA定制逻辑调制波形46测试555.版本历史576.附录5工具固件升级58解决方案项目指南58EDMA作业:数组到数组的相关代码59EDMA作业:数组到定时器的相关代码60作业:波形和后传输中断的相关代码62最终代码解决方案64C18H01 PNP 第2页 2017 Microchip Technology Inc.动手实验手册1.关键图标标识本文档中使用以下图标来标识不同
4、的作业部分,以降低复杂程度。信息:给出有关特定主题的上下文信息。技巧:突出显示有用的技巧和技术。任务:突出显示要完成的目标。结果:突出显示作业步骤的预期结果。警告:指示重要信息。执行:突出显示必要时要从目标执行的操作。C18H01 PNP 第3页 2017 Microchip Technology Inc.动手实验手册2.作业1:时钟、系统和基本定时器设置目标在Atmel Studio中打开动手实验项目,并对其进行配置以供开发使用初始化时钟系统初始化基本定时器,以输出一个具有恒定周期的波形设置系统通道以检测被按下的按钮并启动定时器使用Atmel Studio中的I/O视图调试应用程序,以查看寄
5、存器设置是否生效使用数据可视化工具绘制定时器的波形输出使用的外设和功能如下:时钟(CLK)和振荡器(OSC) 系统(EVSYS)端口(PORTD和PORTC)第5类定时器(TCC5)2.1项目初始化任务:初始化项目.打开Atmel Studio。选择File Open Project/Solution.(文件 打开 项目/解决方案.)。导航至提供的Atmel Studio解决方案所在的文件夹。选择XMEGA_IR_Hands_on.atsln。解决方案相应的文件将显示在Solution Explorer(解决方案开,则可通过View Solution Explorer(视图 解决
6、方案管理器)面板中。如果该面板尚未打管理器)进行。解决方案包含两个项目:名为XMEGA_IR_Hands_on的作业项目和名为XMEGA_IR_Hands_on_Solution的项目。确保作业项目为启动项目(即,执行编译或调试指令时要使用的项目)。具体操作如下:右键单击项目名XMEGA_IR_Hands_on,然后选择Set as Startup Project(设为启动项目),如图2-1所示。C18H01 PNP 第4页 2017 Microchip Technology Inc.动手实验手册图2-1. 设置启动项目5.确保文件main_1.c是惟一配置为编译的main文件。在Soluti
7、on Explorer中,右键单击文件名并选择File Properties(文件属性)。随即将显示Properties(属性)窗口。在Advanced Build Action(高级 编译操作)下,从下拉菜单中选择Compile(编译)。使用同样的方法,确保为其他main 文件从下拉菜单中选择None(无)。每个文件的编译操作均应反映在Solution Explorer中的文件图标上,如图2-2所示。C18H01 PNP 第5页 2017 Microchip Technology Inc.动手实验手册图2-2. 定义编译操作符号指示编译操作6.编译项目(Build Build Solutio
8、n(编译 编译解决方案),按F7或单击有错误并生成项目相关性列表。图标),以确保没信息:main.c文件的开头包含一个通用头文件#include 。该文件选择要包含的相应器件头文件。要查看XMEGA32E5器件的头文件,请转至Solution Explorer Dependencies(解决方案管理器 相关性),然后单击iox32e5.h。此头文件为寄存器、位 位 置 和 掩 码 提 供 了 有 用 定 义 。 可 以 MODULE.REGISTER 形式 或直接 以MODULE_REGISTER形式寄存器。外设的位掩码(._bm)和组配置(._gc)的宏名称通常以外设缩写开头,例如,系统设置
9、以EVSYS_开头,第4/5类定时器/计数器的相关设置以TC45_开头。C18H01 PNP 第6页 2017 Microchip Technology Inc.动手实验手册结果:项目现已初始化并已准备好进行开发。2.2时钟设置信息:系统时钟将采用内部8 MHz振荡器,因为它是XMEGAE5 Xplained上精度最高的振荡器。在以相同方式实现的真实红外器应用中,推荐采用精度更高的外部振荡器。任务:将时钟设为8 MHz(即,使用内部8 MHz RC振荡器)。1.2.在Solution Explorer中,单击main_1.c以在编辑器中打开该文件。取消注释clock_init()的内容,具体操
10、作如下:首先选中该部分,然后按键盘上的正斜杠键(或 组合键Ctrl+K和Ctrl+U),或者转至Edit Advanced Uncomment Selection(编辑 高级 选中的注释)。将在该函数内配置时钟设置。信息:要切换至内部8 MHz振荡器,需执行以下三个步骤:使能振荡器等待振荡器就绪切换时钟源3.在clock_init()函数内,使用OSC.CTRL寄存器使能内部RC 8 MHz振荡器(如图2-3所示)。输入“OSC_”并遵从自动填充建议。使用键盘上的箭头键选中某个选项时,将会在弹出窗口中显示信息。选择OSC_RC8MEN_bm并按Enter键自动填充。图2-3. 振荡器寄存器(O
11、SC_CTRL)C18H01 PNP 第7页 2017 Microchip Technology Inc.动手实验手册技巧:在应用程序开发期间,需要参考XMEGA E手册并查找相关寄存器说明,然后在iox32e5.h头文件中搜索相应的组配置定义(例如,7. 系统时钟和时钟选项 7.13 寄存 器汇总振荡器下的振荡器寄存器),接下来搜索以OSC_.开头的头文件定义。经过 一段时间后,自动完成操作便足以帮您找到所使用的寄存器需要的位掩码或组配置。不过,本培训将提供所有或部分定义名称,以便节省时间以及帮助大家了解系统。4.使能振荡器后,需要轮询振荡器状态寄存器中的振荡器就绪位。使用提供的while(
12、)循环轮询OSC.STATUS寄存器中的OSC_RC8MRDY_bm位,如图2-4所示。图2-4. 振荡器状态寄存器(OSC_STATUS)5.信息:振荡器就绪后即可用作时钟源。时钟源切换通过CLK.CTRL寄存器来实现。不过,该寄存器具有配置更改保护。这意味着要更改此寄存器中的设置,必须遵循特定的程序,其中涉及将签名值加载到寄存器并在指定的周期数内应用设置。该过程被抽象为宏_PROTECTED_WRITE(),此宏默认包含在有的器件的项目头文件中。使用_PROTECTED_WRITE()宏在CLK_CTRL寄存器中将时钟源切换为8 MHz振荡器(CLK_SCLKSEL_RC8M_gc),如图
13、2-5所示。图2-5. 时钟寄存器(CLK_CTRL)C18H01 PNP 第8页 2017 Microchip Technology Inc.动手实验手册结果:时钟初始化函数现已定义为将时钟设为8 MHz(即,使用内部8 MHz RC振荡器)。2.3定时器设置任务:将定时器(TCC5)设置为输出一个具有恒定周期的波形。信息:TCC5 = Timer/Counter Port C Type 5(定时器/计数器端口C类型5)1.2.在该函数内配置最终产生IR帧的定时器。在main()中,取消注释timer_init()的在timer_init()函数中,使用TCC5.CTRLB寄存器将定时器设置
14、为使用常规波形生成模式(TC_WGMODE_NORMAL_gc),如图2-6所示。图2-6. 定时器/计数器端口C类型5B寄存器(TCC5_CTRLB)C18H01 PNP 第9页 2017 Microchip Technology Inc.void clock_init(void)/* Enable internal 8MHz oscillator & wait for ready state */ OSC.CTRL |= OSC_RC8MEN_bm;while(!(OSC.STATUS & OSC_RC8MRDY_bm);/* Switch to 8MHz RC oscillator as
15、 clock source */_PROTECTED_WRITE(CLK_CTRL, CLK_SCLKSEL_RC8M_gc);动手实验手册信息:已选择此波形生成模式,以便将定时器的TOP值定义为PER(周期)寄存器。达到该 值时,会导致定时器溢出并翻转其输出;它与定时器溢出中断标志(OVFIF)相关联。稍 后,EDMA将被设置为将新传号和空号持续时间加载到PERBUF寄存器(PER寄存器对应的 缓冲区寄存器,以避免数据丢失并保持波形输出的完整性)。为了实现由硬件EDMA 确认(并因此而保持应用的内核 性),必须使用指定的请求/确认关系,如XMEGA E手册中13. TC4/516位定时器/计
16、数器类型4和5 13.10 EDMA支持(表13-3 EDMA请求源)下所定义。该表如图2-7所示,其中突出显示了上述OVFIF/PERBUF关系。图2-7. TC4/5 EDMA请求源/确认关系3.使用TCC5.CTRLE寄存器将捕捉/比较通道A(CCA)设为比较模式(TC_CCAMODE_COMP_gc), 以使能某个引脚上的定时器波形输出,如图2-8所示。图2-8. 定时器/计数器端口C类型5E寄存器(TCC5_CTRLE)4.当按钮已被按下的发生时,定时器将启动。使用TCC5.CTRLD寄存器将用于该信号的通道定义为通道0(TC_EVSEL_CH0_gc),如图2-9所示。C18H01
17、 PNP 第10页 2017 Microchip Technology Inc.动手实验手册图2-9. 定时器/计数器端口C类型5D寄存器(TCC5_CTRLD)信息:实际上,号上设置正确的源才系统通道编号无关紧要,因为它们均有多种用途。只有在同一通道编。5.timer_init()函数的最后一行对TCC5.CTRLA寄存器应用设置,定时器在中定义的通下系统时钟频率、道上有发生时启动,并以时钟设置定义的频率计数(如图2-10所示)。请定时器的时钟预分频比以及对周期寄存器(TCC5.PER)的赋值1000(十进制),然后估算最终生成的波形的周期。C18H01 PNP 第11页 2017 Micr
18、ochip Technology Inc.动手实验手册图2-10. 定时器/计数器端口C类型5A寄存器(TCC5_CTRLA)技巧:在此波形生成模式下,周期寄存器的内容实际上并不是周期,而是导致定时器溢出的计数次数,因此也是相邻两次输出翻转之间的计数次数。信息:如果EVSTART位(发生时启动)未置1,定义时钟预分频比会启动定时器。C18H01 PNP 第12页 2017 Microchip Technology Inc.动手实验手册结果:定时器现已设置为输出一个具有恒定周期的波形。2.4系统和I/O设置任务:为按钮配置I/O和设置通道。1.2.取消注释io_init()函数的在此处放置端口和
19、系统通道设置。 信息:XMEGA-E5 Xplained工具包上的按钮SW0将用于发出传送帧的信号;有关该按钮的信息,请参见XMEGA-E5 Xplained硬件用户指南的4. 外设 4.1 机械按钮,如图2-11所示。必须注意的是:该按钮连接至引脚PD0;因此应将设置应用于PORTD.PIN0CTRL。需要激活上拉电阻。该按钮低电平有效;因此引脚信号的下降沿进行操作。图2-11. 关于XMEGA-E5 Xplained上的机械按钮的用户信息C18H01 PNP 第13页 2017 Microchip Technology Inc.void timer_init(void)/* Normal
20、waveform mode */ TCC5.CTRLB |= TC_WGMODE_NORMAL_gc;/* Load values ready in period register & buffer */ TCC5.PER = 1000;/* Enable CC channel for output on a pin */ TCC5.CTRLE |= TC_CCAMODE_COMP_gc;/* Event channel for start signal */ TCC5.CTRLD |= TC_EVSEL_CH0_gc;/* Start on event & divide clock by 8
21、 for 1MHz */ TCC5.CTRLA |= TC5_EVSTART_bm | TC_CLKSEL_DIV8_gc;动手实验手册使用PORTD.PIN0CTRL寄存器激活上拉电阻(PORT_OPC_PULLUP_gc;OPC = Output/Pull Configuration(输出上下拉配置)以及将引脚设为检测下降沿(PORT_ISC_FALLING_gc;ISC = Input Sense Configuration(输入检测配置),如图2-12所示。图2-12. 端口D引脚0寄存器(PORTD_PIN0CTRL)信息:AVR器件引脚的默认输入引脚。输入(值0)。因此,无需将该端
22、口设置应用于按钮的3.配置通道多路开关(EVSYS.CH0MUX),以从按钮的引脚获取信号(EVSYS_CHMUX_PORTD_PIN0_gc)。信息,请参见XMEGA E手册的第6.12.1节。C18H01 PNP 第14页 2017 Microchip Technology Inc.动手实验手册4. 信息:要找到哪个是定时器捕捉/比较通道A的输出引脚,需参考XMEGA E。在32. 引脚分配和引脚功能 32.2 备用引脚功能下,每个端口都对应有一个表格,其中定义了各引脚的备用功能。本培训使用的定时器为TCC5,这是一款PORTC定时器,因此引脚 将在PORTC表中定义,如图2-13所示。O
23、utput Compare signal for TCC5 CCA(TCC5 CCA 的输出比较信号)被称作OC5A。图2-13. 备用引脚功能PORTC由于定时器的输出比较引脚用作输出,因此需要设置方向。使用PORTC.DIRSET寄存器设置引脚PC4 的方向(PIN4_bm),如图2-14所示。图2-14. 端口C数据方向设置寄存器(PORTC_DIRSET)结果:相关引脚现已初始化,并且通道已设置为在按下SW0按钮时触发。C18H01 PNP 第15页 2017 Microchip Technology Inc.void io_init(void)/* Pull up for activ
24、e low, sense falling edge */ PORTD.PIN0CTRL |= PORT_OPC_PULLUP_gc | PORT_ISC_FALLING_gc;/* Timer event channel source as SW0 pin PD0 */ EVSYS.CH0MUX = EVSYS_CHMUX_PORTD_PIN0_gc;/* OC5A pin (PC4) direction to output */ PORTC.DIRSET = PIN4_bm;动手实验手册2.5调试基本设置信息:下表概述了Atmel Studio中调试图标的功能:表2-1. Atmel Stu
25、dio中的调试图标任务:调试时在I/O视图中检查外设设置。1.2.编译项目以确保没有错误(图标或F7)。根据表2-2将XMEGA-E5 Xplained和功耗调试器彼此相连(如图2-15所示),然后使用USB电缆将其与计算机相连。表2-2. 功耗调试器与XMEGA-E5 Xplained连接C18H01 PNP 第16页 2017 Microchip Technology Inc.功耗调试器XMEGA-E5 Xplained图2-15中的电缆AVR调试头PDI插座编程电缆(XMEGA侧接头凸起部分)GNDGND(任意插座)黑色跳线IO0PC4(标有“SS”/J1引脚5)绿色跳线IO2PC0(标
26、有“SDA”/J1引脚1)橙色跳线图标功能键盘快捷键开始调试并暂停Alt + F5连接至目标停止调试Ctrl + Shift + F5暂停Ctrl + F5开始/继续调试F5单步进入F11单步跳过F10单步跳出Shift + F11运行到光标处Ctrl + F10复位Shift + F5无需调试直接开始Ctrl + Alt + F5动手实验手册图2-15. 硬件连接黑色绿色橙色绿色橙色黑色黑色绿色橙色信息:在Atmel Studio中的View Available Atmel Tools(视图 可用Atmel工具) 下,可查看所连接的工具。功耗调试器连接至计算机后应显示在此列表中。XMEGA-
27、E5Xplained不含ID,因此显示在该列表中。它将作为XPLAINED虚拟COM端口显示在Windows设备管理器的Ports(端口)(COM和LPT)下。Windows可能会显示同一名称的驱动程序软件安装通知。3.在Atmel Studio中,单击显示为No Tool(无工具)()的按钮,以打开Project Properties(项目属性)的Tool(工具)选项卡。在下拉菜单中选择Power Debugger(功耗调试器)作为Selected debugger/programmer(所选调试器/编程器),并选择PDI作为Interface(接口),如图2-16所示。C18H01 PNP
28、 第17页 2017 Microchip Technology Inc.动手实验手册图2-16. Atmel Studio中的工具选择信息:如果连接多个工具,则可通过电路板背面的序列号进行区分。4.单击Start Debugging and Break(开始调试并暂停)图标编程器件并进入调试模式。信息:功耗调试器固件可能需要更新。在这种情况下,请按照提示操作并重新编程。信息,请参见附录中的工具固件升级。在调试视图中,执行箭头应指向要执行的下一个语句(在本示例中为时钟初始化函数),如图2-17 所示。图2-17. 执行箭头位于主函数开头的调试视图5.转至Debug Windows I/O(调试
29、窗口 I/O)打开I/O视图。该窗口将清晰显示所有I/O寄存器的状态。单击Clock System (CLK)(时钟系统 (CLK))时,详细信息将显示在窗口底部。展开各个子部分可获取更详细信息。C18H01 PNP 第18页 2017 Microchip Technology Inc.动手实验手册单步跳过一次(图标或按F10)以执行时钟初始化函数。在I/O视图中,对时钟系统寄存器进行的更改将以红色突出显示,如图2-18所示。图2-18. 在I/O视图中生效的时钟设置信息:如果执行过程暂停,则可在调试模式下操作I/O视图。这对于在触发情况时验证应用程序的行为十分有用。无法对已锁定寄存器和受保护
30、的寄存器进行操作。6.可采用相同的方式验证定时器(TCC5)、系统(EVSYS)和I/O(PORTD和PORTC)的设置。完成后,单击Stop Debugging(停止调试)图标,等待Atmel Studio调试模式。结果:外设的设置现已通过在调试时检查其在I/O视图中的寄存器完成验证。2.6使用数据可视化工具绘制定时器波形输出任务:使用数据可视化工具绘制定时器波形输出并测量其周期。C18H01 PNP 第19页 2017 Microchip Technology Inc.动手实验手册1.转至Tools Data Visualizer(工具 数据可视化工具)。在DGI Control Pane
31、l(DGI面板)中,从下拉菜单中选择Power Debugger Data Gateway(功耗调试器数据网关)。单击Connect(连接),如图2-19所示。图2-19. 将数据可视化工具连接至功耗调试器2.选中相应复选框使能GPIO,然后单击Start(启动),如图2-20所示。图2-20. 启动数据可视化3.在Configuration(配置)菜于左侧)中的Visualization(可视化)下,双击Power Debugging(功耗调试)。Power Analysis(功耗分析)窗口将显示在DGI Control Panel下。4.单击DGI Control panel中标有GPIO
32、 0的插头并将其拖动至Power Analysis面板(位于右侧)中的GPIO 0插座,如图2-21所示。该窗口中应显示一条黄线,并自动滚动实时更新数据。C18H01 PNP 第20页 2017 Microchip Technology Inc.动手实验手册图2-21. Data Visualizer中的Power Analysis窗口双击单击并拖动显示黄线5.在XMEGA-E5 Xplained板上,按SW0启动定时器。黄色信号应开始在Power Analysis窗口中翻转。经过一段时间后,取消选中相应复选框更新。Auto scroll(自动滚动)(如图2-22所示),以停止窗口图2-22.
33、 在Power Analysis面板中自动滚动6.7.放大时间轴。请参见图2-23。面板)中的Cursor(光标)下,选中Enabled(使能)框以显示光标。单击单击缩放热键在Control Panel(并拖动光标线,将其置于相邻两个上升沿的位置,以测量波形周期。确保Cursor Delta(光标增量) 激活,因为这将表示周期测量。该值应为2 ms左右;因振荡器精度不同可能会存在一些差异。C18H01 PNP 第21页 2017 Microchip Technology Inc.动手实验手册图2-23. 测量定时器输出波形周期单击光标并将其拖动到位信息:振荡器频率:8 HMz系统预分频器A(B
34、和C):1(1和1)定时器预分频比:8定时器时钟频率:(8 MHz/1/1/1) / 8 = 1 MHz定时器时钟周期(一个节拍):1 s定时器周期寄存器值:1000 = 1000 s = 1 ms(每个输出波形周期两次溢出 = 2 ms输出周期)8.在Data Visualizer DGI Control Panel中,单击Stop(停止)停止来自器件的数据流,如图2-24所示。将该窗口在Atmel Studio中保持为打开状态,因为稍后会再次使用。图2-24. 停止数据可视化结果:定时器波形输出的周期现已测得,到目前为止的应用程序功能已经过验证。C18H01 PNP 第22页 2017 M
35、icrochip Technology Inc.动手实验手册3.作业2:增强型直接器目标初始化EDMA外设以在两个单元之间移动数据调试时使用Atmel Studio中的Watch(监视)窗口验证功能使用EDMA更新定时器波形输出使用的外设和功能如下:器(EDMA)器(PMIC)增强型直接器中断和可编程多级中断编码文件通过框架项目中所含的以下文件将所需信息编码到IR帧中:timings.h和timings.c。这是一种于编码ASCII字符的简单、非标准方法。该方法以字符的十六进制值为基础,为每个字符定义一个传号和一个空 号。这种方法被设计成处理一个指向c字符串的指针和一个数组(其中将填充持续时间
36、值,即“timings”)单元,数组提供给定时器作为其下一次计数的最高值。定时器将递增计数到每一个值并翻转输出,最终将所需IR帧作为波形输出。“timings”数组包含的数据将通过EDMA外设在 见图3-1。图3-1. 使用“Timings”文件编码的IR帧示例单元之间传输。请参EDMA配置概述增强型直接器(EDMA)器和外设之间的数据传输,从而为CPU减轻负担。器应用定制的示例事务如图3-2所示。EDMA传输被组器可实现自定义EDMA事务的方式有很多,而该红外织为多个称作突发的部分,在本示例中定义为两个字节(一个timings数组元素)。一组突发组成一个块, 其大小可配置(本示例中为整个ti
37、mings数组的大小)。在本示例中,整个事务仅由一个(而非多个)块组成。此事务将定义每次触发传输一个突发(单发;如果此设置关闭,则默认设置为每次触发传输一个块)。C18H01 PNP 第23页 2017 Microchip Technology Inc.动手实验手册图3-2. EDMA事务示例2 字节突发模式单发 = 每次触发传输一个突发触发信号(触发信号)(触发信号)(触发信号)(触发信号)(触发信号)(N 传号)(A 传号)(A 空号)(V 传号)(N 空号)突发 = 一个数组元素突发传输突发传输突发传输突发传输突发传输块 = 整个数组块传输事务 = 一个块(不重复)EDMA 事务在本应用
38、中,将使用类似EDMA事务设置来将数据从SRAM(源地址;timings数组)传输到属于外设定 时器的寄存器(目标地址;TCC5.PERBUF周期缓冲区寄存器)。源地址需要自动递增,以便逐元素操作timings数组,并在块末尾(即,数组末尾)重新加载原始地址。目标地址需要自动递增,以便加载寄存器的低字节和高字节(实际上是双元素字节数组);每次突发后需要重新加载。涉及EDMA的应用程序开发将分两:1.初始化EDMA以将数据从timings数组传输到“虚拟”目标数组,并目视检查数组以验证数据是否从 源地址获取并正确传输。(数组到数组)对设置稍作更改,使EDMA将数据从timings数组传输到定时器
39、周期缓冲区寄存器。此配置将通过检 查定时器的输出波形来验证。(数组到定时器)2.3.1数组到数组任务:初始化EDMA外设,以在定时器溢出时将数据从一个数组移至另一个数组。1.2.3.配置项目以使main_2a.c是惟一设为编译的main文件。如需帮助,请参见图2-2。 找到edma_init()函数。将在此处放置EDMA外设的配置代码。 信息:EDMA有两种通道:1.外设通道:用于数据寄存器需要持续更新数据的外设,例如通信外设(如SPI和USART)或数据处理外设(如ADC和DAC)。2.标准通道:用于器间的传输,包括属于外设的非数据寄存器。C18H01 PNP 第24页 2017 Micro
40、chip Technology Inc.动手实验手册本应用只需要一个标准通道,因此任何含有一个标准通道的配置均可行。不过,为了简单起见,使 用EDMA.CTRL寄存器将EDMA设置为使用两个标准通道(EDMA_CHMODE_STD02_gc),如图3-3 所示。本应用将使用EDMA通道0来传输定时数据。图3-3. EDMA寄存器(EDMA_CTRL)通道模式设置4.如图3-2所示,每次触发需要传输一个两字节突发。使用EDMA.CH0.CTRLA寄存器向突发长度位(EDMA_CH_BURSTLEN_bm)和单发位(EDMA_CH_SINGLE_bm)写入1,如图3-4 所示。图3-4. EDMA
41、通道0A寄存器(EDMA_CH0_CTRLA)突发长度和单发设置5.EDMA 通过对传输字节进行递减计数来检测何时完成传输。向EDMA.CH0.TRFCNT寄存器写入timings数组的大小(为字节)。由于其元素为双字节,因此需要将数组中的元素个数加倍。更多信息,请参见XMEGA E手册的第5.15.6节提示:TIMINGS_LENGTH为timings数组中元素个数的组合宏定义。C18H01 PNP 第25页 2017 Microchip Technology Inc.动手实验手册6.将源地址(EDMA.CH0.ADDR)设置为timings数组。地址应设为递增,以EDMA逐元素操作数组。在
42、一块数据(在中定义为数组大小)传输完成后应重新加载初始源地址。使用EDMA.CH0.ADDRCTRL寄存器应用设置以使地址(EDMA_CH_DIR_INC_gc)递增,并在每个块完成传输后进行重新加载(EDMA_CH_RELOAD_BLOCK_gc),如图3-5所示。信息:需要进行uint16_t强制转换,以将指针显式转换为整型,从而避免出现编译器警告。图3-5. EDMA通道0源地址寄存器(EDMA_CH0_ADDRCTRL)7.在将 EDMA 融 入 应 用 程 序 的 第 一 步 中 , 将 使 用“虚拟”目标,即 SRAM 中 的 名 为destination_array(EDMA.C
43、H0.DESTADDR)的数组;其大小与timings数组相同。在作业的这一部分中,目标地址应与源地址相同;使用EDMA.CH0.DESTADDRCTRL寄存器应用设置以使地址( EDMA_CH_DESTDIR_INC_gc )递增,并在每个块完成传输后重新加载初始地址(EDMA_CH_RELOAD_BLOCK_gc),如图3-6所示。C18H01 PNP 第26页 2017 Microchip Technology Inc.动手实验手册图3-6. EDMA通道0目标地址寄存器(EDMA_CH0_DESTADDRCTRL)8.使用EDMA.CH0.CTRLA寄存器使能EDMA通道0(EDMA_
44、CH_ENABLE_bm),如图3-7所示。图3-7. EDMA通道0A寄存器(EDMA_CH0_CTRLA)通道使能设置C18H01 PNP 第27页 2017 Microchip Technology Inc.动手实验手册9.使用EDMA.CTRL寄存器使能整个EDMA模块(EDMA_ENABLE_bm),如图示。图3-8. EDMA寄存器(EDMA_CTRL)模块使能设置10. 信息:此时,显然尚未设置任何EDMA触发信号。该触发信号会通知EDMA何时获取和传送数据,因此必不可少。当使用来自外设的触发源(如定时器溢出标志(OVFIF)时,务必注意硬件请求/确认关系。如果使用中断标志作为触
45、发源而未使用定义的确认操 作,则将会 未定义的行为。在本示例中,定时器溢出为所需触发源;但由于EDMA未按图2-7所述执行操作,因此不能直接使用,需要将中断服务程序(ISR)用于定时器溢出 标志。其中将包含用于通过软件 EDMA请求和将标志清零的代码。找到用于TCC5溢出标志的中断服务程序:ISR(TCC5_OVF_vect)。每次定时器发生溢出时都会执 行此ISR内的代码。11.在ISR内,使用EDMA.CH0.CTRLA寄存器将软件触发信号(EDMA_CH_TRFREQ_bm),如图3-9所示。至EDMA通道图3-9. EDMA通道0A寄存器(EDMA_CH0_CTRLA)传输请求12.之
46、后,使用TCC5.INTFLAGS寄存器向溢出中断标志的位位置(TC5_OVFIF_bm)写入1,如图3-10所示。C18H01 PNP 第28页 2017 Microchip Technology Inc.动手实验手册图3-10. 定时器/计数器端口C类型5中断标志寄存器(TCC5_INTFLAGS)13.找到main()函数。将在此函数中完成使能ISR的过程。信息:中断分为以下三:1.分配中断优先级(可编程多级中断器(PMIC)中断请求的处理和优先级。XMEGA器件上有三种可选中断优先级:低、中或高)2.3.使能分配的优先级(PMIC寄存器)全局中断(将CPU状态寄存器中的I位置1。可使用
47、avr/interrupt.h中的sei() 宏来实现)14.使用定时器中断A寄存器(TCC5.INTCTRLA)为定时器溢出中断分配低优先级(TC_OVFINTLVL_LO_gc),如图3-11所示。信息:在本示例中,仅使用一个中断,因此本质上中断优先级无关紧要(只需激活任一优 先级即可)。只有在多个ISR争用CPU时间时优先级才有用。图3-11. 定时器/计数器端口C类型5中断A寄存器(TCC5_INTCTRLA)15.使用PMIC.CTRL寄存器使能低优先级中断(PMIC_LOLVLEN_bm),如图3-12所示。C18H01 PNP 第29页 2017 Microchip Techno
48、logy Inc.动手实验手册图3-12. PMIC寄存器(PMIC_CTRL)注:请注意,中断的第三步(全局中断)已包含在代码中(调用sei()宏)。16.单击Build图标或按F7编译应用程序,以确保没有错误。结果:EDMA现已初始化为在两个数组之间传输数据(基于定时器溢出ISR内的软件触发信号)。C18H01 PNP 第30页 2017 Microchip Technology I main(void)./* Enable frame timer overflow interrupt */ TCC5.INTCTRLA |= TC_OVFINTLVL_LO_gc;/* Low
49、level interrupts enabled */ PMIC.CTRL |= PMIC_LOLVLEN_bm;/* Global interrupt enable */ sei();.ISR(TCC5_OVF_vect)/* Trigger EDMA */EDMA.CH0.CTRLA |= EDMA_CH_TRFREQ_bm;/* Clear flag */ TCC5.INTFLAGS = TC5_OVFIF_bm;.void edma_init(void)/* Two standard channels configuration */ EDMA.CTRL |= EDMA_CHMODE_
50、STD02_gc;/* Channel 0 setup */* 2 byte burst length, single shot (1 burst per trigger) */ EDMA.CH0.CTRLA |= EDMA_CH_BURSTLEN_bm | EDMA_CH_SINGLE_bm;/* Block transfer byte count (x2 - 2-byte bursts) */ EDMA.CH0.TRFCNT = TIMINGS_LENGTH*2;/* Source address */EDMA.CH0.ADDR = (uint16_t)timings;/* Source
51、address control: increment */EDMA.CH0.ADDRCTRL = EDMA_CH_DIR_INC_gc | EDMA_CH_RELOAD_BLOCK_gc;/* Destination address */EDMA.CH0.DESTADDR = (uint16_t)destination_array;/* Destination address control: increment (16-bit register), reload* address after each burst (to stay at the same register)*/EDMA.CH0.DESTADDRCTRL = EDMA_CH_DESTDIR_INC_gc | EDMA_CH_RELOAD_TRANSACTION_gc;动手实验手册3.1.1使用Watch验证EDMA功能任务:调试时使用Watch窗口测试EDMA功能。1.2.单击Start Debugging and Break图标。随即应显示调试视图,执行过程暂停在main()的开头。转至Debug Windows Watch Watch 1(监视1)和Watch 2(监视2),添加两个Watch 窗口。这两个窗口将以选项卡的形式显示在Atmel Studio调试视图的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跨境电商平台的商业模式构建
- 音乐与舞蹈在小学教育中的综合实践
- 2025年高收缩腈纶合作协议书
- 高效办公软件助力企业成功
- 语文老师如何引导小学生深入理解古诗词
- 行业领先的客户服务模式与客户忠诚度的关系研究报告
- 高效库存管理体系的构建与实施
- 食品安全文化在家庭年夜饭中的培育与传播
- 艺术教育助力孩子全面发展
- 视频营销以视觉方式吸引客户的策略
- 《大模型原理与技术》全套教学课件
- GB/T 44770-2024智能火电厂技术要求
- 《塑料材质食品相关产品质量安全风险管控清单》
- 陌生拜访情景演练
- 【经典文献】《矛盾论》全文
- 存款保险条例培训
- 八年级数学家长会课件
- 惠州市2025届高三第二次调研考试(二调)试题 政治试卷(含答案解析)
- 光伏发电项目试验检测计划
- 幼儿园营养膳食蔬菜水果认知主题课件
- 国开(陕西)2024年秋《社会调查》形考作业1-4答案
评论
0/150
提交评论