Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

I2C Funktion Kategorie: I²C-Bus (von Jenny - 30.06.2010 11:50)
Ich nutze:
C-Control Pro Mega128, Pro-Bot128
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


    Antwort schreiben


Antworten:

Re: I2C Funktion (von Robert - 30.06.2010 15:05)