打印

关于21334中ad模块的问题

[复制链接]
1746|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
297178587|  楼主 | 2008-7-13 10:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在使用21334的ad模块时遇到了很奇怪的问题,ADC10_1_iCal(0x14d, ADC10_1_CAL_VBG);和ADC10_1_StartADC();不执行。程序代码如下,将程序烧写到片子上之后,程序执行到上面的函数时便停止了,觉得很奇怪。我用的是3v电压(提高电压到5v似乎也不行),改用8位的ad也是同样的问题。检测时是通过点亮P1口的LED。每次都是led全亮后就执行不下去了,如果将ADC10_1_iCal(0x14d, ADC10_1_CAL_VBG);函数去掉,就停顿在只有7个led亮。搞了几天都搞不定,不知道是不是哪里设错了。还是在焊芯片时焊坏了。向各位高手请教。


#include <m8c.h>        // part specific constants and macros
#include "PSoCAPI.h"    // PSoC API definitions for all User Modules

const unsigned char m[][15]={........};

void delay(unsigned int x)
{
unsigned int i,j;
for(i=0;i<=x;i++)
   {
   for(j=0;j<=150;j++);
   }
}

void main()
{
unsigned char i=0,a=0,j=0;
unsigned int b=0;
M8C_EnableGInt;

ADC10_1_Start(3);

PRT1DR=0xff;//    

ADC10_1_iCal(0x14d, ADC10_1_CAL_VBG);

PRT1DR=0xfe;//  

ADC10_1_StartADC();

delay(50);

PRT1DR=0x0f;

while(ADC10_1_fIsDataAvailable==0);
  b=ADC10_1_iGetDataClearFlag();
  j=b/4;
  a=j%6;
 for(a=0;a<6;a++) 
  for(i=0;i<15;i++)
     {
      PRT1DR=m[a];
      delay(150);
     }
     
/*PRT1DR=0x00;
PRT0DR&=~0x80;

PRT0DM2|=0x80;
PRT0DM0&=~0x80;
PRT0DM1|=0x80;
PRT1DM2=0xff;
PRT1DM0=0x00;
PRT1DM1=0xff;
ADC8_1_StopADC();
ADC8_1_Stop();
M8C_Sleep;*/    // Insert your main routine code here.
  
while(1)
   {
   ;
   }    // Insert your main routine code here.
}
沙发
PSoC_Rock| | 2008-7-15 10:58 | 只看该作者

ADC使用那一个I/O口?

点灯有没有影响ADC使用的那一个I/O口的状态?

使用特权

评论回复
板凳
yongzhe033| | 2008-7-16 20:37 | 只看该作者

如果其他模块使用正常,就不会是芯片损坏问题

使用特权

评论回复
地板
297178587|  楼主 | 2008-7-21 17:16 | 只看该作者

问题解决

是ADC10模块设置的问题,我在编程前没有设置好ADC10d的参数。21334上的ADC10的转换原理是通过电容充电计时得到的,它的各项参数之间存在一定关联,不能随便设置。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

25

帖子

0

粉丝