INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Frage zu PCF8574
10.07.2015, 16:53 (Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2015 16:57 von HaWe.)
Beitrag #1
Frage zu PCF8574
hallo,
ich habe diesen PCF8574 mit Platine bei Ebay gekauft:

[Bild: $_57.JPG]

http://www.ebay.de/itm/281577476570?_trk...EBIDX%3AIT

Das Teil ist mir nicht recht klar:
- auf der 8er Pin-Leiste ist außer den IO Pins noch 1 mit "INT" beschriftet - wozu ist der?
[Bild: $_57.JPG]
- werden die Pins, wenn man sie mit Tastern verbindet, gegen (+) oder gegen (-) geschaltet? Braucht man Pullups oder Vorwiderstände etc. ?
- was machen wohl die dip-Schalter genau?
- 0x27 ist wohl die Arduino-gerechte 7-bit-ADDR, korrekt?
- auf dem letzten Artikel-Foto wird dieser Sketch gezeigt, ich verstehe aber nicht, was das 2-sekündige Umschalten von i von 0 nach 1 und zurück soll:

Code:
void setup() {
  Serial.begin(9600);  
  Wire.begin();  
}

void loop(){
  if(i==0) {
    Wire.beginTransmission(0x27);
    Wire.write(0xff);
    Wire.endTransmission(true);  
    i=1;
  }
  else {
    Wire.beginTransmission(0x27);
    Wire.write(0x00);
    Wire.endTransmission(true);  
    i=0;
  }
  delay(20000);    
}


ein anderer Code zum Auslesen, den ich im Netz fand, ist dieser hier - den finde ich immerhin etwas verständlicher - hier scheint 0x40 (dez 64?) die 8-bit-ADDR zu sein, die in 7-bit dann wohl 0x20 (32?) ergibt?
Hier sehe ich kein 0/1/0... Umschalten:
Code:
/****************************************************************
*
* PCF8574 I²C-Bus-Expander als Eingabeport
*
****************************************************************/

#include <Wire.h>

#define I2C_ADDR    0x40 >> 1 // I2C-Addresse

void setup() {
  Serial.begin(9600);
  Wire.begin(I2C_ADDR);
  
  Serial.println("Testprogramm PCF8574 I2C-Bus-Expander");
  Serial.println("-------------------------------------");
  Serial.println();
}


void loop() {
  Wire.beginTransmission(I2C_ADDR);
  Wire.write(I2C_ADDR | 0x01);    // Alle Ports als Eingang
  Wire.requestFrom(I2C_ADDR, 1);  // Ein Byte (= 8 Bits) anfordern
  while(Wire.available() == 0);    // Warten, bis Daten verfügbar

  Serial.print("Eingelesen: ");
  Serial.println(Wire.read());
  Wire.endTransmission(true);
  
  delay(50);
}

Kann jemand Licht ins Dunkel bringen?
Huh
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.07.2015, 16:58
Beitrag #2
RE: Frage zu PCF8574
Über die DIP Schalter kannst du die Adresse einstellen. Für was die Vorwiderstände sein sollen weiß ich allerdings nicht. (Pullups?)
Ich benutze das IC nur in nackter Ausführung und kann dir nicht viel über das Bord sagen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.07.2015, 08:58 (Dieser Beitrag wurde zuletzt bearbeitet: 11.07.2015 08:59 von HaWe.)
Beitrag #3
RE: Frage zu PCF8574
weiß wer genaueres über die Dip-Schalter, auf welche Adressen da umgeswitcht wird?
Und was ist mit dem obersten, seltsamen Sketch mit dem 1-sec 1/0 toggle und abwechselnd schreiben von 0x0 und 0xff ?
Und wofür der "INT"-Pin auf der 8er Steckerleiste ist?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.07.2015, 09:28
Beitrag #4
RE: Frage zu PCF8574
Moin HaWe,
der PCF8574 arbeitet mit 7 Bit Adressen. Die ersten 4 Bit sind immer 0100, die restlichen 3 Bits kannst du eben mit den DIPs setzen. macht also max. 8 Adressen (Expander) an einem I2C-Bus.
Wenn der Chip im Input - Mode läuft wird bei jedem RISING / FALLING an den INPUT-Pins ein Signal über INT nach außen gegeben (ACTIVE LOW).
Alles weitere steht auch hier http://www.ti.com/lit/ml/scyb031/scyb031.pdf und hier http://pdf1.alldatasheet.com/datasheet-p...8574T.html beschrieben.
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.07.2015, 09:33 (Dieser Beitrag wurde zuletzt bearbeitet: 11.07.2015 09:33 von Scherheinz.)
Beitrag #5
RE: Frage zu PCF8574
Lade doch einfach den I²C Scanner und schalte die Schalter mal durch, dann hast du alle verfügbaren Adressen.

[Bild: pcfpinbelegungwsi094nx2k.jpg]

Das ist nichts anderes als ein Interrupt Ausgang der den du dann auf deinen Arduino legen kannst.

Zitat:7.2 Interrupt output
The PCF8574 provides an open-drain output (
INT) which
can be fed to a corresponding input of the microcontroller
(see Figs 13 and 14). This gives these chips a type of
master function which can initiate an action elsewhere in
the system.
An interrupt is generated by any rising or falling edge of the
port inputs in the input mode. After time tiv the signal INT is
valid.
Resetting and reactivating the interrupt circuit is achieved
when data on the port is changed to the original setting or
data is read from or written to the port which has generated
the interrupt.
Resetting occurs as follows:
• In the READ mode at the acknowledge bit after the rising
edge of the SCL signal
• In the WRITE mode at the acknowledge bit after the
HIGH-to-LOW transition of the SCL signal
• Interrupts which occur during the acknowledge clock
pulse may be lost (or very short) due to the resetting of
the interrupt during this pulse.
Each change of the I/Os after resetting will be detected
and, after the next rising clock edge, will be transmitted as
INT. Reading from or writing to another device does not
affect the interrupt circuit.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.07.2015, 10:15 (Dieser Beitrag wurde zuletzt bearbeitet: 11.07.2015 10:24 von HaWe.)
Beitrag #6
RE: Frage zu PCF8574
ich verstehe noch nicht: wofür braucht man einen Interrupt-Ausgang ? Mit rising/falling hatte ich noch nie was zu tun. Ich nutze nur die elementaren Wire-Kommandos:
Wire.beginTransmission
Wire.write
Wire.requestFrom
Wire.available
Wire.endTransmission

Ich hatte nur vor, bei Bedarf in meinem Programm wie im 2. Sketch das i2c-Byte zu lesen als Maske für die gedrückten Schalter:

Außerdem nutze ich fast ausschließlich den Due, der hat ja gar keine AVR-ähnlichen Interrupts.

Und was war das mit dem 1/0- toggle im 1. Sketch?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.07.2015, 10:45
Beitrag #7
RE: Frage zu PCF8574
Du kannst keinen Interrupt über einen Bus auslösen, also musst du über eine extra Leitung zu einem Interrupt Pin vom Arduino.

Der Sketch macht nix anderes als alle Ports auf LOW und dann wieder ais HIGH schalten.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.07.2015, 10:58 (Dieser Beitrag wurde zuletzt bearbeitet: 11.07.2015 10:59 von HaWe.)
Beitrag #8
RE: Frage zu PCF8574
Ich habe doch wie gesagt gar nicht vor, einen Interrupt auszulösen - MUSS ich diesen Pin dann trotzdem benutzen?

Zitat:ich nutze nur die elementaren Wire-Kommandos:
Wire.beginTransmission
Wire.write
Wire.requestFrom
Wire.available
Wire.endTransmission

Ich hatte nur vor, bei Bedarf in meinem Programm wie im 2. Sketch das i2c-Byte zu lesen als Maske für die gedrückten Schalter
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Frage zum Controllino Franz54 5 117 30.11.2016 18:18
Letzter Beitrag: Tommy56
  Frage zur Versorgungsspannung Franz54 7 192 25.11.2016 21:55
Letzter Beitrag: Franz54
  Frage zum ansteuern H4 Birne 60 Watt b3ta 8 399 27.09.2016 08:09
Letzter Beitrag: AlphaRay
  [gelöst] ATtiny mit Arduino programmieren - Frage zur Hardware Gelegenheitsbastler 4 958 10.09.2015 11:55
Letzter Beitrag: Bitklopfer
  Frage zu Motorstellkraft HaWe 13 1.610 03.06.2015 08:41
Letzter Beitrag: Thorsten Pferdekämper
  [Neu hier] Eine Frage gregors 2 770 22.04.2015 11:06
Letzter Beitrag: gregors
  Grundlegende Frage zu Messwertwerfassung torsten_156 6 1.081 14.04.2015 19:06
Letzter Beitrag: torsten_156
  Frage zu IC HCF4024 BE HaWe 0 632 20.03.2015 22:12
Letzter Beitrag: HaWe
  Frage zu den Motor Drive Shields BedrockMediaTV 4 1.106 03.03.2015 10:16
Letzter Beitrag: HaWe
  Frage zu Strom JoSiGB 0 658 14.11.2014 09:44
Letzter Beitrag: JoSiGB

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste