Gast
#2894386
Hallo zusammen,
um werte aus einem 3-Achen Beschleunigungs-Sensor Auszulesen,möchte ich
über den i2C (twi) bus auf die Register 0x02-0x07 des Sensors zugreifen.
Der Slave hört auf den Namen 0x70
ich verwende folgenden code:
#define F_CPU 1200000
#include <avr/io.h>
#include <util/twi.h>
#define SCL PC5
#define SDA PC4
#include "lcd-routines.h"
int main(void)
{
int wert = 0x02;
lcd_init();
lcd_string("start");
// Pull-Up Widerstände von SCL und SDA setzen
DDRC &= ~((1<<SCL) | (1<<SDA));
PORTC |= (1<<SCL) | (1<<SDA);
// benötigten Wert zur Datenratenerzeugung in das TWBR schreiben
TWBR = 10;
TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN) | (1<<TWEA);
while (!(TWCR & (1<<TWINT)));
TWDR = (0x70<<1) | TW_WRITE;
TWCR = (1<<TWINT) | (1<<TWEN);
while (!(TWCR & (1<<TWINT)));
TWCR = (1<<TWINT) | (1<<TWEN);
wert= TWDR;
TWCR = (1<<TWINT) | (1<<TWSTO) | (1<<TWEN);
lcd_setcursor(0,2);
lcd_string("duch und fertig");
return 0;
}
über ein LCD Display soll er mir sagen das er angefangen hat und das er
durch gelaufen ist.
hat jemand von euch eine Ahnung was ich falsch gemacht habe?
grüße
Sebastian