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
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
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?
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
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!
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.
@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.
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.
@ 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.