Hallo, ich glaube ich verstehe den MAX7322 bzw. dessen Datenblatt nicht. Das Datenblatt findet ihr hier: MAX7322 Zuerst schreibe ich 0xff über i2c, sodass ALLE Outputs auf high gehen und alle inputs bei wechselndem Pegel einen Interrupt auslösen. Drücke ich eine Taste, geht INT auf low und ich frage die Daten ab. Wenn ich zwei Byte lese erwarte ich 1. Byte Zustand der Ports (Hier verunde ich das Ergebnis mit & 0b11000011 um die Inputs auszunehmen) 2. Byte Interrupt Flags der Inputs Diese sind aber zufällig. Beispiel: Drücken des Tasters an I2 [ Korrekt wäre: 0xC3 0x04 ] 1. Tastendruck 0xc3 0x04 (Taste drücken) 0x00 0x04 (Taste loslassen) So wäre zumindest der Input korrekt... aber... 2. Tastendruck 0x01 0x00 0x81 0x04 3. Tastendruck 0x83 0x04 0x01 0x00 Taster sind alle angeschlossen und Hardware entprellt. Outputs sind alle über 100kOhm auf GND gelegt. Reset ist auf high mit 4k7 Int ist auf high mit 4k7 Spannung 5V I2C Signale habe ich mir angesehen. Sowohl mit LA als auch mit Oszi. Werte habe ich verglichen ob ggf. ein Signal nicht ausreichend ist dh. Pegel zu niedrig/nicht ganz Null. Passt aber alles. Adresspins habe ich beide auf GND um die Push Pulls beim Start auf 0V zu haben. Wie man sehen kann, ist das erste Byte am schwingen. Es ist ohne jegliche logic. Das zweite Byte ist entweder 0 oder 4. Immer 4 wäre korrekt. Missverstehe ich das Datenblatt? Wo könnte ich den Fehler finden? Was könnte falsch sein? Verwunderlich ist, dass der MAX7322 immer korrekt den INT Pin auf low zieht, aber die Daten, sowohl der Outputs als auch der Interrupt Flags, nicht immer korrekt bzw. meist falsch sind. Den IC habe ich mit Adapter auf dem Steckbrett. Tauschen würde ich den erst, wenn hier keine Ideen reinkommen... Was ich nicht hoffe :) Freue mich über Hinweise!
Noch ein Symptom: Wenn ich alle Outputs auf low stelle, zieht der MAX bei Tastendruck zwar den INT Pin auf low, die Daten sind aber _IMMER_ 0x00
Hat niemand Lust mal nach zu gucken? Ist der Fehler zu offensichtlich? HILFE.... :)
Agst schrieb: > Hat niemand Lust mal nach zu gucken? Ist der Fehler zu offensichtlich? > HILFE.... :) Ich sage mal der Fehler ist dass wir uns vorstellen sollen wie du den Schaltplan dir ausgedacht hast. Oder wir sollen ihn sogar selbst malen. Merkst du was? Wenn nicht, dann lies mal Netiquette.
Die Schaltung ist umgesetzt wie im Datenblatt (Seite 15), nur mit 100k Widerständen an den Outputs und Schaltern an den Inputs, sowie PullUps an INT RESET SCL / SDA. Die Komplexität hält sich also in Grenzen. Der IC funktioniert ja in seiner Grundfunktionalität. Es geht im wesentlichen um die Kommunikation über I2C. Sollte trotzdem ein Schaltplan gewünscht sein, liefere ich diesen sehr gern morgen nach.
Agst schrieb: > Sollte trotzdem ein Schaltplan gewünscht sein, Ich wünsche gar nichts. Nur solltest du jetzt "die Verhältnisse" hier verstanden haben und danach handeln was du dir wünschst. Agst schrieb: > Die Schaltung ist umgesetzt wie im Datenblatt (Seite 15), nur mit 100k > Widerständen an den Outputs und Schaltern an den Inputs Immer noch diese Schaltplan-Prosa. Gratuliere, sieht so aus als ob du noch nichts verstanden hast.
OK, im Anhang ein Bild der Schaltung. Ich habe den IC heute getauscht und das Problem besteht weiterhin. Es muss also an mir liegen. Hoffe auf Hilfe.
Und? Trotz Schaltplan keiner eine Idee? Oder fehlt dem Schaltplan etwas?
Agst schrieb: > Oder fehlt dem Schaltplan etwas? Ich schätze mal: das Programm das nicht funktioniert.
....möglicherweise funtioniert es mit niedrigerem I2C-Takt bzw. geringeren Werten der Pullup-Widerstände?
Nichso Einfach schrieb: > Agst schrieb: >> Oder fehlt dem Schaltplan etwas? > > Ich schätze mal: das Programm das nicht funktioniert. Die Frage ist, ob das Programm die richtigen Werte versendet. Was ich erwarte, steht oben. Was zurück kommt ebenfalls. Im LA Bild sieht man, dass "das Programm" schon korrekt arbeitet. Hans B. schrieb: > ....möglicherweise funtioniert es mit niedrigerem I2C-Takt bzw. > geringeren Werten der Pullup-Widerstände? Habe ich beides bereits versucht. Die Qualität des Signals habe ich allerdings auch, wie oben geschrieben, mit dem Oszi geprüft. Das sollte passen. Die Output Kanäle funktionieren wunderbar. Es gibt überhaupt keine Probleme. Die Inputs funktioneiren aber nur dann, wenn alle OUtputs auf 1 stehen.
.....sind die internen Pullups der Eingänge aktiviert od. abgeschaltet?
Nu habe ich die beiden Adresspins auf VCC gelegt... und nu geht es zu 100% korrekt. Ohne Fehlerkennung. Ich verstehe es nicht. Der Unterschied ist, dass ich beim eine PullUps (VCC an beiden Adresspins) aktiviert habe und beim anderen nicht.
..vielleicht könnte folgendes sein: Beim Einschalten der 5V geht die Spannung an den I2....I5 durch den 100nF (neben dem Schalter) möglicherweise schneller hoch als die Betriebsspannung. Ist es besser, den 100nF nach Gnd zu schalten?
Wenn die internen Pull-Up aktiv sind, können deine 100kΩ Widerstände an den Tastern die Eingänge nicht mehr auf Low ziehen. Das die Schaltung so einwandfrei funktioniert, glaube ich daher nicht. Da du gesagt hast, dass es mit Pull-Up funktioniert, kann eigentlich nur sein, dass deine Taster genau umgekehrt angeschlossen sind: Sie ziehen den Eingang auf GND und der 100kΩ Widerstand geht nach VCC. Dazu passt das Diagramm im Eröffnungsbeitrag. Das Bit von I2 ist beim Tastendruck auf Low gegangen! Lass mich raten: Du hast auf deinem Steckbrett die beiden Stromversorgung-Schienen verwechselt. Messe einfach mal die Spannungen nach! Was die Zufälligen Zustände der Ausgänge angeht: Kann ich mit den verfügbaren Infos nicht erklären. Zeige mal, wie die Kommunikation auf einem Oszilloskop aussieht (Timing, Spannungspegel, Signalflanken). Wie sind denn die tatsächlichen Spannungen an den Ein- und Ausgängen? Sind alle Spannungen eindeutig High/Low, und nicht vertauscht?
Hans B. schrieb: > ..vielleicht könnte folgendes sein: > Beim Einschalten der 5V geht die Spannung an den I2....I5 durch den > 100nF (neben dem Schalter) möglicherweise schneller hoch als die > Betriebsspannung. > Ist es besser, den 100nF nach Gnd zu schalten? Meinst du vielleicht, dass die Spannung an I2...I5 langsamer hoch geht? Aber auch wenn dem so wäre: Wenn ich die Adresspins beide auf VCC lege, funktioniert der IC perfekt. Der Unterschied liegt also in den PullUps. Stefan ⛄ F. schrieb: > Wenn die internen Pull-Up aktiv sind, können deine 100kΩ Widerstände an > den Tastern die Eingänge nicht mehr auf Low ziehen. Das die Schaltung so > einwandfrei funktioniert, glaube ich daher nicht. Das ist korrekt. Die Spannung fällt auf ca. 1,3V. Das sollte daran liegen, dass über den 10k Widerstand Strom fließt. Auslösen sollte der IC unter 1,5V laut Datenblatt (5V Betriebspannung) Wobei 1,5V das maximium darstellt. Aber auch hier: Wenn ich die Adresspins auf 5V lege, funktioniert es perfekt. Stefan ⛄ F. schrieb: > Da du gesagt hast, dass es mit Pull-Up funktioniert, kann eigentlich nur > sein, dass deine Taster genau umgekehrt angeschlossen sind: Sie ziehen > den Eingang auf GND und der 100kΩ Widerstand geht nach VCC. Wenn der Taster gedrückt ist, liegt 0V (bzw. 1,3V) am Input an. Wenn ich loslasse, liegen 5V an. Passt soweit alles. Stefan ⛄ F. schrieb: > Lass mich raten: Du hast auf deinem Steckbrett die beiden > Stromversorgung-Schienen verwechselt. Messe einfach mal die Spannungen > nach! Das passt auch. Sonst wäre der IC nicht in der Lage zu funktionieren. Zudem funktioniert er ja perfekt wenn ich die Adresspins auf 5V lege.
Agst schrieb: > Wenn der Taster gedrückt ist, liegt 0V (bzw. 1,3V) am Input an. Wenn ich > loslasse, liegen 5V an. Passt soweit alles. Nein passt nicht. Vergleiche das mal mit deinem Schaltplan.
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.