Ahoj.
Máte někdo zkušenosti s akclerometrem ADXL345 přes I2C?
Pokouším se jednoduchý program, přes I2C získat data a poslat je na UART do PC.
UART mi funguje skvěle, ale I2C komunikace někde zamrzne.
Kontroloval jsem asresy podle datasheetu.
An alternate I2C address of 0x53 (followed by the R/W bit) can be chosen by grounding the ALT ADDRESS pin (Pin 12). This translates to 0xA6 for a write and 0xA7 for a read.
Používám Peter Fleury knihovnu pro TWI/I2C.
Dokázal by mi někdo říct co na tak jednoduché věci dělám špatne?
#define F_CPU 16000000L
#include <avr/io.h>
#include <util/delay.h>
#include "twi_lib.h"
#include "twi_lib.c"
#define DevADXL 0x53 // Alt. Adresa ADXL345
#include "mojelib1.h"
int main(void)
{
i2c_init(); // init I2C interface
USARTInit(51); // UBRR = 51
setb(DDRD,4); // inicializace portu D4
while(1)
{
negb(PORTD,4); // blikam si pro radost
_delay_ms(200);
USARTWriteChar('|');
i2c_start_wait(DevADXL+I2C_WRITE); //I2C_WRITE nebo 0xA6?
i2c_write(0x32);
i2c_rep_start(DevADXL+I2C_READ); // I2C_READ nebo 0xA7?
USARTWriteChar(i2c_readAck()); // jen X souradnice zatim
USARTWriteChar(i2c_readNak());
i2c_stop();
USARTWriteChar('|');
}
}
Použitý modul:
aukro.cz/modul-adxl345-akcelerometr-gyro-xyz-arduino-avr-i4259337342.html?source=mlt