PCF8575 Inputs

OP #5607143
Lesenswert?
• ▲
▼
Hallo,



ich habe grade Probleme mit einem PCF8575 am ESP8266...

Ich habe P00-P07 als Ausgänge und P10-P17 als Eingänge geplant.

Alle 16 IOs haben 5K6 Pullups. Der IRQ und SDA/SCL haben je 10K Pullups.



Das Ansteuern der Ausgänge funktioniert, auch P10-P17 funtionieren als 
Ausgänge (nur zum testen), aber wenn ich diese als Eingänge verwenden 
will

(auf LO ziehen) lese ich trotzdem immer nur HIGH !



Der Befehl der pcf8575_esp Lib lautet dazu pcf8575.read(8) z.B.



Nun (m)eine Idee, kann es sein, daß man den IRQ zum lesen benutzen MUSS?

Oder sollte es auch ohne funktionieren?



Gruß,

Wolfram.
OP #5607231
Lesenswert?
• ▲
▼
Ja, ich initialisiere die mit HIGH am Anfang!
1
  pcf8575.begin();
2
  pcf8575.resetInterruptPin();
3

4
  pcf8575.write(MOTOR, LOW);
5
  pcf8575.write(MOTOR_DIR, LOW);
6
  pcf8575.write(FAN, LOW);
7
  pcf8575.write(INNEN_LICHT, LOW);
8
  pcf8575.write(AUSSEN_LICHT, LOW);
9
  pcf8575.write(5, LOW);
10
  pcf8575.write(6, LOW);
11
  pcf8575.write(7, LOW);
12

13
  pcf8575.write(8, HIGH);
14
  pcf8575.write(9, HIGH);
15
  pcf8575.write(10, HIGH);
16
  pcf8575.write(11, HIGH);
17
  pcf8575.write(12, HIGH);
18
  pcf8575.write(13, HIGH);
19
  pcf8575.write(14, HIGH);
20
  pcf8575.write(15, HIGH);


und lese die Ports hiermit aus:
1
void test_ios()
2
{
3
  int pos = 300;
4

5
  for (i = 0; i < 16; i++)
6
  {
7
    pos = pos - 15;
8

9
    if (i == 8)
10
    {
11
      pos = pos - 15;
12
    }
13

14
    if (pcf8575.read(i) == HIGH)
15
    {
16
      tft.fillCircle(pos, 192, 3, ILI9341_RED);
17
    }
18
    else
19
    {
20
      tft.fillCircle(pos, 192, 3, ILI9341_BLUE);
21
    }
22
  }
23
}

Ja, es ist diese Library, aber kein Arduino sondern ein ESP8266.
OP #5607319
Lesenswert?
• ▲
▼
habe eben mal was anderes probiert:

P00-P07 sind ja Ausgänge die vom Programm gestzt werden.
Wenn ich diese auslese, bekomme ich auch den Status so wie sie gesetzt 
sind,
da P0.5-7 noch frei sind, habe ich diese im setup per 
pcf8575.write(5,HIGH)
als Eingänge deklariert.
Nun werden beim auslesen diese auch als HIGH (da Pullups) angezeigt.
Lege ich an diese jedoch LO an (GND), ändert sich ebenfalls nix!

Irgendwie sind die Inputs nicht lieb zu mir :-(
#5607324
Lesenswert?
• ▲
▼
Das Problem ist hier halt auch mal wieder dass für einen pupsigen 
Baustein unbedingt eine eigene lib verwendet werden muss, von der man 
halt nicht so genau weiß was sie tut. Warum reicht es hier nicht, eine 
I2C lib zu nehmen und die paar bytes höchstselbst zu lesen und zu 
schreiben?

Abstraktion bis zur Schmerzgrenze und darüber hinaus.

Eine Möglichkeit wäre auch noch die I2C Kommunikation mal per LA 
anzuschauen und zu schauen was da wirklich über den Draht geht. Und das 
mit dem DB vergleichen bzw. mit dem erwartetenden Verhalten.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.