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