Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Mengenmessung via I2C Kategorie: I²C-Bus (von Franz Stefan - 13.02.2009 0:40)
Als Antwort auf Re: Mengenmessung via I2C von StefanM - 12.02.2009 20:10
Ich nutze:
C-Control II Station, CC2-Application-Board, OSOPT V3.1
> Nachtrag:
>
> Habe nach Deiner Nachricht genau das Passende bei Andre im Shop entdeckt.
> "I2C-CNT8 - 8Bit Zählermodul für den I²C-Bus"
>
> Da steht in der Beschreibung irgendwas von Interrupt-Ausgang. Was ist den das beim I2C Bus?
> Kann ein Gerät beim I2C Bus einen Interrupt beim Steuergerät auslösen? Wenn ja, wie fange
> ich den denn SW-technisch ab?
>
> Kommt so ein Interrupt dann auch durch die I2C Transciever/Extender durch?
>
> LG Stefan
>

Hallo,
vorab, die Interrupt Leitung, geht am I2C Extender vorbei. Das sollte kein Problem sein,
wenn Du nicht starke Störquellen daneben hast. In einem Cat5 Kabel sollte sich alles
ausgehen,  (+5, +12, Gnd, SCL, SDA, INT).
Ich habe was ähnliches mit 2Stk 1821 und 3 PCF8574 gerade am Tisch zum Testen
stehen, allerdings nicht mit einem Durchflu�zähler, sondern mit Magnetkontakten...

Die Interruptleitung (Pullup nicht vergessen) geht an einen Port der Station, ich habe mich
für P7 entschieden, da keine besonders hohe Anzahl von Ints zu erwarten ist.

Bei deinem Durchflu�geber schaut es vermutlich ähnlich aus. Ich habe an der Solaranlage
einen, der bei voller Drehzahl beider Pumpen etwa alle 7 Sekunden einen Impuls gibt.
Dazwischen könnte man ohnhin nur interpolieren.

Mein Testprogramm habe ich so gebaut, dass es einen Thread PCFMain gibt, der nur auf den
Interrupt wartet, und dann einen 2. Thread, PCFMon, resumed:

thread PCFMain
{
  wait (initdone==1);
  run PCFMon;
  loop
   {  // wait for !INT
     wait !ports.get(15);  // P7
     resume PCFMon;
   }
}

   
PCFMon klappert bei mir alle Adressen ab, weil ich ja mehrere INTs parallel geschaltet habe.
Der 8574 setzt den INT zurück, wenn er ausgelesen wird.  
Zum Einlesen von nur einem PCF8574 würde das in etwa so aussehen:

thread PCFMon
{
  // byte pcfaddr, lastoo;   // defined global
  byte oo ;
  loop
  {
   oo = pcf.in(pcfaddr);
   if oo != lastoo
      {
        // hier wird ausgewertet
        // ...
        // zuletzt noch den neuen Wert merken
        lastoo = oo;
      }
    }
   halt;   // done, will be resumed by pcfmain
   }
}


    Antwort schreiben


Antworten:

Re: Mengenmessung via I2C (von Stefan - 11.01.2010 22:27)
    Re: Mengenmessung via I2C (von Franz Stefan - 13.01.2010 15:17)
        Re: Mengenmessung via I2C (von Stefan - 13.01.2010 17:11)
    Re: Mengenmessung via I2C (von Markus P. - 12.01.2010 0:17)
        Re: Mengenmessung via I2C (von Stefan - 13.01.2010 11:47)
            Re: Mengenmessung via I2C (von Markus P. - 14.01.2010 0:10)