- Labornetzteil AliExpress         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 24

Thema: Interrupt und PCF8574

  1. #11
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Anzeige

    LiFePo4 Akku selber bauen - Video
    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.

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    @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...

  3. #13
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.04.2004
    Ort
    Gronau
    Beiträge
    155
    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 ...

  4. #14
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    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 Zitat von Picnick to MCS
    2. INT3
    ATMEGA128
    There is a severe error in Bascom 1.11.7.8 with the setting of the sense-mode-Bits of INT3

    2.1. Source

    $crystal = 16000000
    $regfile = "M128def.dat"

    Config Int0 = Falling
    Config Int1 = Rising
    Config Int2 = Falling
    Config Int3 = Falling

    2.2. Disassembling

    00C0 LDS r24,EICRA
    00C4 ANDI r24,$FC ' 11111100 ISC01 ISC00
    00C6 ORI r24,$02 ' 00000010 correct „falling edge“
    00C8 STS EICRA,r24
    ‚------------------------------------------------------------

    00CC LDS r24,EICRA
    00D0 ANDI r24,$F3 ' 11110011 ISC11 ISC10
    00D2 ORI r24,$0C ' 00001100 correct „rising edge“
    00D4 STS EICRA,r24
    ‚------------------------------------------------------------

    00D8 LDS r24,EICRA
    00DC ANDI r24,$CF ' 11001111 ISC21 ISC20
    00DE ORI r24,$20 ' 00100000 correct „falling edge“
    00E0 STS EICRA,r24
    ‚------------------------------------------------------------

    00E4 LDS r24,EICRA
    00E8 ANDI r24,$3F ' 00111111 ISC30 ISC31

    00EA ORI r24,$40 ' 01000000 ISC30 !

    00EC STS EICRA,r24
    ‚------------------------------------------------------------

    INT2, ISC20 is now correct (1.11.7.4 failed here)

    For INT3, ISC30 has been set. This Mode is „reserved“
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #15
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.04.2004
    Ort
    Gronau
    Beiträge
    155
    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 -

  6. #16
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Wie gesagt, du kannst ja nach dem Config die Int-Register zu Fuß setzen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.04.2004
    Ort
    Gronau
    Beiträge
    155
    @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 -

  8. #18
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    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.

  9. #19
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.04.2004
    Ort
    Gronau
    Beiträge
    155
    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:

    Code:
    IF PCF_Port.0 = 0 Then
       'Tastenstatus zurücksetzen
       Set PCF_Port.0
       I2CSend PCF_Adr , PCF_Port
    End If
    dann geht's. Finde ich schon mehr als seltsam.

    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 -

  10. #20
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    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.

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress