Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > Hallo, > > 1.) Was meinst du mit "adresse"? Bei dem I2C-Bus hat jedes Device eine Adresse (die ersten 4 Bit), > dann 3 Bit für die interne Adressierung (das werden dann die Register vermutlich adressiert) und ein > letztes Bit für Read/Write (also ob du lesen oder schreiben willst). Kurz: y=Gerät, x=register, b=Zugriff: > yyyyxxxb = Erstes gesendet Paket nach Start-Kondition. > 2.) "data" sind die Daten (das Byte), die/das ins EEPROM geschrieben wird. > 3.) ">>" ist ein Bitschiebeoperator. Ein Register im diesem EEPROM wird anscheinend über ein Word > (2 Byte) adressiert. Da man das nicht auf einmal schicken kann, wird erst das höherwertige Byte > zuerst geschickt, dann das niederwertige. > Mehr Infos zu >> und << in der Hilfe. > > Ich hoffe, ich konnte helfen. > > P.S.: Du musst unterscheiden zwischen der Adresse auf dem I2C-Bus (erstes geschriebens Byte) und > der Adresse im EEPROM ("address"). > > > Hallo an alle, > > > > ich möchte eine Beschleunigungssensor (BMA150) mit meinem PRO BOT128 verbinden und > > anschließend die Register des Sensore auslesen. > > > > Das ganze soll über I2C laufen. > > > > Nun habe ich den Aufbau, Funktion usw. der I2C SChnittstelle theoretisch verstanden, > > aber die Probleme sind nun bei der Umsetzung, sprich bei der Programmierung. > > > > Dazu habe ich das Handbuch von C-Control durchforstet und bin auf ein Beispiel gestoßen: > > > > I2C Beispiel Seite 159 > > > > >Beispiel: EEPROM 24C64 lesen und schreiben ohne I2C_Status Abfrage > > > > > >main(void) > > >{ > > >>word address; > > >>byte data,EEPROM_data; > > >> > > >>address=0x20; > > >>data=0x42; > > >> > > >>I2C_Init(I2C_100kHz ); > > >>// write data to 24C64 (8k x 8) EEPROM > > >> > > >>I2C_Start(); > > >>I2C_Write(0xA0); // DEVICE ADDRESS : A0 > > >>I2C_Write(address>>8); // HIGH WORD ADDRESS > > >>I2C_Write(address); // LOW WORD ADDRESS > > >>I2C_Write(data); // write Data > > >>I2C_Stop(); > > >> > > >>AbsDelay(5); // delay for EEPROM Write Cycle > > >> > > >>// read data from 24C64 (8k x 8) EEPROM > > >> > > >>I2C_Start(); > > >>I2C_Write(0xA0); // DEVICE ADDRESS : A0 > > >>I2C_Write(address>>8); // HIGH WORD ADDRESS > > >>I2C_Write(address); // LOW WORD ADDRESS > > >>I2C_Start(); // RESTART > > >>I2C_Write(0xA1); // DEVICE ADDRESS : A1 > > >>EEPROM_data=I2C_Read_NACK(); > > >>I2C_Stop(); > > >>Msg_WriteHex(EEPROM_data); > > >} > > > > 1.) Kann ich adresse im Programm gleichsetzten mit der Adresse meines Registers? > > 2.) Entspricht data im Programm, meine Größe des Registers z.B. 2 bit? > > 3.) address>>8 verstehe ich nicht > > > > Ist zeimlich viel geschrieben sorry, hoffe aber Ihr könnt mir nen kleinen Tipp geben. > > Vielen Dank im Voraus. > > > > Gruß Jenny