I²C und Timerinterrupt

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • I²C und Timerinterrupt

      Mal eine Frage zur praktischen Durchführung, vielleicht hat da jemand bereits Erfahrungen gemacht. Gibt es negative Auswirkungen bei der Verarbeitung von I²C Befehlen (Kommunikation mit PCF 8574), wenn parallel dazu ein Timerrinterrupt ausgeführt wird? In der Timerinterruptroutine wird lediglich ein Portpin getoggelt, was aber mit einer Wiederholrate von bis zu 350µs passieren kann.
      Gruß Christian
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Mit Timerinterupt wird in einem Programm bei mir eine LED im sekundentakt getoggelt.Negative Programmauswirkungen konnte ich nicht beabachten.Wie das allerdings bei 350µs aus schaut kann
      ich nicht beantworten.Ein Bascom-Sps gesteuerter Heimatberg wird mit Atmega 644 betrieben.
      Aufgrund mangelder Ports wird die LCD anzeige 20x4 über I2C betrieben und funktioniert bis jetzt ohne Ausfälle.
    • Das klingt ja positiv, danke. Ich kam bezüglich der 350µs in´s Grübeln, ist halt nicht allzu lange. Ich benötige das für die Ansteuerung mehrerer Schrittmotoren, die im Gleichtakt laufen müssen und vom Programm je nach Bedarf zugeschaltet werden (über den Enableeingang der Steuermodule). Ich hätte den Grundtakt auch konventionell zur Verfügung stellen können, so kann ich die Geschwindigkeit dann aber über die Terminalplatine steuern, die die benötigten Ein- und Ausgänge ja über I²C zur Verfügung stellt..

      Gruß Christian
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Hallo Christian,
      Mit Bus mit zu fahren ist leichter als Bus zu lenken.
      Somit die wichtigste Frage für mich.
      Nutzt du die Software- oder Hardwareversion.

      Michael schrieb:

      Das I2C Protokoll ist ein synchrones Protokoll, es bringt seinen Takt mit.
      Dadurch kann es jederzeit verlangsamt oder unterbrochen werden.
      Ist auch abhängig von dieser Meinung.
      Stichwort: TWI.
      Gruß Fred
    • Was soll das Stichwort uns sagen? Heißt es doch:
      Some manufacturer call it TWI (Two-Wire-Interface) which is technically the same as I2C.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Bitte beachtet mal, dass auch eine Anfrage meinerseits, auch hilfreich zu Thema sein könnte.
      Na gut wenn keine Antwort vom Thema- Master kommt , hat er wohl eine Lösung gefunden.

      Aber.

      tschoeatsch schrieb:

      Was soll das Stichwort uns sagen?

      Die Hersteller bauen doch nicht extra für uns einige Register für Hardware- Version ein, um unsere „Spielerein“ zu erleichtern. Nein bei jedem CPU oder AVR wird, für Industrieanwendungen, dafür gesorgt das Softwarefehler, nicht die Hardware „lahm gelegt wird“. Es sei denn der Programmierer macht es unwissentlich oder sogar immer öfters durch Falschinformationen.
      Hersteller sagt: „Pech gehabt wenn Futsch“ Die Hardwareschalter mit Software zu verbiegen ist der kleine Nachteil von BASCOM.

      So.

      Softwareversion:
      Der AVR kann in dieser Zeit keine anderen Aufgaben erledigen.
      Bei dieser Art I2C zu implementieren wird eine aktuelle Aktivität auf dem Bus nicht beachtet, dies kann zu Problemen führen falls mehr als ein Master am Bus hängt.

      Hardwareversion:
      AVR Controller, die I2C hardwaremäßig unterstützen, haben das TWI –Register für Data und Clock.
      Damit Bascom das TWI verwendet muss die [i2c_twi.lib] eingebunden werden. Der Vorteil von TWI ist, dass es in Multimasterumgebungen viel zuverlässiger ist.
      Bascom berechnet aus der angegebenen Taktfrequenz den richtigen Wert für TWBR um, um an den gewünschten I2C-Takt zu kommen.
      Der Master bestimmt wie schnell die Daten auf dem Bus übertragen werden.
      Der Programmierer muss nicht dafür sorgen das es nicht zu einem Clock _ Stretching kommt.
      Dafür ist Config TWI zuständig.
      Nun ist es halt so mit BASCOM. In welcher Zeile wird ein Interrupt aktiviert oder wird er gleich im „Kopf“ gestartet.

      Kann zwar das Rätsel nicht lösen. Aber eins bin ich mir sicher. In der Hardware haben die Entwickler sehr großen Wert darauf gelegt, wer wo und was wann in ein Register, lesen oder schreiben darf.
      Ja das INT- Register regelt den Verkehr.
      Ist nicht pornografisch gemeint...... =O

      Mit freundlichen Grüßen
      Fred

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von fredred ()

    • Fredred, du schrammst am Thema vorbei.
      Es geht darum, ob I2C oder TWI durch einen Interrupt unterbrochen werden kann, speziell in Verbindung mit einem PCF8574.
      Bitte lies dazu nochmal den ersten Beitrag.

      I2C (=TWI) kann jederzeit unterbrochen werden, mitten im Takt, wenn es sein muss.
      Weil immer nur der Master den Takt macht.
      Das ist der Vorteil von synchronen Schnittstellen.
    • fredred schrieb:

      Na gut wenn keine Antwort vom Thema- Master kommt , hat er wohl eine Lösung gefunden.
      Der "Thema- Master" bin ja ich gerade, glaube ich a_56_df238249 . Nun, wenn vom Thradersteller mal nicht sofort eine Rückmeldung kommt, ist der eventuell offline. Bei mir war das jedenfalls so.
      Also, es geht mir lediglich um den Einfluß des Interrupts auf den I²C- Bus. Es gibt keinen Multimasterbetrieb und auch kleinere Verzögerungen im Programm sind unkritisch. In meinem Antwortpost habe ich auch die Anwendung etwas beschrieben, weil manchen auch Hintergrundinformationen interessieren.
      Wenn das alles funktioniert, stelle ich das Ergebnis auch hier ein, dauert aber etwas, da das "Drumherum" etwas umfangreicher ist. Dafür wird es was hübsches smileys-beschaftigt-965231

      Gruß Christian
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.
    • Michael schrieb:

      Fredred, du schrammst am Thema vorbei.
      Es geht darum, ob I2C oder TWI durch einen Interrupt unterbrochen werden kann, speziell in Verbindung mit einem PCF8574.
      Bitte lies dazu nochmal den ersten Beitrag.

      Danke für Hinweis.
      Den ersten Beitrag wohl gelesen. Aber woher weist Du das er TWI nutzt?

      Anfrage:
      Kennst du dich wirklich aus wie ein gut programmiertes Bussystem funktioniert ?
      Es ist erst mal Wurst welcher Bus ob I2C oder was auch immer gestartet wird. Erst mal werden alle Teilnehmer abfragt ob diese angesprochen werden. Meldet sich keiner, na dann okay. Aber niemals kann in einer guten Programmierung(ob ASM, C+ oder C++, usw.) diese Abfrage unterbrochen werden. (Die Hardwarelinie im PC- Bereich waren und sind bis heute so aufgebaut).
      Mit meinen Worten. „Ich frage den KerlPCF8574 am I2C wer bist Du. Ist er stinkig (oft Hardwarefehler) und antwortet nicht gleiche, werde ich den Doofen erst mal nicht mehr ansprechen. Ja das ist oft das Problem, der Bus muss so schnell wie möglich wieder für andere Aufgaben deaktiviert werden und nicht bis auf ein ACK zu warten.

      Nach Hinweis von Michael. Sollte ich niemals sagen, wie ein Bus sicher gefahren werden kann.
      Grob gesagt, liebe Progger, es ist und bleibt immer der Ort wo ein Software- Interrup, ein Hardware- Interrupplatt machen kann.
      Aber zu 100% ist die Hardware- Schiene immer die bessere.

      Gruß
      Fred
    • fredred schrieb:

      Danke für Hinweis.
      Den ersten Beitrag wohl gelesen. Aber woher weist Du das er TWI nutzt?

      tschoeatsch schrieb:

      Some manufacturer call it TWI (Two-Wire-Interface) which is technically the same as I2C.

      ceperiga schrieb:

      Gibt es negative Auswirkungen bei der Verarbeitung von I²C Befehlen
      Wenn das die Lösung ist, möchte ich mein Problem wieder haben.