www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Chipcard


Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Harald G. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Florian Pfanner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

werte mal die Rückgaben von den Funktionen i2cstart() und i2cwrite()
aus. Diese geben 1 zurück, wenn kein Ack empfangen wurde.

Gruß, Florian

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Divison (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Treiberstufen beim I²C-Bus sind open Colector Ausgänge, können also
nur Low treiben. Daher geht ohne Pull Up absolut nichts.

Steffen

Autor: Harald G. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/...

Grüße Mike

Autor: Harald G. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Harald G. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mike

das Datenblatt habe ich gefunden.

Schau mal  unter

http://www.atmel.com/dyn/resources/prod_documents/...

mfg
Harald

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Harald G. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Harald G. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mike

ich habe mir mal die Kontakteinheiten bei Conrad bestellt.S 1105
Aber die Preise kennen wir ja.

Schön das es jetzt läuft.

Tschüss
Harald

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.