天嵌 ARM开发社区

 找回密码
 注册
查看: 2164|回复: 5

求助 弄了一天了 也不对 为啥一直在中断出不来

[复制链接]
sina围脖 发表于 2013-9-5 12:07:12 | 显示全部楼层 |阅读模式
/*****************************************
        IIC
****************************************/
#include"2440addr.h"
#include"option.h"
#define U32        unsigned int
#define PCLK         50000000
//unsigned char iic_buffer[8];         //IIC数据通讯缓存数组            
unsigned char flag;
unsigned char devAddr=0xa0;      //从设备AT24C02A的地址

void Uart0_Init(unsigned int baudrate)                //初始化uart0  
{
        rGPHCON&=~((3<<4)|(3<<6));
        rGPHCON|=(2<<4)|(2<<6);
        rGPHUP=0x00;
        rULCON0=0x03;
        rUCON0=0x05;
        rUBRDIV0=(int)(PCLK/baudrate/16)-1;
        rURXH0=0;
}
void Iic_Isr()
{
        rSRCPND|=(1<<27);
        rINTPND|=(1<<27);
        flag=0;
}
void delay(unsigned int x)
{
        unsigned  int y;
        for(y=0;y<x;y++);
}
void Wr24c02a(unsigned char WordAddr,unsigned char date)
{
        int i;
        flag=1;
        rIICDS=devAddr;
        rIICCON&=~0x10;
        rIICSTAT=0xf0;
        while(flag==1)
                {
                        delay(100);
                }
       
       
       
        flag=1;
        rIICDS=WordAddr;
        rIICCON&=~0x10;
        while(flag==1)
        {
                delay(100);
       
        }
       
        flag=1;
        rIICDS=date;
        rIICSTAT&=~0x10;
        while(flag==1)
        {
                delay(100);
        }
       
        rIICSTAT=0xd0;
        rIICCON=0xe0;
        delay(100);
       
       
}
char Rd2402a(unsigned char WordAddr)
{
        unsigned char x;
        flag=1;
        rIICDS=devAddr;
        rIICCON&=~0x10;
        rIICSTAT=0xf0;
        while(flag==1)
        {
                delay(100);
       
        }
       
        flag=1;
        rIICDS=WordAddr;
        rIICCON&=~0x10;
        while(flag==1)
        {
                delay(100);
       
        }
       
        flag=1;
        rIICDS=devAddr;
        rIICCON&=~0x10;
        rIICSTAT=0xb0;
        while(flag==1)
        {
                delay(100);
       
        }
       
        flag=1;
        x=rIICDS;
        while(flag==1)
        {
                delay(100);
        }
       
        return  x;
       
}


void Main()
{

                char i=0;
               
                unsigned char b;
                Uart0_Init(115200);
                pISR_IIC=(unsigned int)Iic_Isr;
                rGPECON=0xaa000000;
                rINTMSK|=(1<<27);
               
                rIICCON=0xe0;
                rIICSTAT=0x10;
               
               
                Wr24c02a(0x10,1);
               
                               
                        while(1)
                        {
                                rUTXH0=Rd2402a(0x10);
                                while(!(rUTRSTAT0&0x02));
                               
                        }       
                       

}
       
TQ-ZQL 发表于 2013-9-5 14:12:29 | 显示全部楼层
有没有将中断处理函数写到中断向量表中?
 楼主| sina围脖 发表于 2013-9-5 15:27:15 | 显示全部楼层
TQ-ZQL 发表于 2013-9-5 14:12
有没有将中断处理函数写到中断向量表中?

恩呢写了就是一直在中断  难道是在一只发送 才导致中断出不来
TQ-ZQL 发表于 2013-9-5 15:40:49 | 显示全部楼层
中断之后有没有清除相关中断的标志。或者清了之后过一断时间再读出来看下
 楼主| sina围脖 发表于 2013-9-5 16:05:07 | 显示全部楼层
TQ-ZQL 发表于 2013-9-5 15:40
中断之后有没有清除相关中断的标志。或者清了之后过一断时间再读出来看下

rSRCPND|=(1<<27);
        rINTPND|=(1<<27);  这不是清除了么
TQ-ZQL 发表于 2013-9-6 09:04:35 | 显示全部楼层
我是说清了之后再一段时间再读出来看下。有没有清成功,试下只写一个字节看下,是不是也是一直在响应中断。我们应该有读写24c02的例子的,可以看下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-19 09:10 , Processed in 1.031250 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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