Forum: Mikrocontroller und Digitale Elektronik MAX7322 confuse Datenausgabe


von Agst (Gast)



Lesenswert?

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!

von Agst (Gast)


Lesenswert?

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

von Agst (Gast)


Lesenswert?

Hat niemand Lust mal nach zu gucken? Ist der Fehler zu offensichtlich? 
HILFE.... :)

von jo mei (Gast)


Lesenswert?

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.

von Agst (Gast)


Lesenswert?

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.

von jo mei (Gast)


Lesenswert?

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.

von Agst (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Agst (Gast)


Angehängte Dateien:

Lesenswert?

Etwas groß geraten. Im Anhang nochmal verkleinert.

von Agst (Gast)


Lesenswert?

Und? Trotz Schaltplan keiner eine Idee? Oder fehlt dem Schaltplan etwas?

von Nichso Einfach (Gast)


Lesenswert?

Agst schrieb:
> Oder fehlt dem Schaltplan etwas?

Ich schätze mal: das Programm das nicht funktioniert.

von Hans B. (Gast)


Lesenswert?

....möglicherweise funtioniert es mit niedrigerem I2C-Takt bzw. 
geringeren Werten der Pullup-Widerstände?

von Agst (Gast)


Lesenswert?

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.

von baum (Gast)


Lesenswert?

.....sind die internen Pullups der Eingänge aktiviert od. abgeschaltet?

von Agst (Gast)


Lesenswert?

abgeschaltet. ich habe die adresspins auf GND.

von Agst (Gast)


Lesenswert?

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.

von Hans B. (Gast)


Lesenswert?

..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?

von Stefan F. (Gast)


Lesenswert?

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?

von Agst (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.