Hallo Leute, hat einer von euch evtl Erfahrung mit der AppNote "AVR311: Using the TWI module as I2C slave" von Atmel? Ich habe mir die Dokumentation angesehen und nach ein bisschen Einarbeitungszeit, steige ich dahinter wie das ganze funktioniert. Einen Problem habe ich aber noch, was ich nicht verstehe: Mein Slave soll mehrere Datenbytes an einem Stück empfangen (Menge wird bestimm aus dem ersten Datenbyte). Maximal sind es 10Byte inklusive Adresse. Wenn ich jetzt das TWI-Modul richtig verstanden habe, springt er bei jeder aktion des TWI in die ISR. Wie weiß ich aber nun in meinem Hauptprogramm, wann die Datenbytes alle vollständig empfangen wurden? Ich möchte ja nicht schon das 3.Byte abfrage, obwohl dieses eigentlich noch garnicht empfangen wurde, also noch ein alter Wert darin steht? MfG Muecke
Du kannst die Funktion " TWI_Transceiver_Busy" benutzen -- die liefert True (d.h. !=0) zurück, sobald sich die ISR abgeschaltet hat, d.h. eine Stop-condion auf dem Bus war. Diese Funktion return'ed gleich, muss also regelmäßig aufgerufen werden (z.B. in der Mainloop). hth. Jörg
Ach so, also wird erst aus der ISR gesprungen, sobald eine STOP-.Condition auf den BUS gegeben wird?
OK. Habe mir die Funktion nochmal genau angeschaut... Mit dem Zusammspiel der anderen Funktionen. Verstehe das jetzt auch soweit. Jetzt habe ich nur ein #include problem. Ich habe die Files TWI_slave.c und TWI_slave.h in meinem Projektordner (AVR Studio4). Jetzt mache ich den Befehl #include "TWI_slave.h" wie in der Beschreibung Implementation beschrieben. Wenn ich jetzt aber eine Funktion aufrufe bekomme ich einen Error: undefined reference to <Funktionsname>. Wenn ich die TWI_slave.c zusätzölich includiere bekopmme ich auch wieder errors mit dem Inhalt, dass ich zwei Definitionen der selben Funktion habe. Aber in dem Besipielprogramm, was debei ist, wird doch auch nur die TWI_slave.h includiert... Wie löse ich diese Problem? MfG Muecke
Du musst die C-Datei zu deinem Projekt hinzufügen. Ich weiß aber nicht welchen Compiler/IDE du nutzt (IAR wahrscheinlich?), aber irgendwo kann man zusätzliche C-Dateien einbinden - include't werden normalerweise nicht. Beim GCC kommen die ins Makefile, bei AVR-Studio unter "external source files". hth. Jörg
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.