搜索
bottom↓
回复: 5

求助ADC相关问题....死活调不通....

[复制链接]

出0入0汤圆

发表于 2013-7-23 19:00:48 | 显示全部楼层 |阅读模式
本帖最后由 424778940 于 2013-7-23 19:08 编辑

如题...第三贴了...
我真心认真读了一遍手册,也看了很多人的代码,而且adc也就那么几个寄存器,想搞错都难啊...(当然,也总觉得这问题一定是我什么地方搞错了...)
我直接把别人的代码完全搬进去,依旧不行,难道是芯片有问题么...型号是mega128A和mega1280,均做过测试,结果一样
现在的情况是,用自带内部通道(1.23v)测试没问题,内部gnd也没问题,数据都正常
可是只要使用adc0-adc7单通道来转换,就无法得到正确结果,无论我把通道接地还是接vcc,都是跟悬空时候一样的一个相对稳定的值

代码如下
  1. /*
  2. * lib_adc.cpp
  3. *
  4. * Created: 2013/7/17 16:43:14
  5. *  Author: Adam
  6. */


  7. #include <avr/io.h>
  8. #include <avr/interrupt.h>

  9. #include "d:/works/avr/bzh_avr_lib/device/usart/lib_usart.h"
  10. #include "d:/works/avr/bzh_avr_lib/system/lib_delay.h"

  11. //vin = adc * vref /1024

  12. volatile unsigned char adc_cache_h = 0x00,adc_cache_l = 0x00;
  13. volatile unsigned int adc_vin = 0x0000;

  14. ISR(ADC_vect,ISR_BLOCK)
  15. {
  16.         adc_cache_l = ADCL;
  17.         adc_cache_h = ADCH;
  18.         usart_0_send_char(0xff);//固定字节,用于确定开头位置
  19.         usart_0_send_char(adc_cache_l);
  20.         usart_0_send_char(adc_cache_h);
  21.         //adc_vin |= ( (adc_cache_h<<8) | (adc_cache_l<<8) );
  22. }

  23. int main(void)
  24. {
  25.         usart_0_init();
  26.         
  27.         //ADC PORT DDR INIT
  28.         DDRA = 0x00;
  29.         PORTA = 0x00;
  30.         
  31.         //ADC REG INIT
  32.         ADCSRA = 0x00;
  33.         ADMUX = 0x00;
  34.         
  35.         ADCSRA |= ( (1<<ADIE) | (1<<ADEN) | (1<<ADPS0) | (1<<ADPS1) | (1<<ADPS2) );
  36.         ADMUX |= (1<<REFS0);
  37.         //ADMUX |= ( (1<<REFS0) | (1<<MUX0) );
  38.         //ADMUX |= ( (1<<REFS0) | (1<<ADLAR) );
  39.         
  40.         sei();
  41.         
  42.         while (1)
  43.         {
  44.                 //usart_0_send_char(0xf0);
  45.                 delay_reduce(80000);
  46.                 ADCSRA |= (1<<ADSC);
  47.         }
  48. }
复制代码

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2013-7-24 14:38:14 | 显示全部楼层
话说...马老师呢?

出0入0汤圆

 楼主| 发表于 2013-7-25 12:13:20 | 显示全部楼层
= =....人都那里去了.,...

出0入0汤圆

发表于 2013-7-25 19:54:55 | 显示全部楼层
现在放假,每天都会来看的。已经几天了,没有人给你帮助。这个问题应该属于基本的基础类错误,我也不愿意作更多的解释。按我的性格,希望你从最基本的开始,一步一步的、扎扎实实的进步。
我认为我的教程中的例子应该可以解决你的这个问题。你买本吧,认真研读肯定有收获的,如果你准备作这个行当5年。

出0入0汤圆

 楼主| 发表于 2013-7-26 12:38:13 | 显示全部楼层
machao 发表于 2013-7-25 19:54
现在放假,每天都会来看的。已经几天了,没有人给你帮助。这个问题应该属于基本的基础类错误,我也不愿意作 ...

谢谢马老师,不过问题已经解决了,确实是个低级错误= =...
程序和硬件都没有任何问题,只是我有根线接错了= =...
avr的adc相关寄存器都叫ADxxxx,于是我把porta的AD0-AD7当成adc了,换到portf就好了

出0入0汤圆

发表于 2013-7-26 16:49:49 | 显示全部楼层
现在也在搞mega128,
mega128和mega16还是有些地方不一样的。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 07:36

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表