با سلام خدمت مهندسان عزیز
در رابطه با راه اندازی سنسور ADXL345 بوسیله AVR به مشکل خوردم.
قصد دارم بوسیله TWI با این سنسور ارتباط برقرار کنم اما هیچ جوابی نمی گیرم. کدنویسی در کدویژن است.
این هم کدها:
// I2C Bus functions
#asm
.equ __i2c_port=0x18 ;PORTB
.equ __sda_bit=3
.equ __scl_bit=2
#endasm
#include <alcd.h>
#include <i2c.h>
#include <twi.h>
#include <mega16a.h>
#include <delay.h>
#include <stdio.h>
// untuk HMC5843
#define adxl_w 0x3A
#define adxl_r 0x3B
#define y0 0x34
#define y1 0x35
#define z0 0x36
#define z1 0x37
unsigned char read_adxl(unsigned char reg_adr)
{
unsigned char data;
i2c_start();
i2c_write(adxl_w); // write to this I2C address, R/*W cleared
i2c_write(reg_adr); //Read from a given address
i2c_start();
i2c_write(adxl_r); // read from this I2C address, R/*W Set
data=i2c_read(0);
i2c_stop();
return data;
}
void main(void)
{
// Declare your local variables here
int y, z;
char buf[17];
lcd_init(8);
// Global enable interrupts
#asm("sei"
i2c_init();
while (1)
{
y = (read_adxl(y0)<<8) | read_adxl(y1);
z = (read_adxl(z0)<<8) | read_adxl(z1);
lcd_gotoxy(0,0);
sprintf(buf, "X=%0d, Y=%0d ", y, z );
lcd_puts(buf);
lcd_puts(buf);
delay_ms(1000);
}
}
نمی دونم مشکل از کجاس. شاید علتش اینه که مقاومت پول پ نذاشتم.
در ضمن avr رو هم با 3.3 ولت تغذیه کردم.
لطفا کمک کنید
در رابطه با راه اندازی سنسور ADXL345 بوسیله AVR به مشکل خوردم.
قصد دارم بوسیله TWI با این سنسور ارتباط برقرار کنم اما هیچ جوابی نمی گیرم. کدنویسی در کدویژن است.
این هم کدها:
// I2C Bus functions
#asm
.equ __i2c_port=0x18 ;PORTB
.equ __sda_bit=3
.equ __scl_bit=2
#endasm
#include <alcd.h>
#include <i2c.h>
#include <twi.h>
#include <mega16a.h>
#include <delay.h>
#include <stdio.h>
// untuk HMC5843
#define adxl_w 0x3A
#define adxl_r 0x3B
#define y0 0x34
#define y1 0x35
#define z0 0x36
#define z1 0x37
unsigned char read_adxl(unsigned char reg_adr)
{
unsigned char data;
i2c_start();
i2c_write(adxl_w); // write to this I2C address, R/*W cleared
i2c_write(reg_adr); //Read from a given address
i2c_start();
i2c_write(adxl_r); // read from this I2C address, R/*W Set
data=i2c_read(0);
i2c_stop();
return data;
}
void main(void)
{
// Declare your local variables here
int y, z;
char buf[17];
lcd_init(8);
// Global enable interrupts
#asm("sei"

i2c_init();
while (1)
{
y = (read_adxl(y0)<<8) | read_adxl(y1);
z = (read_adxl(z0)<<8) | read_adxl(z1);
lcd_gotoxy(0,0);
sprintf(buf, "X=%0d, Y=%0d ", y, z );
lcd_puts(buf);
lcd_puts(buf);
delay_ms(1000);
}
}
نمی دونم مشکل از کجاس. شاید علتش اینه که مقاومت پول پ نذاشتم.
در ضمن avr رو هم با 3.3 ولت تغذیه کردم.
لطفا کمک کنید
دیدگاه