@PicNick,
ich mein ja nicht wegen dem Mega, sondern wegen dem PCF sollte man auf falling reagieren,
rising macht der INT ja erst wenn man den PCF dann ausliest.
oder...![]()
Der Mega kann das schon. Nur in der .4 Version vom Bascom wurden die entsprechenden Flags nicht richtig gesetzt. Wenn das bei dir so ist, mußt du NACH dem config.. falling selbst die "falling/rising" bits lt. Datasheet setzen.
Überprüf es einfach im Simulator. der Config ist ja eh' ganz vorne.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
@PicNick,
ich mein ja nicht wegen dem Mega, sondern wegen dem PCF sollte man auf falling reagieren,
rising macht der INT ja erst wenn man den PCF dann ausliest.
oder...![]()
Hallo PicNick & linux_80,
ich habe die aktuelle Bascom-Version (.9). Mit "Falling" hat der
Interrupt nicht funktioniert. Hatte ich erst, siehe ganz oben ...
Was ich nicht verstehe ist, dass das Taster-Bit auf 0 geht und
da bleibt ... es sei denn, ich setzt das Bit einfach wieder auf 1.
Aber das kann's ja wohl nicht sein ...
Kann das vielleicht ein Timing-Problem sein? Bei mir ist es so,
das zwischen M128 und dem PCF8574 (derzeit noch auf Test-
board) ein 1m langes, geschirmtes Netzwerk-Patchkabel ver-
legt ist.
Andererseits habe ich auch schon Frank's RN-KeyLCD per I2C
und dem gleichen Kabel betrieben. Das funktionierte einwand-
frei.
Schon komisch das ganze ...
Wir reden aneinander vorbei. Mit EINEM PCF ist natürlich "falling" angesagt. "rising" ist für dich nicht interessant.
Was ich meinte, ist, das der Bascom überhaupt probleme (hatte) irgendwas anderes als LOW-LEVEL zu setzen.
Für die INT0-3 hatt ich das damals überprüft. Deswegen mein' ich, du solltest sichergehen, ob der Bug noch besteht
Zitat von Picnick to MCS
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hallo PicNick,
ich glaube mittlerweile auch, dass das Verhalten wohl ein Bug
in Bascom ist.
Ich habe jetzt "Falling" statt "Rising" genommen (wie es
auch korrekt ist, siehe Programm von gestern) und dabei
wird die Serviceroutine für INT5 genau 1-mal ausgeführt.
Mit INT4 exakt das gleiche Verhalten. Mir bleibt wohl nichts
anderes übrig, als die Tasten in einer Timer-Routine zu
prüfen ...
Gruß: - Reinhard -
Wie gesagt, du kannst ja nach dem Config die Int-Register zu Fuß setzen.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
@PicNick,
kannst Du mir dabei behilflich sein? Um die Register habe
ich bislang 'nen großen Bogen gemacht ....
Welche Register muß ich bedienen? Bzw. was "vergisst"
Bascom zu setzen?
Gruß: - Reinhard -
Für INT4 bis INT7 ist "EICRB" zuständig
INT5 einstellen:
EICRB = EICRB AND &HF3 ' flags Löschen = low level
EICRB = EICRB OR &H08 ' Falling
oder
EICRB = EICRB OR &H0C ' rising
oder
EICRB = EICRB OR &H04 ' rising & falling
alles andere läßt du ganz normal den Bascom machen
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Macht keinen Unterschied ...
Egal, ob per Config ... oder direktes setzen des EICRB-Registers:
der Interrupt wird einmal ausgeführt und das war's dann.
Wenn ich am Ende der Do ... Loop folgendes hinzufüge:
dann geht's. Finde ich schon mehr als seltsam.Code:IF PCF_Port.0 = 0 Then 'Tastenstatus zurücksetzen Set PCF_Port.0 I2CSend PCF_Adr , PCF_Port End If
Ich gehe den Aufbau noch mal durch:
- Taster an PCF8574 gegen Masse
- PullUp am INT-PCF gegen VCC
- Verbindung INT-PCF -> INT5-M128
Ist das so überhaupt richtig?
Gruß: - Reinhard -
Der Taster am PCF hat aber schon auch einen Pullup ? Ich kann im DS keinen eingebauten erkennen.
Wie sind die andern PCF-I/O pins beschaltetet ?
Der Ablauf sollte der folgende sein:
1 PCF-Pins high oder low / INT5 Leitung high ---> Messen !
2 PCF Pin Änderung
3 INT5 -> LOW ---> Messen !
4 Interrupt
5 Read PCF-Pins
6 INT5 -> HIGH ---> Messen !
---> wieder bei State #1
Mach dein Programm so, daß du die jeweiligen Zustände stabil hältst und messen kannst.
d.h. zuerstmal machst enablest du keine Interrupts, dadurch kannst du bis #3 in Ruhe checken
Wenn es bis dahin paßt, enablest du und liest den PCF aus ---> check bis #6
In dieser Sequenz mußt du genau EINEN Interrupt haben.
Nu ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Lesezeichen