Guten Tag ich habe Folgendes Problem,Verständnissfrage mein programm sendet 2KByte an daten über den i2c zu einem eeprom wärend dieses vorganges ca 6sec kann es sein das ich einen interrupt bekomme ! welcher wiederum den i2c benutzt um 2datenpakete an einen anderen baustein am i2c zusenden! nun meine frage : at90s8515 24lc16 und pcf8574 im einsatz wie wird das auf dem stack verarbeitet verliere ich da was speziell die adressen oder daten ! kann ich das bedenkenlos so betreiben !
Lothar Sammel wrote: > wie wird das auf dem stack verarbeitet verliere ich da was speziell die > adressen oder daten ! Wenn Du das selber nicht weißt, dann hast Du das I2C wohl nicht programmiert oder die Source gelesen, sondern nimmst eine I2C-Blackbox, ich tippe mal auf Bascom. In diesem Fall solltest Du erstmal die Doku zu der I2C-Blackbox lesen. > kann ich das bedenkenlos so betreiben ! Generell erstmal ein dickes NEIN ! Man kann Interfaces prinzipiell nicht durcheinander sprechen lassen. In größeren OS gibt es deshalb spezielle Routinen, um ein Interface anzufordern, zu benutzen und wieder freizugeben. In Deinem Fall wird es aber das einfachste sein, ein 2.I2C in Software zu machen, dann hat jeder Prozeß sein I2C exklusiv für sich. Eine elegantere Lösung ist es, das I2C selber als Interrupt zu machen und 2 Puffer dafür zu verwalten. Und der Interrupt weiß dann genau, wann er die pcf8574-Sachen zwischen die 24lc16-Sachen schieben kann. Das entlastet dann erheblich die CPU, weil das Warten im Interrupt entfällt, bis das I2C fertig ist. Peter
Hallo, warum gleich die Flinte ins Korn werfen ? Ich plädiere für ein dicke JAIN. Zwar hast du deine Schaltung nicht konkret beschrieben, da aber der PCF8574 von Natur aus ein Slave ist, kann er nicht selbst aktiv werden. Wenn also von einem Interrupt die Rede ist, dann kann es sich doch wohl nur um den Interrupt auf einer separaten Leitung handeln (wenn Ports am PCF8574 von aussen geändert werden - z.B. durch einen Schalter - dann löst er an seinem Interrupt-Ausgang ein Signal aus). Diesen Interrupt (z.B. als INT0) sollte der Master trotz laufender TWI-Übertragung erkennen können und ein Flag setzen. Nachdem das Eeprom beschrieben ist, muss geprüft werden, ob ein Flag gesetzt ist - und wenn ja, dann wird der PCF8574 adressiert und seine Ports abgefragt. Ein Problem könnte natürlich sein, dass die Reaktion auf den Interrupt (des PCF8574) mit einiger Verzögerung erfolgt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.