Hallo, hab eine Frage zum INT Ausgang des PCF8574 Ich möchte den Baustein zur Abfrage von 6 Tastern verwenden. Die Taster schalten, wenn betätigt +5V zum Expander. durch den Signalwechsel 0->1 an einem Eingang wird der INT gesetzt, also meine INT Leitung (Pullup nach 5V) geht nach GND. der INT wird wieder zurückgesetzt wenn a, der µC den Expander ausgelesen hat der den INT gesetzt hat, oder - und da bin ich mir nicht sicher ob ich das so richtig verstanden hab.. - b, der Pin der den INT ausgelöst hat, wieder auf den Signalzustand vor der Auslösung zurückgeht, ohne dass die Daten bislang vom µC ausgelesen wurden. Ist dies so richtig? Folgendes möchte ich damit aufbauen: Ich habe 6 Taster, welche immer nur an bestimmten Stellen im Programm abgefragt werden. Das Programm wird an dieser Stelle angehalten und wartet bis die entsprechende Taste(n) gedrückt wurde(n). Mit der INT - Leitung signalisiere ich meine µC das eine Taste gedrückt wurde (dafür verwende ich keine INT Eingang am µC, die benötige ich für andere Sensoren). Wenn am besagten Eingang 0 anliegt, lese ich den Baustein via i2c aus. Der INT Ausgang wird dann vom Expander zurückgesetzt. Ist meine Taste nach dem Auslesen dann aber immer noch gedrückt, wird wenn ich die Taste loslasse ein neuer INT gesetzt, richtig?
:
Verschoben durch User
>Ist dies so richtig?
Steht zumindest so im Datenblatt:
"Resetting and reactivating the interrupt circuit is achieved
when data on the port is changed to the original setting or
data is read from or written to the port which has generated
the interrupt."
Stefan schrieb: > Die Taster > schalten, wenn betätigt +5V zum Expander. Das wird nicht funktionieren, der PCF8574 hat interne Pullups, d.h. Du liest schon bei nicht gedrücktem Taster high. Entweder Taster gegen GND oder einen sehr starken Pulldown, der den internen Pullup überstimmt. Der INT-Ausgang ist ein EXOR zwischen dem letzten gelesenen Wert und den Eingängen.
Peter D. schrieb: > Entweder Taster gegen GND oder einen sehr starken Pulldown Der Pullup ist eine 100µA Stromquelle, also so stark muss der Pulldown garnicht sein. Schon mit 10K wären es nur 1V und damit unterhalb der Schaltschwelle.
Stefan schrieb: > Folgendes möchte ich damit aufbauen: > Ich habe 6 Taster, welche immer nur an bestimmten Stellen im Programm > abgefragt werden. Das Programm wird an dieser Stelle angehalten und > wartet bis die entsprechende Taste(n) gedrückt wurde(n). ob /INT der richtige Weg ist, ich habe so eine I2C Tastatur gebaut mit 6 Taster als Steuerkreuz up/down left/right ESC/ENTER zur Menüführung Entprellroutine nach Dannegger 10ms Timer der den Tastenstatus feststellt gelesen wird wenn ich Zeit dafür habe, kein Tastendruck entgeht mir, habe ich den Status gelesen wird das Tasten Bit zurückgesetzt und ich kann weiter machen. An deiner Stelle würde ich dort auf den gewünschten Tastendruck warten bis das gewünschte Tastenflag erscheint. Du kannst aber in der loop oder while(1) solange was anderes machen, z.B. die Uhr auf dem Display aktualisieren, DCF77 Bits sammeln, incoming Rx Kommandos einsammeln usw. Anhalten und warten ist ja verschwendete Rechenzeit.
:
Bearbeitet durch User
An den Eingänge habe ich je 10k Pulldown schon vorgesehen. Das ganze soll ebenfalls eine Menüsteuerung werden. Ich kann jedoch das Programm jederzeit unterbrechen, da wenn man im Menü ist im Hintergrund sonst auch nichts passiert. Das ganze Programm ist im Prinzip ein Schritt für Schritt Ablauf. Also vielen Dank und einen Guten Rutsch ins neue Jahr!
wie entprellt deine Unterbrechung? ich meine /INT aus der I2C Tastatur ist nicht brauchbar, aber mache es....
Jobst Q. schrieb: > Der Pullup ist eine 100µA Stromquelle Lt. Datenblatt 30..300µA. Ich würde sicherheitshalber max 3,3k Pulldown empfehlen. Selber habe ich noch nie Pulldowns benutzt. Es ist dem MC herzlich egal, ob ne gedrückte Taste 0 oder 1 ist. Es spart auch keine Instruktion ein.
Peter D. schrieb: > Selber habe ich noch nie Pulldowns benutzt. Es ist dem MC herzlich egal, > ob ne gedrückte Taste 0 oder 1 ist. Es spart auch keine Instruktion ein +1 dito Edit: stimmt ja ich nutze deine Entprellroutine ja auch am PCF8574 mit I2C am A-Studio und nun am Arduino
:
Bearbeitet durch User
Peter D. schrieb: > Selber habe ich noch nie Pulldowns benutzt. Es ist dem MC herzlich egal, > ob ne gedrückte Taste 0 oder 1 ist. Es spart auch keine Instruktion ein. Es geht hier aber nicht um dem MC sondern den PCF. Da der die Pullups ja schon drin hat schaltet man sinnvollerweise die Taster nach GND, aber nicht nach VCC. Damit spart man sich dann auch die Pulldowns, außer natürlich die Taster sind über etliche Meter Kabel im Raum verteilt.
Peter D. schrieb: > Jobst Q. schrieb: >> Der Pullup ist eine 100µA Stromquelle > > Lt. Datenblatt 30..300µA. > Ich würde sicherheitshalber max 3,3k Pulldown empfehlen. > > Selber habe ich noch nie Pulldowns benutzt. Es ist dem MC herzlich egal, > ob ne gedrückte Taste 0 oder 1 ist. Es spart auch keine Instruktion ein. Die 100µA hatte ich in Erinnerung. Dass die Streuung so breit ist, hätte ich nicht gedacht. Ich würde ihn auch immer nur gegen GND schalten.
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.