Operácie

Zbernica i2c: nástroje II.

Zo stránky SensorWiki

Verzia z 20:42, 6. máj 2017, ktorú vytvoril Balogh (diskusia | príspevky) (Vytvorená stránka „Niekoľko užitočných programov k zbernici i2c. Nech poslúžia na štúdium a tvorbu vlastných pokusov. Príklady sú doplnkom cvičenia s obvodom AT24C02 - pamä...“)
(rozdiel) ← Staršia verzia | Aktuálna úprava (rozdiel) | Novšia verzia → (rozdiel)

Niekoľko užitočných programov k zbernici i2c. Nech poslúžia na štúdium a tvorbu vlastných pokusov.

Príklady sú doplnkom cvičenia s obvodom AT24C02 - pamäť EEPROM.


Základný zápis a čítanie podľa návodu

#include <Wire.h>
#define deviceAddress B01010000
void setup() 
{

  Serial.begin(9600);
    Wire.begin();

/* Zapiseme do EEPROM niekolko znakov */

  for (int i = 0; i < 10; i++) 
  {
    eeprom_i2c_write(deviceAddress, i, 'A'+i);
    delay(100);   /* lebo zapis chvilu trva a nekontrolujeme ACK */
  }

  Serial.println("Writen to memory!");
}

void loop() 
{
  byte myData;
  for (int memAddress = 0; memAddress < 20; memAddress++) 
  {
    myData = eeprom_i2c_read(deviceAddress, memAddress);

    Serial.print(memAddress);
    Serial.print(" - ");
    Serial.print((char)myData);
    Serial.print("\n");
    delay(100);
  }
    delay(2000);

}


void eeprom_i2c_write(byte address, byte from_addr, byte data) {
  Wire.beginTransmission(address);
  Wire.write(from_addr);
  Wire.write(data);
  Wire.endTransmission();
}

byte eeprom_i2c_read(int address, int from_addr) {

  byte result=0xFF;   // ak nic neprijmeme, tak vrati FF
  Wire.beginTransmission(address);
  Wire.write(from_addr);
  Wire.endTransmission();

  Wire.requestFrom(address, 1);
  if(Wire.available())
    result = Wire.read();
  Wire.endTransmission();
 
  return result;
}