Weiteren SPI-Slave neben Ethernet-Shield

Hallo,

wie auf http://arduino.cc/forum/index.php/topic,160857.0.html schon beschrieben, plane ich gerade die Einkaufsliste für ein kleines Projekt mit Außenthermometer, dessen Temperaturen ins Netzwerk eingespeist werden sollen. Mein Problem ist jetzt, dass ich ein Ethernet-Shield plus ein NRF24L01 - Funkmodul nebeneinander laufen lassen muss, welche beide mittels SPI mit dem Arduino kommunizieren. Wie schaffe ich es, dass ich jede Stunde (einmal pro Stunde eine Temperatur zur Einfachheit halber) einmal auf den NRF24L01 schalte und die restliche Zeit auf das Ethernet-Shield? Meine Recherche ergab, dass ich wohl mit dem SS-Pin (Slave Selected am Uno auf Pin 10) arbeiten muss, und diesen dementsprechend manipulieren muss. Außerdem nimmt sich das Ethernet-Shield mit dem Command "Ethernet.begin()" den SS-Pin.

Hat jemand schon Erfahrung mit mehreren SPI-Geräten am Arduino, evtl. speziell auf Ethernet-Shield und NRF24L01 bezogen?

Vielen Dank für eure Hilfe!

Gruß
emexy

hi,

die ethernet-bibliothek "übernimmt" SPI, wenn sie ihn braucht, indem sie pin 10 setzt. danach gibt sie wieder frei. wenn Du den SD-slot auf dem shield benutzt, wird pin 4 gesetzt, und SPI für den slot genutzt. Du kannst einen beliebigen pin für dein NRF24L01 aussuchen und mit den SS/CS/DS-anschluß des NRF24L01 verbinden (da werden die bezeichnungen verschieden vergeben). und die geräte nicht durcheinender benutztn...

gruß stefan

Hallo Eisebaer,

klingt für mich ja schon ganz gut. D. h. wenn ich "client.stop()" (oder wird die Ethernet-Verbindung anders geschlossen) habe, setzt er PIN 10 frei, und mein Funkmodul kann dann mittels SPI kommunizieren? Rein theoretisch könnte ich dann jede Stunde einmal die Ethernet-Verbindung schließen, das Funkmodul einbinden. Und nach ein paar Minuten, wenn der Funkverkehr beendet ist, Ethernet wieder online schalten? Muss ich dann in den Libraries ( Mirf für NRF24L01 und die Ethernet) irgendetwas besonderes ändern, oder kann ich den Beispielen für beide Teile folgen, und muss nur schauen, dass sie sich nicht in die Quere kommen?

Gruß
emexy

hi,

will mir jetzt nicht wieder alles anschauen, aber wenn ich mich recht erinnere, mußt Du kein client.stop machen, sondern nur darauf achten, daß Du ethernet nicht benutzt. das heißt, pin 10 wird bei jeder funktion der ethernet-bibliothek gesetzt und wieder zurück. wenn Du keine ethernet-funktion verwendest, kommt auch nichts in die quere.

gruß stefan