Arduino Chipkarten lesen und schreiben

dieses Beispielprogramm wurde mir von Alexander D. zur Verfügung gestellt.

Vielen Dank dafür!!

Hallo Herr Horter,

anbei sende ich Ihnen ein Beispielprogramm für Arduino, um mit Ihrem Chipkartenleser I2C-Chipkarten oder andere I2C-EEPROM-Karten auszulesen und zu beschreiben.

Zu dem Quelltext gibt es eigentlich nicht viel zu erklären. Er wurde mit der aktuellen Arduino IDE 1.5.4 getestet.

Viele Grüße,
Alexander D.

 

 

#include <Wire.h>

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) {
  Wire.beginTransmission(address);
  Wire.write(from_addr);
  Wire.endTransmission();

  Wire.requestFrom(address, 1);
  if(Wire.available())
    return Wire.read();
  else
    return 0xFF;
}

void setup() {
  Wire.begin();
  Serial.begin(115200);

//  for(int i = 0; i < 256; i++) {
//    eeprom_i2c_write(B01010000, i, 0xFF);
//    delay(10);
//  }
//
//  Serial.println("Writen to memory!");
}

void loop() {
  for(int i = 0; i < 256; i++) {
    byte r = eeprom_i2c_read(B01010000, i);
//    Serial.print(i);
//    Serial.print(" - ");
//    Serial.print(r, HEX);
//    Serial.print(" - ");
//    Serial.write(r);
//    Serial.print("\n");
    
    Serial.write(r);
    delay(10);
  }
  delay(30000);
}

 

Speichere in deinen Favoriten diesen permalink.

2 Kommentare

  1. Das Programm funktioniert bei mir nicht. Was mache ich falsch? Habe alles richtig verbunden. Er liefert nur den Wert 255. Bei allen Speicherplätzen.

    • Hallo Moritz,
      das Programm hat ein Kunde geschrieben und im Blog veröffentlicht.
      Wie viele Bytes schreibst du auf einen Rutsch?
      Bei den EEproms muss man eine Wartezeit zwischen dem Schreiben einhalten damit die Daten weggebrannt werden können. Auch mal Blöcke mit 8 Bytes testen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert