Re: Chipkarte an C-Control II Station Kategorie: I²C-Bus (von Joachim Rohmann - 29.11.2004 22:17) | ||
Als Antwort auf Re: Chipkarte an C-Control II Station von André H. - 27.11.2004 17:04 | ||
| ||
> Hallo Joachim, > > Zuerst: Mache bitte einmal dringenst ein komplettes Update ! > Du benutzt noch das Original-OS. Mit diesem zu arbeiten macht keinerlei Sinn. > Auch die Module müssen upgedatet werden. > Die Module station_lcd.c2 und station_io.c2 sind mehr als veraltet. > Ich werde diese zum Jahreswechsel von meiner Site entfernen. > > Installiere daher bitte das aktuelle Service Pack und lade OSOPT V3.0 in Deine Station. > > Als nächstes: Wenn Du Quellcode postest, benutze bitte, wie krassos bereits > geschrieben hat, die Code-Tags. Ansonsten ist der Code schlechter zu lesen und kann > auch falsch dargestellt werden. (Meistens wenn Grö�er- und Kleinerzeichen vorkommen.) > > > Bist Du sicher, da� Du eine 16kBit-Chipkarte hast und keine 16kByte (128kBit) ? > Dann müsstest Du mit zwei Byte Adressiern. > Ist es eine gewöhnliche Speicher-Chipkarte oder eine mit Pin ? > > EEProms (& SpeicherChipkarten) vom Typ 24C04 bis 24C16 sind anders zu adressieren. > Die unteren oberen Bits des Datenzeigerswerdenmit der I²C-Bus-Adresse verknüpft. > Beim 24C16 (16kBit) werden das Hi-Word der Adresse in den Bits 1, 2 und 3 > der Bus-Adresse angegeben. > Aber das hätte hier jetzt keinen Einflu�, da Du nur die ersten Bytes beschreiben willst. > > Du hast leider nicht geschrieben, was Dein Testprogramm ausgibt. > Also lasse einmal dieses Programm laufen und poste bitte die Ausgaben, > sonst kann man nichts analysieren. > > thread main > { > lcdext.init(); > stports.init(); > > lcdext.print("ACK1: "); > lcdext.ziff(i2c.start(160) and 1); > i2c.write(0); > i2c.write('A'); > i2c.write('B'); > i2c.write('C'); > i2c.write('D'); > i2c.stop(); > > sleep 50; > > > lcdext.print(" ACK2: "); > lcdext.ziff(i2c.start(160) and 1); > i2c.write(0); > lcdext.ziff(i2c.start(161) and 1); > lcdext.zahl4(i2c.read()); > lcdext.zahl4(i2c.read()); > lcdext.zahl4(i2c.read()); > lcdext.zahl4(i2c.readlast()); > i2c.stop(); > > quit 1; > } > > Im Idealfall müsste in der ersten Zeile dies: > ACK1: 1 ACK2: 11 > und ind er zweiten Zeile das > 64 65 66 67 > stehen. > > Wenn die Chipkarte sich überhauptnicht ansprechen lässt, müsste in der ersten Zeile > auf jeden Fall dies stehen: > ACK1: 0 ACK2: 00 > Ist dies der Fall, überprüfe bitte den Anschlu�, ob Du iregendetwas vertauscht hast. > > MfG André H. > Hallo André, zunächst einmal vielen Dank für Deine Hilfe. Ich habe Deine Anleitungen (OSOPT V3.0 und SP2-11 in die Station geladen) befolgt und bin mit Deinem Programm zu folgendem Ergebnis gekommen. In der ersten Zeile steht: ACK1: 1 ACK2: 11 wie erhofft, jedoch die zweite Zeile ist gänzlich leer. Eine �berprüfung des Chipkarten-Inhaltes via Chipdrive am Laptop bestätigt, dass die Station einwandfrei geschrieben hat. Es handelt sich hier in der Tat um eine 16 KBit Chipkarte. Auffällig ist, dass nach jedem Reset die Relais und die Led's undefinierbare Zustände einnehmen. mfg Joachim Rohmann | ||
Antwort schreiben Antworten: |