ATD 配置
来源:互联网 发布:无法访问网络打印机 编辑:程序博客网 时间:2024/05/17 23:52
1、ATD 有挺多东西要注意的,用的时候还是看下datasheet 。
2、A/D转换时间 = Initial Sample Time(2)+ Programmed Sample Time(可编程)+ Resolution Period(10),其中采样周期ATDCTL4的SMP[1:0]来选择。
3、据说xs128 A/D Clock 要在500Hz 到 2MHz这个范围内采样才会准确,但又有的说是小于8MHz。
4、xs128的AD口是可以当作普通IO使用的,由ATD0DIEN[15:0]这个32位寄存器设置,置1做IO口,置0做AD;ATD0DIEN有高地位,分别为ATD0DIENH和ATD0DIENL。
5、AD采样的数据按精度分别存在ATD0DRx的高低位里,但具体怎么存得看精度和对齐方式。
6、做IO口时,PT0AD0是[15:8]的数据寄存器,DDR0AD0是[15:8]的方向寄存器。这个有点奇葩,照理说应该是[7:0]口为PT0AD0才对,它反而是PT1AD0。
7、采样完毕可用中断或查询方式。
//------------------------ ATD ------------------------void AD_Init(void) { ATD0CTL1 = 0x00; //选择AD通道为外部触发,8位精度,采样前不放电 ATD0CTL2 = 0x40; //标志位自动清零,禁止外部触发, 禁止中断 ATD0CTL3 = 0x20; //左对齐无符号,每次转换4个序列, No FIFO, Freeze模式下继续转 ATD0CTL4 = 0x13; //采样时间为4个AD时钟周期,PRS=20-1,ATDClock=2MHz ATD0CTL5 = 0x30; //特殊通道禁止,连续转换,多通道转换,通道[3:0]轮流采样 ATD0DIENL = 0x00; //AD口[7:0]禁止数字输入 //AD转换时间 = Initial Sample Time(2)+ Programmed Sample Time(可编程)+ Resolution Period(10)}
//--------------- AD转换 + 均值滤波 ---------------void ATD()//查询{ uchar AD_sample[4][3]; uchar i; for(i = 0; i < 3; i++) //采样3次 { while(!ATD0STAT2_CCF0); //等待转换结束 AD_sample[0][i] = ATD0DR0H; //读取转换的结果 while(!ATD0STAT2_CCF1); //等待转换结束 AD_sample[1][i] = ATD0DR1H; //读取转换的结果 while(!ATD0STAT2_CCF2); //等待转换结束 AD_sample[2][i] = ATD0DR2H; //读取转换的结果 while(!ATD0STAT2_CCF3); //等待转换结束 AD_sample[3][i] = ATD0DR3H; //读取转换的结果 } for(i = 0; i < 4; i++) //滤波 { AD_value[i] = (uchar)((AD_sample[i][0] + AD_sample[i][1] + AD_sample[i][2]) / 3); }}
#pragma CODE_SEG NON_BANKED //中断的方法没试过,反正大致就是这样。void interrupt 22 Int_AD0(void){ AD_wData[0] = ATD0DR0; //将结果寄存器中的值存放到数组中 AD_wData[1] = ATD0DR1; //将结果寄存器中的值存放到数组中 AD_wData[2] = ATD0DR2; //将结果寄存器中的值存放到数组中}#pragma CODE_SEG DEFAULT_ROM
- ATD 配置
- Eclipse 删除ATD
- AT命令之ATD
- 数据结构->栈ATD
- crond atd 定时处理
- MC9S12XEP100 ATD模块 驱动程序
- 飞思卡尔ATD模块
- MC9S12XEP100的ATD模块(ADC12B16CV1)
- Linux定时任务 - atd和crond
- HCS12XEP100 ATD模块多通道采样
- HCS12XEP100 ATD模块单通道多次采样
- HCS12XEP100 ATD模块定时中断采样
- 数据结构->线性表的顺序实现 ATD
- linux中的at命令,启动atd服务
- /usr/sbin/atd 和 /etc/init.d/atd有什么区别
- Linux下执行预定的任务Atd or Crond
- 仅执行一次的工作排程--atd服务
- 通过更新显卡驱动和内核,解决linux启动时在starting atd: [ok]停止的问题
- HTML CSS + DIV实现整体布局
- HTML CSS + DIV实现局部布局
- uboot命令实现2
- U_BOOT_CMD源码 分析
- HTML Table局部布局与浏览器兼容性
- ATD 配置
- 网络技术推广与欺诈
- XE2 运行时 item not found的解决办法
- android的ROOT权限获取
- 好的博文整理
- Java IO类图
- 安卓基础学习之一
- 如何使用内存隔离指令(memory barrier instructions)
- 安卓基础学习之二