Hallo,
hast Du überall Pullup Widerstände drin (bei INT und Tastern), damit keine Signale ins flattern kommen?
Hallo,
ich habe den Interrupt-Ausgang eines PCF 8574 mit INT5 (PE.5)
eines Mega128 verbunden. Am PCF 8574 sind Taster gegen
Masse angeschlossen.
Ich möchte nun in Bascom eine Interrupt-Routine anspringen und
dort abfragen, welche Taster gedrückt sind.
Mein Problem ist, dass das Interrupt-Label immer/ständigCode:Config Int5 = FALLING On Int5 PCF_Key Enable Interrupts Enable Int5 Do 'irgendwas Loop PCF_Key: Print "Taster gedrückt" Return
angesprungen wird. Wie macht man das richtig?
Danke: - Reinhard -
Hallo,
hast Du überall Pullup Widerstände drin (bei INT und Tastern), damit keine Signale ins flattern kommen?
@linux_80
PullUp's sind bei den Tastern dran. Wie soll ich das beim INT
machen?
Ich habe gerade noch mal gemessen: wenn ich einen Taster
drücke, wird der INT-Ausgang vom PCF auf low (0) gezogen.
Ich kann das Signal aber beim M128 nicht auswerten ...
Gruß: - Reinhard -
im DB unter 7.2 ist es auch dargestellt, Fig.12
Die Tasten werden dann auch noch prellen,
wenn nix gedrückt wird sollte zumindest kein INT ausgelöst werden.
Wenn der M128 beim INT auf falling reagiert, sollte das schon mal dir richtige Richtung sein.
der INT -ausgang ist open-drain, verständlicherweise. Hast du das berücksichtigt ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
@PicNick
was sagt mir das genau?
Ich habe jetzt den PullUp beim INT installiert (10K gegen VCC) und
es läuft immer noch nicht ...
Was muss ich noch einstellen, damit der M128 das Signal auswerten
kann?
Gruß: - Reinhard -
Ist der INT-Pin am 128-er als Input definiert ? Ich kann in den diversen Beschreibungen nicht entnehmen, ob das automatisch mit der Interrupt-definition geschieht.
--> Pullup. Hat sich aber eledigt, seh ich.was sagt mir das genau?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
@PicNick
Den INT-Pin am M128 habe ich nicht explizit als Eingang definiert.
Der folgende Code läuft fast richtig:
Fast deshalb, weil nach ein paar Tastendrücken der Port 0 desCode:' TestInt5.bas ' ------------ ' PCF 8574 : P0 <- Taster gegen GND ' P4 -> grüne LED -> R -> VCC ' P5 -> gelbe LED -> R -> VCC ' P5 -> rote LED -> R -> VCC ' INT -> 10K -> VCC ' ' M128 :PE5 (INT5) <- CD4050 <- INT von PCF8574 $regfile = "m128def.dat" $hwstack = 64 $framesize = 64 $swstack = 64 $crystal = 16000000 'Quarzfrequenz 16 MHz $baud = 19200 'Baudrate COM1 $baud1 = 19200 'Baudrate COM2 Const PCF_Adr = &H40 Dim PCF_Port As Byte Dim B As Byte Dim i As Integer Config Sda = Portd.1 Config Scl = Portd.0 I2cinit 'I2C-Bus initialisieren Waitms 250 '1.Hardware UART 'keine Definition notwendig (Ausgaben mit einfachem Print möglich) '2.Hardware UART Open "Com2:" For Binary As #1 'alle LED's aus (invertiertes Schalten) PCF_Port = &B11111111 I2CSend PCF_Adr , PCF_Port Config Int5 = Rising On Int5 INT5_ISR Enable Interrupts Enable Int5 i = 0 Print #1 , "Start ..." Do Print #1 , i ; "->" ; Bin(PCF_Port) 'Tastenstatus lesen I2CReceive PCF_Adr , PCF_Port 'gelbe LED an Port P5 einschalten PCF_Port.5 = 0 I2CSend PCF_Adr , PCF_Port Waitms 250 'grüne LED an Port P4 einschalten PCF_Port.4 = 0 I2CSend PCF_Adr , PCF_Port Waitms 250 'gelbe & grüne LED aus PCF_Port.5 = 1 PCF_Port.4 = 1 I2CSend PCF_Adr , PCF_Port Waitms 500 Loop Close #1 End 'Service-Routine für INT5 INT5_ISR: Incr i 'Tastenstatus lesen, mit entprellen I2CReceive PCF_Adr , PCF_Port Waitms 50 I2CReceive PCF_Adr , B If PCF_Port.0 = B.0 then 'rote LED an Port P6 umschalten Toggle PCF_Port.6 I2CSend PCF_Adr , PCF_Port End if Return
PCF8574 (also der Port, wo der Taster angeschlossen ist) immer
auf 0 stehen bleibt ... also kein Interrupt mehr ausgelöst wird.
Grundsätzlich kann' s doch nicht so schwer sein ... . Kann jemand
vielleicht noch mal über den Code schauen?
Gruß: - Reinhard -
Was den INT betrifft, seh ich da nix Böses.
Äh, mir fällt ein, daß Bascom in der 1.117.4 Version Probleme mit den Interrupts hatte. Du hast ja wenigstens 1.11.7.8 oder 9 ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
und sollte der INT nicht auf falling reagieren !?
Wir wärs, als hätte ich in so'nem Datenblatt was davon gelesen !
Lesezeichen