Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Keine Verbindung zur Relaisplatine? Kategorie: I²C-Bus (von André H. - 18.01.2005 14:00)
Als Antwort auf Keine Verbindung zur Relaisplatine? von Jochen Comes - 10.01.2005 16:52
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0
Hallo Jochen,

> Leider schaltet das Relais nicht. :-(  Da ich leider immer noch nicht so sicher bin, ob ich die Sache
> mit den Jumpern zur Adresseneinstellung der Platine richtig verstanden habe, habe ich einfach
> adr von 0 ... 63 laufen lassen -- ebenfalls ohne Erfolg.

Im Auslieferungszustand sind die Jumper so gesetzt, daÃ? sich die Modul-interne Adresse 0
ergibt (A2:GND - A1:SCL - A0:GND)

Hier hatte ich bereits etas über die Adressierung des MAX7311 geschrieben:
lesen.php?eintrag=8472

> Im Forum bin ich nun auf mehrere Beispiele gestoÃ?en, die genau wie mein Beispiel aussehen. Da
> fehlt allerdings fast immer das i2c.init(), obwohl ich in irgend einem Modultext gelesen habe, dass es
> benötigt wird.

Wo soll denn das stehen ????
Den Init des Busses übernimmt bereits das OS.
Die Funktion init() in i2c.c2 wird nur benötigt, wenn man die Ports des I²C-Busses
anderweitig "mi�braucht" und dann wieder als I²C-Bus benutzen will.

Ein i2c.init() ist daher genauso unnötig, wie
ein lcdext.clear() nach einem lcdext.init() (da bei einem Init auch das Display gelöscht wird).


> Desweiteren habe ich nirgendwo eine Erklärung für die Parameter von setDDR() gefunden.
> Ich wei� also nicht, ob 0 nun den Port zum Input oder zum Output umschaltet. Hier wären doch
> sprechende Konstanten eine schöne Idee, oder?

Beim MAX7311 bedeutet ein Low-Pegel im DDR-Register "Ausgang", ein High-Pegel "Eingang".
Dementsprechend muÃ? dies bei den Funktionen gehandhabt werden.
Bei setDDR() bedeutet 0 = Ausgang und ungleich 0 Eingang.
In den anderen DDR-Funktionen setDDRn() setDDRb() und setDDRw() wird
entsprechend mit dem Bitmuster bestimmt, welche Ports Ein oder Ausgänge sein sollen.

 
> Aber zurück zu meinem Problem. SDA und SCL sind anfangs beide auf +5V, so wie es sein soll.
> Falls mein Messgerät schnell genug ist (ist es vermutlich ja wohl nicht), dann bleiben beide auch
> immer konstant auf 5V -- da ändert sich nie was.

Mit eine Multimeter wirst Du auch selten etwas anderes Feststellen können.
Der Standardpegel ist 5V, wenn am Bus gerade nichts passiert.
Wird nur einmal pro sekunde auf dem Bus mit ein paar Bytes zugegriffen, so bekommst
Du das bei 100kHz garnicht mit.


> Ich habe mir deshalb mal den Status von setDDRw()
> ausgeben lassen. Der ist immer 0! Das erklärt wohl, warum die Relais nicht schalten, aber ich habe
> keine Ahnung, wo der Fehler liegen könnte.

Der Rückgabewert bedeutet entweder, da� die falsche Adresse angegeben wurde, oder
etwas mit dem AnschluÃ? nicht stimmt.

Für Adresse 0 müssen die Jumper von oben nach unten bei der Relaisplatine so aussehen:
(Ansicht Relaisklemmen oben, wie auf den Fotos bei CCTools)
- links unten
- rechts unten
- links unten
Die Jumper müssen immer waagerecht sein.


MfG André H.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten: