2812 ADC采样程序.doc_第1页
2812 ADC采样程序.doc_第2页
2812 ADC采样程序.doc_第3页
2812 ADC采样程序.doc_第4页
2812 ADC采样程序.doc_第5页
全文预览已结束

下载本文档

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

文档简介

本程序采用EVA中断启动ADC转换,级联模式6通道顺序采样:DSP28_Adc.c:void InitAdc(void) unsigned int i; AdcRegs.ADCTRL1.bit.RESET=1;asm( RPT # 10 | NOP); /等待12个周期,复位adc模块AdcRegs.ADCTRL3.bit.ADCBGRFDN=3;for(i=0;i10000;i+)asm( NOP); / 能带隙和参考电路上电AdcRegs.ADCTRL3.bit.ADCPWDN=1;for(i=0;i5000;i+)asm( NOP); / 内核内的模拟电路上电AdcRegs.ADCTRL3.bit.ADCCLKPS=15; /核时钟分频器AdcRegs.ADCTRL3.bit.SMODE_SEL=0; /顺序采样模式AdcRegs.ADCTRL1.bit.RESET=0;AdcRegs.ADCTRL1.bit.SUSMOD=3;/仿真挂起时,序列发生器和其他轮询程序逻辑立即停止AdcRegs.ADCTRL1.bit.ACQ_PS=0; /控制SOC脉宽AdcRegs.ADCTRL1.bit.CPS=0; /内核时钟预分频AdcRegs.ADCTRL1.bit.CONT_RUN=0; /启动停止模式到达EOS后序列发生器停止AdcRegs.ADCTRL1.bit.SEQ_CASC=1; /级联模式,SEQ1和SEQ2作为单个16状态序列发生器工作AdcRegs.MAX_CONV.bit.MAX_CONV=0x0005; AdcRegs.CHSELSEQ1.bit.CONV00=0x0; AdcRegs.CHSELSEQ1.bit.CONV01=0x1; AdcRegs.CHSELSEQ1.bit.CONV02=0x2; AdcRegs.CHSELSEQ1.bit.CONV03=0x3; AdcRegs.CHSELSEQ2.bit.CONV04=0x4; AdcRegs.CHSELSEQ2.bit.CONV05=0x5;AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ=0;AdcRegs.ADCTRL2.bit.RST_SEQ1=0;AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1=1;AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1=0;AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1=1;AdcRegs.ADCTRL2.bit.EXT_SOC_SEQ1=0;AdcRegs.ADCTRL2.bit.RST_SEQ2=0;AdcRegs.ADCTRL2.bit.SOC_SEQ2=0;AdcRegs.ADCTRL2.bit.INT_ENA_SEQ2=0;AdcRegs.ADCTRL2.bit.INT_MOD_SEQ2=0;AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ2=0;/AdcRegs.ADCTRL2.bit.SOC_SEQ1=1;/使能ADC中断PieCtrl.PIEIER1.bit.INTx6=1;IER |= M_INT1;AD.c文件:#include DSP28_Device.hunsigned int Send_Flag;unsigned int i;char *strg=abcd;float ad6=0,1,2,3,4,5;float adclo=0.0;int ad_freq=0;void DelayNmSec(int N)unsigned int j;while(N-)for(j=0;j0) SciaRegs.SCITXBUF=*Tx+;elselength=0;EvaRegs.EVAIMRB.bit.T2PINT=1;/中断允许EvaRegs.EVAIFRB.bit.T2PINT=1;/清除中断标志PieCtrl.PIEACK.bit.ACK3=1;/向cpu申请中断interrupt void AD_ISR(void) ad_freq+;if(ad_freq=6)ad0=(AdcRegs.RESULT04)*3)/4095.0+adclo;ad1=(AdcRegs.RESULT14)*3)/4095.0+adclo;ad2=(AdcRegs.RESULT24)*3)/4095.0+adclo;ad3=(AdcRegs.RESULT34)*3)/4095.0+adclo;ad4=(AdcRegs.RESULT44)*3)/4095.0+adclo;ad5=(AdcRegs.RESULT54)*3)/4095.0+adclo;ad_freq=0; / Reinitialize for next ADC sequenceAdcRegs.ADCTRL2.bit.RST_SEQ1=1;AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;PieCtrl.PIEACK.bit.ACK1=1;void main(void)/*初始化系统*/InitSysCtrl();/*关中断*/DINT;IER = 0x0000;IFR = 0x0000;/*初始化PIE中断*/InitPieCtrl();/*初始化PIE中断矢量表*/InitPieVectTable();/*初始化SCIA寄存器*/ InitSci(); for(i = 0; i 8; i+) Sci_VarRxi = 0;Sci_VarTxi = 0; Rx=Sci_VarRx; Tx=Sci_VarTx; Send_Flag = 0; rx_length=0; add=0; length=9;/ 初始化定时器2/*EvaRegs.GPTCONA.all=0; EvaRegs.T2PR =0x1500; / 定时器2的周期为20k EvaRegs.EVAIMRB.bit.T2PINT = 1;/定时器2周期中断允许 EvaRegs.EVAIFRB.bit.T2PINT = 1;/清除标志 EvaRegs.T2CNT =0x0000; / Timer2 counter EvaRegs.T2CON.all =0x1440;/16分频,使能定时器操作,连续增模式*/*初始化ADC寄存器*/InitAdc();/*设置中断服务程序入口地址*/EALLOW;/ This is needed to write to EALLOW protected registersPieVectTable.TXAINT = &SCITXINTA_ISR;PieVectTable.RXAINT = &SCIRXINTA_ISR;/PieVectTable.T2PINT = &T2PINT_ISR;PieVectTable.ADCINT = &AD_ISR;EDIS; / This is needed to disable write to EALLOW protected registers/PieCtrl.PIEIER3.bit.INTx1=1;/T2pint中断/*开中断*/IER |= M_INT9;/IER |= M_INT3; / t1pint enableEINT; / Enable Global interrupt INTMERTM;/ Enable Global realtime interrupt DBGM/配置时间管理器EVA time1EvaRegs.T1PR=0x1500;EvaRegs.GPTCONA.bit

温馨提示

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

评论

0/150

提交评论