wjd40 发表于 2012-3-5 11:38:31

刚下载程序后正常读取,复位了就不行(SPI读取ADXL345)

点下载程序后,可以正常收到ADXL345的数据,关掉电源再开就都是0了。屡试不爽,这可能是什么原因?
手动复位偶尔也可以。


http://cache.amobbs.com/bbs_upload782111/files_53/ourdev_724218DDDN6Z.png
(原文件名:QQ截图20120305113740.png)

http://cache.amobbs.com/bbs_upload782111/files_53/ourdev_724219CK35GF.png
(原文件名:QQ截图20120305113756.png)

wjd40 发表于 2012-3-5 11:41:40

void ACC_SPI_INIT(void)
{
        DDRB=0B10110001;
        //spi初始化
        SPCR = (1<<SPE)|(1<<MSTR)|(1<<CPOL)|(1<<CPHA)|(1<<SPR0)|(1<<SPR1)|(1<<SPI2X);
        SPSR = 0x00;
}

///////////////ACCELEROMETER //////////////
void ADXL345_INIT(void){
       
ACC_SPI_INIT();

delay10us(); delay10us(); delay10us(); delay10us();   
writeRegister(0x31,0x04);
delay10us(); delay10us();   delay10us(); delay10us();   
writeRegister(0x2d,0x08);
//writeRegister(0x2e,0x80);

}

//读取X轴加速度
void ADXL345_read_x(unsigned int *x)
{
unsigned char low, high;

low = readRegister(0x32);
high = readRegister(0x33);
* x = (((unsigned int)high)<<8)|low;
}

        if(T10ms>9)
        {
                T10ms=0;
               
                uchar SendArr;
                volatile int temp;
               
                ADXL345_read_x(&temp);
                SendArr=temp;
                SendArr=temp/255;       
                ADXL345_read_y(&temp);
                SendArr=temp;
                SendArr=temp/255;               
               
                put_c(0xaa);
                put_c(0x01);
                put_c(SendArr);
                put_c(SendArr);
                put_c(SendArr);
                put_c(SendArr);       
                put_c(0xff);
               

        }

wjd40 发表于 2012-3-5 11:50:42

./emotion/em004.gif貌似搞定了,延时后再初始化一下ADXL345就能用

但是不知道为什么两次初始化都要有,缺一不可

http://cache.amobbs.com/bbs_upload782111/files_53/ourdev_724227DHDVE8.png
两次都要有才行 (原文件名:QQ截图20120305115618.png)

htjgdw 发表于 2012-3-5 12:40:53

使用I2C读写ADXL345的帮顶。

chengying 发表于 2012-11-9 08:46:08

mark




rossih 发表于 2013-2-10 12:38:03

我用spi遇到同样的问题!链接http://www.amobbs.com/thread-5519262-1-1.html
页: [1]
查看完整版本: 刚下载程序后正常读取,复位了就不行(SPI读取ADXL345)