PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sensor BMA150 auslesen



Werner_B
18.08.2011, 11:29
Habe mir den Acceleration Sensor BMA150 gekauft.
Lässt sich gut mit der SPI Schnittstelle auslesen. Möchte nun mit I2C-Bus auslesen.
Hat jemand ein in C geschriebenes Beispiel?

kruemeltee
28.08.2011, 23:12
Das Datenblatt ist doch wirklich ganz ganz einfach für I²C, in etwa so;

Für 1 Byte:


i2c_start(ADRESS+I2C_WRITE);
i2c_write(REGISTER_ADDRESS);
i2c_stop();

i2c_start(ADRESS+I2C_READ);
registerinhalt = i2c_readNak();
i2c_stop();


Für alle 6 am Stück:


i2c_start(ADRESS+I2C_WRITE);
i2c_write(0);
i2c_stop();

i2c_start(ADRESS+I2C_READ);
byte 0 = i2c_readAck();
byte 1 = i2c_readAck();
byte 2 = i2c_readAck();
byte 3 = i2c_readAck();
byte 4 = i2c_readAck();
byte 5 = i2c_readNak();
i2c_stop();

Auf Seite 37 ist eine Grafik, die alles perfekt und easy zeigt.

Werner_B
30.08.2011, 12:01
Danke für die schnelle Info. https://www.roboternetz.de/community/images/icons/icon7.png Werde es damit ausprobieren.
Das Programm soll auf einem PIC16F886 bzw. einem PIC16LF1823 (3.3V) laufen.
Ich habe es mit eigenen Routinen versucht, aber es klappte nicht.
Eigentlich kann es doch nicht schwierig sein, ein kleines Programm für das Auslesen
der Daten x,y und z zu schreiben.

Ich habe noch Anfänger, also, muss man für dein Beispiel
folgensdes einbinden?
//I2C-master-lib von P. Fleury verwenden
#include "i2cmaster.h"

021aet04
30.08.2011, 18:47
Bin mir nicht sicher aber ich glaube die Lib von Peter Fleury ist für AVR (Atmega, Attiny) nicht für PIC. Es könnte aber sein das es eine Version für PIC gibt.

MfG Hannes

kruemeltee
31.08.2011, 03:23
Mein Code bezieht sich auf die Fleury lib, für deinen PIC wirds wohl irgendwas fertiges geben, dementsprechend halt die Namen der stop, read_ack, nak, ... Funktionen anpassen.