实时时钟实验_第1页
实时时钟实验_第2页
实时时钟实验_第3页
实时时钟实验_第4页
实时时钟实验_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实时时钟实验实验目的了解实时时钟的硬件控制原理及设计方法。掌握S3C2410X处理器的RTC模块程序设计方法。实验设备硬件:EmbestEduKit-IV平台,ULINK2仿真器套件,PC机;软件:μVisionIDEforARM集成开发环境,Windows98/2000/NT/XP。实验内容学习和掌握EmbestARM教学实验平台中RTC模块的使用,编写应用程序,修改时钟日期及时间的设置,以及使用EMBESTARM教学系统的串口,在超级终端显示当前系统时间。实验原理1.实时时钟(RTC)实时时钟(RTC)器件是一种能提供日历/时钟、数据存储等功能的专用集成电路,常用作各种计算机系统的时钟信号源和参数设置存储电路。RTC具有计时准确、耗电低和体积小等特点,特别是在各种嵌入式系统中用于记录事件发生的时间和相关信息,如通信工程、电力自动化、工业控制等自动化程度高的领域的无人值守环境。随着集成电路技术的不断发展,RTC器件的新品也不断推出,这些新品不仅具有准确的RTC,还有大容量的存储器、温度传感器和A/D数据采集通道等,已成为集RTC、数据采集和存储于一体的综合功能器件,特别适用于以微控制器为核心的嵌入式系统。RTC器件与微控制器之间的接口大都采用连线简单的串行接口,诸如I2C、SPI、MICROWIRE和CAN等串行总线接口。这些串口由2~3根线连接,分为同步和异步。2.S3C2410X实时时钟(RTC)单元S3C2410X实时时钟(RTC)单元是处理器集成的片内外设。由开发板上的后备电池供电,可以在系统电源关闭的情况下运行。RTC发送8位BCD码数据到CPU。传送的数据包括秒、分、小时、星期、日期、月份和年份。RTC单元时钟源由外部32.768KHz晶振提供,可以实现闹钟(报警)功能。S3C2410X实时时钟(RTC)单元特性:BCD数据:秒、分、小时、星期、日期、月份和年份闹钟(报警)功能:产生定时中断或激活系统自动计算闰年无2000年问题独立的电源输入支持毫秒级时间片中断,为RTOS提供时间基准读/写寄存器访问RTC模块的寄存器,首先要设RTCCON的bit0为1。CPU通过读取RTC模块中寄存器BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDDATE、BCDMON和BCDYEAR的值,得到当前的相应时间值。然而,由于多个寄存器依次读出,所以有可能产生错误。比如:用户依次读取年(1989)、月(12)、日(31)、时(23)、分(59)、秒(59)。当秒数为1到59时,没有任何问题,但是,当秒数为0时,当前时间和日期就变成了1990年1月1日0时0分。这种情况下(秒数为0),用户应该重新读取年份到分钟的值(参考程序设计)。后备电池:RTC单元可以使用后备电池通过管脚RTCVDD供电。当系统关闭电源以后,CPU和RTC的接口电路被阻断,后备电池只需要驱动晶振和BCD计数器,从而达到最小的功耗。闹钟功能RTC在指定的时间产生报警信号,包括CPU工作在正常模式和休眠(powerdown)模式下。在正常工作模式,报警中断信号(ALMINT)被激活。在休眠模式,报警中断信号和唤醒信号(PMWKUP)同时被激活。RTC报警寄存器(RTCALM)决定报警功能的使能/屏蔽和完成报警时间检测。时间片中断RTC时间片中断用于中断请求。寄存器TICNT有一个中断使能位和中断计数。该中断计数自动递减,当达到0时,则产生中断。中断周期按照下列公式计算:Period=(n+1)/128second其中,n为RTC时钟中断计数,可取值为(1-127)置零计数功能RTC的置零计数功能可以实现30、40和50秒步长重新计数,供某些专用系统使用。当使用50秒置零设置时,如果当前时间是11:59:49,则下一秒后时间将变为12:00:00。注意:所有的RTC寄存器都是字节型的,必须使用字节访问指令(STRB、LDRB)或字符型指针访问。实验设计1.硬件电路设计图5-5-2实时时钟外围电路2.软件程序设计(1)时钟设置时钟设置程序须实现时钟工作情况以及数据设置有效性检测功能。具体实现可参考示例程序设计。(2)时钟显示时钟参数通过实验系统串口0输出到超级终端,显示内容包括年月日时分秒。参数以BCD码形式传送,用户使用串口通信函数(参见串口通信实验)将参数取出显示。/*************************************************************************name:rtc_display*func:displayrtcvalue*para:none*ret:none*modify:*comment:************************************************************************/voidrtc_display(void){INT32TnTmp;uart_printf("\nDisplaycurrentDateandtime:\n");rRTCCON=0x01;//Noreset,MergeBCDcounters,1/32768,RTCControlenableuart_printf("Pressanykeytoexit.\n");while(!uart_getkey()){while(1){if(rBCDYEAR==0x99)g_nYear=0x1999;elseg_nYear=0x2000+rBCDYEAR;g_nMonth=rBCDMON;g_nWeekday=rBCDDAY;g_nDate=rBCDDATE;g_nHour=rBCDHOUR;g_nMin=rBCDMIN;g_nSec=rBCDSEC;if(g_nSec!=nTmp)//Sametimeisnotdisplay{nTmp=g_nSec;break;}}uart_printf("%02x:%02x:%02x%10s,%02x/%02x/%04x\r",g_nHour,g_nMin,g_nSec,day[g_nWeekday],g_nMonth,g_nDate,g_nYear);}rRTCCON=0x0;//Noreset,MergeBCDcounters,1/32768,RTCControldisable(forpowerconsumption)uart_printf("\n\nExitdisplay.\n");}实验步骤1.准备实验环境使用ULINK2仿真器连接EmbestEduKit-IV实验平台的主板JTAG接口;使用EmbestEduKit-IV实验平台附带的交叉串口线,连接实验平台主板上的COM2和PC机的串口(一般PC只有一个串口,如果有多个请自行选择,笔记本没有串口设备的可购买USB转串口适配器扩充);使用EmbestEduKit-IV实验平台附带的电源适配器,连接实验平台主板上的电源接口。2.串口接收设置在PC机上运行windows自带的超级终端串口通信程序,或者使用实验平台附带光盘内设置好了的超级终端,设置超级终端:波特率115200、1位停止位、无校验位、无硬件流控制,或者使用其它串口通信程序。(注:超级终端串口的选择根据用户的PC串口硬件不同,请自行选择,如果PC机只有一个串口,一般是COM1)3.打开实验例程1)拷贝实验平台附带光盘DISK3_S3C2410\03-Codes\01-MDK\Mini2410-IV文件夹到MDK的安装路径:Keil\ARM\Boards\Embest\(如果本实验之前已经拷贝,可以跳过这一步)。(注:用户也可拷贝工程到任意目录,本实验为了便于教学,故统一实验路径);2)运行μVisionIDEforARM软件,点击菜单栏“Project”,选择“OpenProject…”,在弹出的对话框选择实验例程目录5.5_RTC_Test子目录下的RTC_Test.Uv2工程。3)默认打开的工程在源码编辑窗口会显示实验例程的说明文件readme.txt,详细阅读并理解实验内容。4)工程提供了两种运行方式:一是下载到SDRAM中调试运行,二是固化到NorFlash中运行。用户可以在工具栏SelectTarget下拉框中选择在RAM中调试运行还是固化Flash中运行。如下图所示:下面实验将介绍下载到SDRAM中调试运行,所以我们在SelectTarget下拉框中选择RTC_TestINRAM。5)接下来开始编译链接工程,在菜单栏“Projiet”选择“Buildtarget”或者“Rebuildalltargetfiles”编译整个工程,用户也可以在工具栏单击“”或者“”进行编译。6)编译完成后,在输出窗口可以看到编译提示信息,比如“".\SDRAM\RTC_Test.axf"-0Error(s),1Warning(s).”,如果显示“0Error(s)”即表示编译成功。7)拨动实验平台电源开关,给实验平台上电,单击菜单栏Debug->Start/StopDebugSession项将编译出来的映像文件下载到SDRAM中,或者单击工具栏“”按钮来下载。8)下载完成后,单击菜单栏Debug->Run项运行程序,或者单击工具栏“”按钮来全速运行程序。用户也可以使用进行单步调试程序。9)全速运行后,用户可以在超级终端看到程序运行的信息,出现“RTCTestExampleRTCCheck(Y/N)?”提示是否对RTC进行检查,选择后就可以进行之后的一些操作,如设置时钟、显示时间以及Tick中断测试等。10)用户可以Stop程序运行,使用μVisionIDEforARM的一些调试窗口跟踪查看程序运行的信息。注:如果在第4)步用户选择在Flash中运行,则编译链接成功后,单击菜单栏Flash->Download项将程序固化到NorFlash中,或者单击工具栏按钮“”固化程序,从实验平台的主板拔出JTAG线,给实验平台重新上电,程序将自动运行。4.观察实验结果1)在PC机上观察超级终端程序主窗口,可以看到如下界面:*********************************************************************英蓓特EduKit系列嵌入式教学系统平台****EmbestEduKitSeriesEmbeddedTeachingPlatform*********************************************************************RTCTestExampleRTCCheck(Y/N)?2)用户可以选择是否对RTC进行检查,检查正确的话,继续执行程序,检查不正确时也会提示是否重检查:RTCAlarmTestforS3C241015:12:00RTCAlarmInterruptO.K.15:12:020.RTCTimeSetting1.OnlyRTCDisplayPleaseSelet:3)用户可以选择是否重新进行时钟设置,当输入不正确时也会提示是否重新设置:PleaseSelet:0Pleaseinput0xandTwodigitthenpressEnter,suchas0x99.Year(0x??):0x08Month(0x??):0x06Date(0x??):0x261:Sunday2:Monday3:Thesday4:Wednesday5:Thursday6:Friday7:SaturdayDayofweek:5Hour(0x??):0x15Minute(0x??):0x44Second(0x??):0x104)接着超级终端输出信息如下:DisplaycurrentDateandtime:Pressanykeytoexit.15:44:16THR,06/26/2008Exitdisplay.5)最后还可以进行RTC的Tick中断测试:RTCTickinterrupt(1g_nSec)testforS3C2410Pressanykeytoexit.005secondsend.5.完成实验练习题理解和掌握实验后,完成实验练习题。实验参考程序1.RTC报警控制程序/**********************************************************************************************name:rtc_alarm_test*func:testrtcalarm*para:none*ret:f_nIsRtcInt=0:rtcnotwork*f_nIsRtcInt=1:rtcworkfine*modify:*comment:*********************************************************************************************/intrtc_alarm_test(void){//INT32Tg_nHour=0xff0000,g_nMin=0xff00,g_nSec=0xff;uart_printf("RTCAlarmTestforS3C2410\n");rRTCCON=0x01;//Noreset,MergeBCDcounters,1/32768,RTCControlenablerALMYEAR=rBCDYEAR;rALMMON=rBCDMON;rALMDATE=rBCDDATE;rALMHOUR=rBCDHOUR;rALMMIN=rBCDMIN;rALMSEC=rBCDSEC+2;f_nIsRtcInt=0;pISR_RTC=(unsignedint)rtc_int;rRTCALM=0x7f;//Global,g_nYear,g_nMonth,Day,g_nHour,Minute,SecondalarmenablerRTCCON=0x0;//Noreset,MergeBCDcounters,1/32768,RTCControldisablerINTMSK&=~(BIT_RTC);uart_printf("%02x:%02x:%02x\n",rBCDHOUR,rBCDMIN,rBCDSEC);//while(f_nIsRtcInt==0);delay(21000);//delay2.1suart_printf("%02x:%02x:%02x\n",rBCDHOUR,rBCDMIN,rBCDSEC);rINTMSK|=BIT_RTC;rRTCCON=0x0;//Noreset,MergeBCDcounters,1/32768,RTCControldisablereturnf_nIsRtcInt;}2.时钟设置控制程序/**********************************************************************************************name:rtc_set*func:setanewg_nDate&timetortc*para:none*ret:none*modify:*comment:*********************************************************************************************/voidrtc_set(void){uart_printf("\nPleaseinput0xandTwodigitthenpressEnter,suchas0x99.\n");uart_printf("Year(0x??):");g_nYear=uart_getintnum();uart_printf("Month(0x??):");g_nMonth=uart_getintnum();uart_printf("Date(0x??):");g_nDate=uart_getintnum();uart_printf("\n1:Sunday2:Monday3:Thesday4:Wednesday5:Thursday6:Friday7:Saturda

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论