Chipcard

Gast #71051
Lesenswert?

Hallo!

Ich bin dabei ein Zutrittssystem für ein Simulationsprojekt zu bauen.

Ziel ist es im Moment eine Chipcard anzusteuern (2k Chipcard von
Reichelt) mittels I2C.

Programmiersprache ist CodeVision.
Device ist ein Mega8

Folgender Code soll 0x47 an Adresse 0b00000010 schreiben.
0b10100000 ist die Adresse des EEPROMS.
  i2c_start();
  i2c_write(0b10100000);
  i2c_write(0b00000010);
  i2c_write(0x47);
  i2c_stop();


Folgender Code soll den geschriebenen Wert wieder auslesen:
  unsigned char data;
  i2c_start();
  i2c_write(0b10100000);
  i2c_write(0b00000010);
  i2c_start();
  i2c_write(0b10100000 | 1);
  data=i2c_read(0);
  i2c_stop();

in data steht leider immer 0 drin.

Kann man irgendwie feststellen, ob der schreibvorgang erfolgreich war.
Bzw. wo könnte mein Fehler liegen?

Danke vielmals fürs durchlesen und evtl. antworten!

Miky
Gast #71052
Lesenswert?

Hallo Mike

soweit ich das kenne mußt du die Adresse der Speicherstelle in
2 Bytes (High-Adr und  Low-Adr) zur Karte schicken.

Mit einem Byt kannst du ja nur bis 255 Adressieren.

mfg
Harald
Gast #71054
Lesenswert?

Hallo!

Danke für eure Antworten.

Ich werd beides mal ausprobieren. Vorher jedoch hab ich wohl noch ein
ganz anderes Problem:

Ich hab die Karte an PortC 4 und 5 hängen (die eigentlich auch für das
Hardware I2C gedacht sind). Mit dem Oszi kann ich hier leider keine
Aktivität messen. AVCC und AGND hab ich angeschlossen ...

Leider hab ich keine Ahnung, was ich machen soll, damit sich da was tut
...

Mike
Gast #71055
Lesenswert?

Sodele, jetzt bin ich schon weiter. Ich habe noch 2 Pullup Widerstände
(10k) hingehängt (wusste zwar, dass die da reingehören, aber nicht,
dass sie unbedingt notwendig sind ...).

Jetzt kann ich mit dem Oszi wenigstens Aktivität nachmessen.

Auch auf meinem Diplay kommen plötzlich 255 raus als ausgelesenen
Daten. Das stimmt soweit ja auch (leeres EEPROM ist auf 0xFF gesetzt).

Mit der Adressierung hab ich mich nochmals schlau gemacht. Es handelt
sich um ein 2kByte EEPROM, also 16kBit. Ich muss also midestens 2048
Byte adressieren können. Jetzt werden die drei Adressbits
(normalerweise dazu da den Chip zu adressieren) für die
Datenadressierung genutzt. Man kann also an ein I2C Bussystem nur einen
solchen EEPROM anschließen. Dafür hat man 3 weitere Bits zu Adressieren
frei, also 2^11 = 2048. Stimmt also ...

Der Schreibvorgang funktioniert leider immer noch nicht. Ich werd
morgen mal die Funktionen auswerten - dann mal sehen, warum das nicht
geht ...

Kann mir evtl. jmd erklären, warum sich ohne Pullups da vorher NULL
getan hat??

Mike
Gast #71056
Lesenswert?

Hallo,

wie hast du denn die Karte genau angeschlossen?

Die hat ja 8 Kontakte.

Und was hast du denn da, wo du dir Karte reinsteckst? Wo bekommt man
denn sowas wie ne Kartenhalterung mit Kontaktabnehmer her?

Denke sowas in der art musst du ja da haben.

Liebe Grüsse

Division
Gast #71057
Lesenswert?

Hallo!

Danke für die Antwort!

Ich denke, dass ich die richtigen Kontakte erwischt habe - werd aber
nochmal genauer schauen.

Die Haltevorrichtung habe ich aus einem alten Chipkartenlaufwerk für
PCs ausgebaut. Aber ich glaube ELV hat die Teile ... 68-160-92
Bestellnummer

Mike
Gast #71059
Lesenswert?

Hallo Mike

wie heißt denn deine EEProm-Karte ?

Die Karten die ich bisher benutzt habe brauchten immer 2 Adr.-byte
wenn die Speicherkapazität über 256 Byte lag.

Welche Speicherkapazität hat denn deine Karte genau ?

2 KBit oder
2 KByte ??

mfg
Harald G.
Gast #71060
Lesenswert?

Hallo Harald,

meine EEPROM Karte stammt von Reichelt und hat die Bestellnummer:
CHIPKARTE 2KB

Sie hat 2kByte (=16kBit) Speicherplatz. - daher reichen 11 Bit aus (wie
im oberen Beitrag beschrieben). Diese Info hab ich dem Datenblatt des
AT24C16/24LC16B entnommen, da dieser für die Karte verwendet wird (die
16kBit Version).

Datenblatt:
http://www.atmel.com/dyn/resources/prod_documents/doc0180.pdf

Grüße Mike
Gast #71061
Lesenswert?

Hallo Mike

Richtig den Ic mit seinen 8 Beinchen  kannst du so Adrssieren.

Du hast aber eine Chipkarte die hat 6 oder 8 Kontakte.
die  Anschlüsse A0 bis A2 gibt es da nicht.

Folgende Anschlüsse musst du nutzen:
(Karte liegt vor dir und die Kontakte sind links)

        Links oben 1.  VCC  daneben  GND
                   2.  frei    "     frei
                   3.  SCL     "     SDA
                   4.  frei    "     Frei

Die Anschlüsse die ich mit frei bezeichnet habe heißen VPP,RST
RPU aber die braucht du bei I2C nicht.

Such mal nach dem Datenblatt für die Chipkarte.

mfg
Harald
Gast #71063
Lesenswert?

Hallo Harald,

super, dass du das Datenblatt gefunden hast. Leider sieht die
Ansteuerung hier der Ansteuerung des bedrahteten EEPROM sehr ähnlich -
ich konnte meinen Fehler bisher leider nicht finden ...

Ich werde, sobald ich zu Hause bin nochmals auf dem Lieferschein
sicherstellen, dass ich auch wirklich die 2kByte Karte bekommen habe.

Wie würde eine Ansteuerung mit I2C für eine 2 Kbyte Karte deiner
Meinung anch jetzt aussehen?

Grüße
Mike
Gast #71064
Lesenswert?

Hallo Mike

Mit der Adressierung der EEpromkarte bist du laut Datenblatt schon
auf dem richtigen Weg. Die 2 Adressbytes für diesen Typ kannst du
vergessen, ist nur bei den größeren EEproms nötig.

Kannst du feststellen, wenn du die Adresse Ax zum EEprom sendest
ob mit dem 9.Takt ein "Ack" zurück kommt?

Wenn ich nicht wusste welche I2C-Adresse der IC hat ,
habe ich fortlaufend START,ADRESSE,STOP gesendet und gleic nach der
Adresse das ACK abgefragt.Unter irgend einer Adresse hat sich der IC
dann schon  gemeldet.

Was verwendest du denn für die Karte für eine Kontakteinheit ?

mfg
Harald
Gast #71065
Lesenswert?

Hallo Harald,

ich kann 'Entwarnung' geben. Ich hab das Teil gerade angeschaltet und
es hat einwandfrei funktioniert. Ich vermute mal ein lockeres Kabel (da
ich alle auf einem Steckbrett aufgebaut habe).

Ich habe eine Kontaktiereinrichtung aus einem alten Chipkartenlaufwerk
für PCs ausgebaut (ja, ich wusste auch nicht, dass es sowas gibt). Wenn
ich mehrere brauchen sollte, werde ich welche bei ELV bestellen. Die
haben die im Angebot!

Danke für deine Hilfe!

Grüße MIke

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren