-
        

Ergebnis 1 bis 7 von 7

Thema: INT am PCF8574 löschen (GNU-C)

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    26.03.2006
    Beiträge
    78

    INT am PCF8574 löschen (GNU-C)

    Anzeige

    vielleicht kann mir jemand helfen....
    habe keine Ahnung wie ich den INT am PCF 8574 zurücksetzen kannst (im Lesemodus) damit ich auf eine neuerliche Änderung am PCF reagieren kann. Pin 12 des PCF ist mit den INT1 des µP verbunden, den ich über einen Pullup nach high gezogen habe.
    I2C zum Schreiben funktioniert bereits, nur das Lesen habe ich noch nicht im Griff, bzw. Löschen des INT am PCF8574!
    Danke Papua

    PS: Bin ich da überhaupt richtig am Weg?????

    #define READ_ADRESSE_1 0x41 // Lese - Adresse
    #include <avr/io.h>
    #include <util/delay.h>
    #include <avr/interrupt.h>

    // wartet ms Millisekunden
    void delay_ms(uint16_t ms)
    {
    for(uint16_t t=0; t<=ms; t++)
    _delay_ms(1);
    }
    ISR (INT0_vect)
    {
    hier sollte der Code zum Löschen des PCF Interrupt steht, nur wie geht das????????
    }
    //lesen der PCF's Adresse
    i2c_start_wait(READ_ADRESSE_1+I2C_READ);
    wert = i2c_readNak();
    i2c_stop();
    delay_ms(30);

    };

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    ... habe keine Ahnung wie ich den INT am PCF 8574 zurücksetzen kannst (im Lesemodus)
    Durch einen zweiten Lesezugriff auf den Port.

    Gruß Dirk

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    26.03.2006
    Beiträge
    78
    Danke Dirk,
    es ist der Schreibbefehl der das INT am PCF8574 löscht!
    Dank dir
    was noch nicht ganz funktioniert ist das Lesen aus dem PCF 8574.
    Habe ich da noch was vergessen im Code? Normal sollte in der Variablen "wert" der Zustand der Port Pin's am PCF wiedergegeben werden, oder?
    Papua

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    06.11.2006
    Beiträge
    1.078
    Hallo
    Sowohl ein Lese- als auch ein Schreibzyklus setzt den INT Ausgang zurück.
    Also z.B INT erkannt, daraufhin Port gelesen, INT ist wieder gelöscht.
    Auch die Wiederherstellung des ursprünglichen Zustandes des Ports löscht INT.
    Mit freundlichen Grüßen
    Benno
    Wo man nicht mit Vernunft handelt, da ist auch Eifer nichts nütze; und wer hastig läuft, der tritt fehl.
    Ein König richtet das Land auf durchs Recht; wer aber viel Steuern erhebt, richtet es zugrunde

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    26.03.2006
    Beiträge
    78
    Danke Benno;
    Leider habe ich das Lesen noch nicht im Griff...
    Vielleicht kannst du mir da noch einen guten Tipp geben....
    Oben steht mein Code zum Lesen der PCF's..
    Danke Papua

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    ... was noch nicht ganz funktioniert ist das Lesen aus dem PCF 8574. Habe ich da noch was vergessen im Code?
    Keine Ahnung. Das Problem ist der "I2C-Dialekt", den ich nicht spreche.

    Gruß Dirk

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    06.11.2006
    Beiträge
    1.078
    Hallo
    Ich habe keine Ahnung, wie das Programm abläuft.
    Warum
    READ_ADRESSE_1+I2C_READ);
    ?
    0x41 ist doch bereits die "Leseadresse".

    Mit freundlichen Grüßen
    Benno
    Wo man nicht mit Vernunft handelt, da ist auch Eifer nichts nütze; und wer hastig läuft, der tritt fehl.
    Ein König richtet das Land auf durchs Recht; wer aber viel Steuern erhebt, richtet es zugrunde

Berechtigungen

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