lesson3.AD模块程序设计收获 1,ATD模块有12个引脚,分别为VRH(高参考电压),VRL(低参考电压)(此系统板上接入5v),(VDDA,VSSA)(ATD模块电源供电)和8位AD通道。AD7即可为模拟量输入7通道也可以被配置为AD转换的外部触发引脚。 2,AD模块的寄存器如下,和许多书上的不一样,其余大致相同,简单翻译如下。 #defineATD0CTL2 #defineATD0CTL2_ACMPIE ATD CompareInterrupt Enable使能 #defineATD0CTL2_ASCIE ATD SequenceComplete Interrupt Enable中断允许 #defineATD0CTL2_ETRIGE External Trigger Mode enable省电模式 #defineATD0CTL2_ETRIGP External TriggerPolarity触发极性选择 #defineATD0CTL2_ETRIGLE External Trigger Level/Edge control触发极性控制 #defineATD0CTL2_ICLKSTP Internal Clock in Stop Mode Bit停止模式时停止内部时钟 #defineATD0CTL2_AFFC ATD FastConversion Complete Flag Clear标志位 3,结果采样时,最好选用ATDODR[0~4]的格式,若用ATD0DR0L[0~4],则会出现一些未知的结果,反正在数码管上始终显示为0,不知何故,影响两天的原因也在于此,还犯了一个愚蠢的错误就是写了函数,但是未调用。 4,10位精度的使用存在一定的问题,转换后的显示结果始终感觉除以256才正确,不知道单片机自带的AD电压的计算公式是否是v=(unsigned int)5.0*(sum/256),若不是望指正。 5,用平均值滤波法进行四次滤波后,效果能好点,但是显示5时总是差上面a段不能点亮,不知原因何在。 6,display函数在进行显示的时候编译器总是提示possible lose of data,也不知为何,自我感觉MC9S12单片机不怎么稳定。 感觉新手不多~~以后只发收获~不发自己总结的例程和流程了。。。除非顶顶多。。
|