PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PC->i2c Adapter Frage



Patrick Dadzio
04.11.2005, 12:53
Hallo,

als totaler Anfänger im Bereich Hardwareentwicklung, habe ich mir zum Einstieg ersteinmal den PC->I2C Bausatz sowie die Relaisplatine und den Temperatursensor mit I2C Interface gekauft. Nachdem ich alles soweit zusammengelötet habe, ging es ans erste Anschließen aber leider tat sich nach dem Start des PC->I2C Beispielprogramms rein gar nichts. Genauer gesagt bleibt es hier hängen:

Sub i2c_stop()
set_sda (0)
set_scl (1)
stopa:
If get_scl() = 0 Then GoTo stopa
set_sda (1)
End Sub

Soweit die Situation. Da das Programm wahrscheinlich oft genug getestet wurde, nehme ich an, dass beim Zusammenbau etwas schief gelaufen ist. Hier jetzt meine Fragen, bevor ich mich an die Fehlersuche mache:
- Sollte das Programm mit angeschlossenem Adapter aber ohne irgendein anderes Gerät am I2C Bus normal funktionieren?
- (nur zur Sicherheit) Sind irgendwelche Inkompatibilitäten mit WinXP SP2 bekannt?
- Beim Verbinden von Relaiskarte und PC->I2C Adpater habe ich nur PIN 1 und 3 des 10er Steckers verbunden, da nur diese für den I2C Bus benötigt werden. Ist das so korrekt, oder habe ich etwas falsch verstanden?

Danke im Voraus für eventuelle Antworten,
Patrick.

PicNick
04.11.2005, 13:33
Wie schon der Name sagt, braucht das TWI (two-wire-interface) drei Drähte zur Verbindung: SCL, SDA und GND. Ich weiß jetzt aber die Stecker-Nummern nicht auswendig.

Patrick Dadzio
04.11.2005, 13:40
Danke für die schnelle Antwort. Antworten zu den anderen Fragen werden weiterhin gerne entgegengenommen ;-)

PicNick
04.11.2005, 13:49
Ich kann dir bei dem beiliegenden Programm-Beispiel leider nicht viel helfen, da ich kein VB habe. jetzt hab ich das Test-Exe mal angeworfen, konnte damit problemlos auf dem angeschlossenen RNBFRA-.Board die PCFs bedienen, und hab mir dann das Zeugs für VC++ um-, bzw. neugeschrieben
Ohne was Angeschlossenes gibt's natürlich keine ACK's, d.h. so gesehen funktioniert es natürlich nicht.

Patrick Dadzio
04.11.2005, 14:02
Als reicht ein angeschlossener PC->I2C Adapter nicht, an dem Adapter muß auch etwas 'dranhängen? Dadurch würde sich meine Fehlersuche dann auch auf das Relaisboard ausdehnen :-(

PicNick
04.11.2005, 14:53
Naja, Wenn das Programm am PC eine Steuersequenz wegschickt, und dann ist nix angeschlossen, läßt sich schwer was überprüfen.
Was den I2C-Bus betrifft, macht die Relaisplatine aber normalerweise keine Schwierigkeiten.
Du mußt das mit der Stromversorgung richtig jumpern bzw. anschließen,
und die mußt die eingestellte I2CAdresse natürlich im Programm verwenden, logo.
Bei dem PC<>I2C Adapter ist ein fertiges EXE-Testprogramm dabei. Hast du es mit dem versucht ?

Patrick Dadzio
04.11.2005, 14:56
Ja, mit dem habe ich es versucht. Ich werde wohl noch einmal alle Lötstellen überprüfen.
Das Programm hängt aber schon in der oben angeführten Schleife, noch bevor irgendeine Slave ID verwendet wird.

PicNick
04.11.2005, 15:02
"Hängen" (eigentlich dauer-Schleife) kann die Funktion nur da:
If get_scl() = 0 Then GoTo stopa
d.h. SCL ist offenbar immer unten.
Da vermute ich, daß das Pullup der SCL u. SDA nicht korrekt ist. Wenn du die Relaiskarte absteckts und mit Strom versorgt, müssen beide Leitungen ca 5V+ zeigen.

Patrick Dadzio
04.11.2005, 15:11
OK, immer daran denken, dass ich noch absoluter Neuling auf diesem Gebiet bin ;-)
Verstehe ich Dich richtig, dass ich die I2C Busleitungen abstöpseln soll, Strom auf den zusätzlichen Eingang der Relaiskarte geben und dann schaue, ob auf Pin 1 und Pin 3 je ca. 5V anliegen?

Danke im Voraus,
Patrick.

millioneer
04.11.2005, 15:26
Ich hatte diese Problem vor einiger Zeit auch, da lag es einfach am seriellen Kabel was zwischen PC und dem Adapter war. Das muss oder darf kein gekreuztes Kabel sein, welche Variante weiss ich nicht mehr.
Wenn man es direkt am PC/Notebook anschliesst, also ohne Zwischenkabel, muss es aber gehen.

Patrick Dadzio
04.11.2005, 15:29
Hallo, habe beides probiert, aber bisher kein Erfolg :-(

PicNick
04.11.2005, 15:29
Ich hab mir die Schaltung der Karte angesehen. Da sind keine Pull-ups drauf. also hat das Messen keinen sinn.
Vom Adapter hab ich jetzt keine Schaltung da.
Wie auch immer, SCL und SDA gehören mit etwa 4,7 kOhm auf +5V

Frank
04.11.2005, 15:43
Ich habs jetzt nicht genau in Erinnerung, aber ich glaub das Relaisboard kann keine 5V auf den I2C-Bus geben. Das war da nicht vorgesehen weil das meist die COntrollerboards machen. Somit hat der I2C Adapter vermutlich einfach keine Spannung. Das mit den Pullup Widerständen kommt noch dazu!

Mal in Schaltplan schaun wie du am besten 5V auf die Leitung bekommst.

PicNick
04.11.2005, 15:47
Beim Umschalt-Jumper alle drei verbinden.

Patrick Dadzio
04.11.2005, 15:48
Ich würde jetzt mal naiv annehmen, dass ich dann einfach an den Roboternetzstecker vom I2C Adapter an die entsprechenden Pins 5V anschließe, oder spricht etwas dagegen?

Frank
04.11.2005, 15:50
Ja, wenn du 5V irgendwo zur Verfügung hast.

Patrick Dadzio
04.11.2005, 15:51
Umschaltjumper = Jumper um zwischen externer Stromversorgung und Busstrom umzuschalten?

Patrick Dadzio
04.11.2005, 15:52
5V hätte ich in sofern zur Verfügung, dass ich ein zusätzliches Netzteil anschließe ;-)

PicNick
04.11.2005, 15:53
Ja, genau. Könnt' dann auf Anhieb klappen.

Frank
04.11.2005, 15:56
Ja das geht! Nur könntest du es noch etwas einfacher machen. Auf dem relaisboard ist ein 6V Spannungsregler. Wenn du von den 6V über eine oder zwei Dioden diesen 5V I2C PIN verbindest, geht das auch. Die Dioden dienen nur dazu das etwas Spannung abfällt und es nahe an die 5V ran kommt.

In der Praxis werden vermutlich sogar die 6V direkt gehen, da sowieso etwas Spannung über das Kabel abfällt und auch die Spannung noch vertragen wird.

Patrick Dadzio
04.11.2005, 16:34
Die Methode den 6V Regler anzuzapfen hat schon mal nicht zum Erfolg geführt. Man hört zwar die Relais klackern aber das Beispielprogramm läuft immer noch nicht.
@PicNick: Wie war das denn mit den 3 Pins gemeint?
Ansonsten werde ich gleich mal die Version mit einem zusätzlichen 5V Netzteil probieren.

PicNick
04.11.2005, 16:47
Der mittlere ist der Saft für die Relais-Platine, einer ist die 5V Leitung für den Adapter, und einer ist 6V von der Onboard-Stromversorgung.
Wenn alle drei verbunden sind, kriegen Relais Elektronik UND Adapter den Saft von der On board versorgung.

Patrick Dadzio
04.11.2005, 17:04
Hat leider nicht funktioniert, muß wohl doch an etwas anderem liegen.

PicNick
04.11.2005, 17:19
Probier mal den anderen I2CStecker auf dem Adapter

Patrick Dadzio
04.11.2005, 17:28
Mal eine kurze Frage nebenher. Welche Vorteile hat der i2c-Bus gegenüber CAN?

Patrick Dadzio
04.11.2005, 17:33
Hurra, jetzt startet das Programm. Ich habe den Adapter mittels eines Genderchangers und einem Nullmodemkabel angeschlossen. Mal gucken, ob ich jetzt auch Relais ein- und ausschalten kann :-D

Patrick Dadzio
04.11.2005, 17:43
Leider klappt es nicht. Weder lesen noch schreiben. Die Jumper für die Slaveadresse sind wie in der Anleitung gesetzt.
Die Buttons für das manuelle Setzten der Leitungen zeigen auch keinerlei Wirkung. War die Idee mit dem Nullmodemkabel doch nicht so gut?

PicNick
04.11.2005, 19:01
Nullmodem is nix, auf dem Adapter is ja eine Buchse, und der PC hat Stifte.
Eins ist aber auch klar: das Kabel muß die DTR, CTS, etc. Leitungen beinhalten, also recht komplett sein.
Sowas hat man kaum im Haus, das wär ein Kabel zum Modem-anstecken.
(auf einer seite female, auf der anderen male)

Wenn's geht, steck' also direkt an den PC

Patrick Dadzio
04.11.2005, 23:09
Tja, mit dem direkten Anschließen hatte ich es schon die ganze Zeit vorher probiert. Ich denke mal, ich werde mir noch einen Adapter bestellen und hoffen, dass es dann klappt.
Vielen Dank für Eure Hilfe,
Patrick.

Frank
05.11.2005, 11:02
Die Pullup WIderstände für I2C Bus hast du aber eingesetzt oder? Nicht das du das vergessen hast.
EIgentlich sollte es dan problemlos gehen. Wir hatten hier übrigens schon ein Thread wo jemand das Relaisboard mit dem I2C Adapter gesteuert hat. Vielleicht findest du den über die SUchfunktion.

Patrick Dadzio
05.11.2005, 13:20
Ich habe alle Bauteile wie beschrieben eingelötet und später dann für die Stromversorgung des Bus gesorgt (verbundene Jumper). Waren die Pullup Wiederstände beim Bausatz dabei?
Sorry für die wahrscheinlich naiven Fragen, aber wie gesagt, ich bin in diesem Gebiet blutiger Anfänger :-)

PicNick
05.11.2005, 13:55
Es sind 2 x 10k Widerstände als Pullup da.
Wenn das Relaisboard am Adapter angeschlossen ist, solltest du mal messen, ob
1. Der Adapter überhaupt seine 5V hat (lt. Schaltplan)
2. SCL u. SDA auch 5V haben. (lt. Schaltplan)
Das wär sozusagen die Grundstellung.

Steckst du nun am PC an, sollte das Demo Programm funktionieren oder nicht, es darf aber keinesfalls steckenbleiben.
Dann manuell SDA u. SCL setzen/löschen und nachmessen, ob es wahr ist. Dadurch kannst du auch das Kabelproblem verifizieren.