zelos 发表于 2008-3-5 00:41:46

ADC的TIMER1自动触发功能

马老师,各位,好!
    本人刚使用AVR单片机,现在使用型号为Avr mega 48 正在使用ADC功能做温度检测.对8路输入进行测量.对每路ADC结果进行三次采样,再提取数据.我选择了TIMER1自动触发.因现在PCB未到位,关于这一点有一事不明.
   当TIMER1触发ADC后,在TIMER1中断内是否能够读取到上一次的ADC值.
也就是说TIMER1触发ADC后,进行一次新的AD转换.是否不管上一次ADC的转换值是否被读取.

zelos 发表于 2008-3-5 01:07:31

刚才拜读了马老师的<<基本接口单元的应用设计>>.其中提到ADC部分提到 "当ADC设置为自动触发方式时,触发信号的上升沿将启动一次ADC转换。转换完成的结果将一直保持到下一次触发信号的上升沿出现,然后开始新的一次ADC转换。这就保证了使ADC每隔一定的时间间隔进行一次转换。在这种方式下,ADC需要2个ADC时钟周期的采样保持时间。"

         "转换完成的结果将一直保持到下一次触发信号的上升没出现,然后开始新的一次ADC转换."
   关于这句话请教一下. 什么时候读取ADC的转换结果.
      1.在主循环中不断查询ADSC位
      2.如果是TIMER1触发,是否可以在中断内读取到上一次AD转换结果????
      3.TIMER1小于ADC转换时间时,是否不能完成一次ADC转换???

   谢谢!

machao 发表于 2008-3-5 18:13:57

1.TIMER1的中断间隔必须大于一次ADC的转换时间,至少需要包括一次ADC的转换时间+ADC转换完成中断执行时间+对本次ADC数据处理的时间.
2.使用ADC转换完成中断,在中断中读出转换值.
3.根据实际情况选择如何处理本次ADC的值,可在ADC转换完成中断中做简单处理,也可在主程序中处理.

zelos 发表于 2008-3-5 21:03:15

先谢谢马老师,有点明白了,也就是说我可以
    先设置好ADC中断,TIMER1触发ADC中断,TIMER1定时大于ADC转换和ADC中断执行时间总和,每次转换值在AD中断中读取.
页: [1]
查看完整版本: ADC的TIMER1自动触发功能