Forum: Mikrocontroller und Digitale Elektronik AT89C40551 und PCF8574 am verzweifeln:-)


von Anton M. (anton-xxx)


Angehängte Dateien:

Lesenswert?

Hilfeschrei aus purer Verzweiflung :-) so schlimm, nun  aber auch nicht.

Ich brauche einige Infos zum Verständnis, wie der PCF 8574 wirklich 
funktioniert. Ich habe schon ziemlich viel darüber gelesen, aber bei 
meinem Problem komme ich nicht weiter. Also zum meinem Aufbau:
- ein AT89C4051 mit 11,059MHz (SDA = P1.7; SCL = P1.6)
- ein PCF 8574P an den Ports LEDs angeschlossen (IC - R1 - LED - 
(Minus)),
  Adressleitungen (A1/A2/A3) sind auf GND.

Die Idee:
LED ein/ausschalten. Hatte sogar schon Lauflicht damit gemacht(lief aber 
unsauber) Großartig:-)

Zum Programm:
Ich verwende keine Library für I2C, mach es selbst in C (mit Keil 
µVision).

Zum Problem:
So schreiben alle in Foren und auch Datenblätter:
1. START (SCL und SDA beide HIGH, dann SDA auf LOW, danach SCL auf LOW)
2. Adresse (0100 0000) scheint zu funktionieren, den darauffolgende 
ACKN-bit ist LOW, wenn der 9. Takt kommt
3. Data (1001 1001) scheint auch zu funktionieren, den ACKN-bit ist 
LOW,wenn ich 9. Takt sende
4.STOP (SCL auf HIGH, SDA auf HIGH)
super :-)

so habe ich das auch realisiert.

Nach START - Adresse - ACKN - Data - schalte ich SDA auf HIGH, danach 
SCL auf HIGH PCF 8574 zieht SDA-Leitung auf LOW -> LEDs leuchten auf!!! 
Wenn ich aber SCL auf LOW ziehe gehen LEDs aus!!! :-0 Soweit ich das 
verstehe ist es falsch, die LED sollten an bleiben, bis das nächste 
Telegram mit Daten kommt.


folgende Szenarien habe ich durchgespielt:
1. ich ignoriere ACKN-bit da ja nur 1 Datenbyte gesendet wurde (habe 
irgendwo gelesen, dass man sowas bei einem Datenbyte machen kann) und 
versuche STOP einzuleiten. Die SDA bleibt auf LOW, beim nächsten STARTs, 
passieren komische Sachen, die LEDs gehen zwar an wie in Data steht, 
aber zwischendurch leuchten andere auf???? Aaahhh

2.ich führe alles so ,wie im Datenblatt beschrieben ist, aus:
START - ADRESSE (ACKN)- DATA (ACKN)-Stop
-> die RICHTIGEN LEDs leuchten kurz auf und gehen sofort aus

Folgendes habe ich gemacht bzw. versucht:
Aus Verzweiflung habe ich versucht über selbst gebastelte Debug-Ausgaben 
über RS232 am PC was zu finden,aber erfolglos. Deswegen habe ich den 
Code im Anhand so vereinfacht, dass es schon peinlich ist ihn zu lesen. 
(Warte schleifen habe ich auch ausgebaut). Und hier passiert genau das 
selbe! Ich weiß nicht wo der Hund vergraben ist.

Im Voraus danke an alle Beteiligten

von Oliver J. (skriptkiddy)


Lesenswert?

Schaltplan?

von Anton M. (anton-xxx)


Angehängte Dateien:

Lesenswert?

Stimmt das habe ich noch vergessen!

von Oliver J. (skriptkiddy)


Lesenswert?

überall 100nF dran?

von Klaus D. (kolisson)


Lesenswert?

Der PCF 8574 kann am ausgang von Plus aus nur 100uA treiben.
(siehe Datenblatt).
Klemm die LEDs mal auf VCC und schalte sie gegen GND.

Gruss Klaus

von marcel (Gast)


Lesenswert?

wo gehren denn doe 100nF Kondensatoren dran?

von Anton M. (Gast)


Lesenswert?

Moin,

Skript Kiddy schrieb:
> überall 100nF dran?

Nein, bis jetzt niergend eingebaut.


Klaus De lisson schrieb:
> r PCF 8574 kann am ausgang von Plus aus nur 100uA treiben.
> (siehe Datenblatt).rom

Die LED, die ich eingebaut habe, ziehen ca. 20mA. Wenn ich PCF 8574 Port 
auf HIGH lege, leuchten die ja auf! Hat PCF 8574 ein Schutzmechanismus, 
das bei Überstrom ausgänge auf LOW zieht?Wäre es denkbar?

von Oliver J. (skriptkiddy)


Lesenswert?

Anton M. schrieb:
> Skript Kiddy schrieb:
>> überall 100nF dran?
>
> Nein, bis jetzt niergend eingebaut.

Dann hol das mal nach. Ohne wird das höchstens ein Würfelspiel.

Gruß Skriptkiddy

von Falk B. (falk)


Lesenswert?


von Anton M. (anton-xxx)


Lesenswert?

Skript Kiddy schrieb:
> Anton M. schrieb:
>> Skript Kiddy schrieb:
>>> überall 100nF dran?
>>
>> Nein, bis jetzt niergend eingebaut.
>
> Dann hol das mal nach. Ohne wird das höchstens ein Würfelspiel.
>
> Gruß Skriptkiddy


Klaus De lisson schrieb:
> Der PCF 8574 kann am ausgang von Plus aus nur 100uA treiben.
> (siehe Datenblatt).
> Klemm die LEDs mal auf VCC und schalte sie gegen GND.
>
> Gruss Klaus



Das ist es gewesen!!! Hätte ich echt nicht gedacht!!Ich habe die zwei 
Punke geändert bzw. nachgeholt (LEDs an +5V und 100nF rein) und schon 
funzenukelt das Ganze! Leute echt.. vielen Dank! Super Forum!

Also was lernt man daraus: den IC nicht an die Kotzgrenze bringen (20mA 
an Port saugen) und wennn der IC misst macht schön 100nF verbauen!!! Das 
war die Lösung des Problems!

Nochmal Danke an alle Beteiligten!

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Die Kondensatoren immer an jedes IC hängen, auch wenns in 95% aller 
Fälle auch ohne geht.
LEDs gibts auch Low Current (1-2mA) und eine LED leuchtet auch noch mit 
1/2 bis 2/3 ihres angegebenen Stroms.

von Klaus D. (kolisson)


Lesenswert?

@Autor: Anton M. (anton-xxx)

Vielen Dank , Anton , für dein positives Feedback.
Bei deinem Problem waren es ja nun evt. 2 verschiedene Ursachen.
einmal wieder die versäumten 100nF Biester und zusätzlich
die Treibequalität des PCF.

Der von Falk Brunner gepostete Link:
http://www.mikrocontroller.net/articles/Port-Expander_PCF8574

war vielleicht hilfreich, ist aber im inneren falsch.
Da steht:

"Ausgeben können die IOs nur ca. 100µA über den interen Pull-Up 
Widerstand (welcher genaugenommen eine Konstantstromquelle ist). 
Kurzzeitig kann dieser Pull-Up 1mA liefern, wenn ein Ausgang von LOW auf 
HIGH schaltet, das verkürzt die Umschaltzeit wesentlich."

Hier steht irgendwas von verkürzter Umschaltzeit wegen der 
Konstantstromquelle. Das ist natürlich vollkommener Blödsinn.
Der Sinn der Stromquelle ist eher in dem Quasi Bidirektionalbetrieb zu 
sehen.
Das hat der Autor des Artikels im Wiki wohl nicht kapiert.

Bezüglich der Pufferkondis kann ich nur sagen:
Jeder IC bekommt einen und das immer. Dann muss man später auch
keine abstrusen Fehler suchen.

Gruss k.

von Michael (Gast)


Lesenswert?

Klaus De lisson schrieb:
> Hier steht irgendwas von verkürzter Umschaltzeit wegen der
> Konstantstromquelle. Das ist natürlich vollkommener Blödsinn.

Ein kurzer Blick in das Datenblatt des PCF8574 hilft, wie in vielen 
Fällen, unabhängig von irgendwelchen zitierten Kommentaren die Mysterien 
der Ausgangsstufe aufzuklären.
Die Schaltung der Ausgangsstufe ("Simplified schematic diagram of each 
I/O" o.ä.) offenbart einen Gegentaktendstufe, bei der sich im H-Side 
Zweig die besagte Konstantstromquelle befindet. Parallel dazu liegt ein 
weiterer FET, der, solange der Write Puls anliegt, den Ausgang 
niederohmig nach High ziehen kann.
Darum leuchten in der ersten Schaltung die LEDs auf, bis die 
Datenübernahme beendet ist (SCL -> Low). Die Kondensatoren haben damit 
nichts zu tun.

Manchmal hilft einfach, das Datenblatt zu lesen.

von Falk B. (falk)


Lesenswert?

@  Klaus De lisson (kolisson)

>"Ausgeben können die IOs nur ca. 100µA über den interen Pull-Up
>Widerstand (welcher genaugenommen eine Konstantstromquelle ist).
>Kurzzeitig kann dieser Pull-Up 1mA liefern, wenn ein Ausgang von LOW auf
>HIGH schaltet, das verkürzt die Umschaltzeit wesentlich."

Die Aussage ist vollkommen korrekt. Siehe Datenblatt.

>Hier steht irgendwas von verkürzter Umschaltzeit wegen der
>Konstantstromquelle. Das ist natürlich vollkommener Blödsinn.

Mit solchen Aussagen sollte man sparsamer umgehen, wenn man nicht 
wirklich weiß, wie der Hase läuft. Und wer lesen kann ist klar im 
Vorteil, sowohl Arikel als auch Datenblatt.

Die Umschaltzeit wird verkürzt, weil im Umschaltmoment von LOW auf HIGH 
der IC ca. 1mA Strom liefert. Nicht unbedingt, weil es eine 
Konstantstromquelle ist.

>Der Sinn der Stromquelle ist eher in dem Quasi Bidirektionalbetrieb zu
>sehen.

Das ist ein einfache Open Kollektor. Steht genau so im Artikel und 
Datenblatt.

>Das hat der Autor des Artikels im Wiki wohl nicht kapiert.

Räusper

Schau dir mal die Autorenliste an . . .

>Jeder IC bekommt einen und das immer. Dann muss man später auch
>keine abstrusen Fehler suchen.

Wohl wahr.

@  Michael (Gast)

>Die Schaltung der Ausgangsstufe ("Simplified schematic diagram of each
>I/O" o.ä.) offenbart einen Gegentaktendstufe,


Keinesfalls. Es ist und bleibt ein Open Drain. Der Pull-Up in Form einer 
Konstantstromquelle per FET hat rein gar nicht mit Gegentaktendstufe zu 
tun!

>Manchmal hilft einfach, das Datenblatt zu lesen.

Eben.

MfG
Falk

von Klaus D. (kolisson)


Lesenswert?

Falk Brunner schrieb:
>>Das hat der Autor des Artikels im Wiki wohl nicht kapiert.
>
> Räusper

Hmmmm,
falsche Wortwahl meinerseits ! Excuse.

k.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.