SCK, MISO, MOSI doppelt besetzen

Guten Morgen Vor ein paar Tagen ist bei mir der RC255 RFID angekommen. An sich funktioniert das ganze auch, nur möchte ich nun die Informationen übers Netzwerk verschicken. Dabei habe ich an einen Webserver gedacht, der einfach nur 1 oder 0 anzeigt. An sich ist das auch kein Problem nur der RFID braucht genau so wie das Ethernet Shild die Pins: MISO, MOSI und SCK. Habe natürlich auch schon gegoogelt und auch herausgefunden, dass es Möglich ist diese Pins doppelt zu belegen. Nun ja ok habe also Lustig drauflos geschrieben und das Ganze auf den Arduino gespielt. Aber Fehlanzeige: Ich bekomme weder eine Verbindung zum Server und auch der RFID Reader zeigt sich sehr unbeeindruckt. Habe das ganze aml auf Google Docs hochgeladen: https://code.google.com/p/rfid-reader-ethernet/source/browse/trunk/rfid_code_test.ino

Der SPI Bus kann mehrfach verwendet werden. Jedes angeschlossene Device braucht aber seinen SS (EN) Pin. Bei der Ethernetkarte wird das ja schon gemacht. Pin 10 SS für den ethernetchip, Pin 4 für die SS der SD-Karte. Grüße Uwe

Jap den gibt es auch beim Reader. Der war standardmäßig auch auf 10 gesetzt. Hatte ihn einfach mal auf 9 gesetzt.

Keiner eine Idee, warum beides zusammen nicht funktioniert?

Eng89: Keiner eine Idee, warum beides zusammen nicht funktioniert?

Hallo,

oben wurde ja schon geschrieben, dass jedes Gerät einen eigenen Chipselect benötigt. In Deinem Code habe ich z.B. folgendes entdeckt:

const int chipSelectPin = 9;
.
.
.
pinMode(chipSelectPin,OUTPUT); // Set digital pin 10 as OUTPUT to connect it to the RFID /ENABLE pin

Wenn dieses RFID-Modul den Chipselect wirklich an Pin 10 braucht, so wie der Kommentar vermuten lässt, kann es ja so nicht funktionieren.

Schau mal selbst über Deinen Code, ob jedes Gerät einen eigenen Chipselect hat und ob dieser auch am korrekten Pin liegt bzw. korrekt verkabelt ist.

Gruß, Ralf

hi,

im setup:

pinMode(chipSelectPin,OUTPUT); // Set digital pin 10 as OUTPUT to connect it to the RFID /ENABLE pin    
digitalWrite(chipSelectPin, LOW); // Activate the RFID reader   
pinMode(NRSTPD,OUTPUT); // Set digital pin 5 , Not Reset and Power-down    
MFRC522_Init();
pinMode(7,OUTPUT);  
inputString.reserve(200);   
Ethernet.begin(mac, ip);   
server.begin();

der chipSelectPin wird nicht wieder auf high gezogen, das heißt, die initialisierung des ethernetshields kann nicht stattfinden, weil ja RFID-reader UND ethernet aktiviert sind. bei den späteren funktionen Write_MFRC522 und Read_MFRC522 wird das schon gemacht, aber andererseits sehe ich etliche anderen funktionen, die etwas mit MFRC522 machen, wo das nicht passiert. zb in der loop ein MFRC522_Request. mir ist echt nicht ganz klar, wie das funktionieren soll... nach dem ersten aufruf von Write_MFRC522 oder Read_MFRC522 kann ja keine andere funktion mehr auf den reader zugreifen.

gruß stefan

Guten Tag Zuerst: Der Code zum auslesen des Readers ist nicht von mir sondern vom Verkäufer. @Schachmann Nein der Reader braucht nicht unbedingt Pin 10. Es funktioniert auch mit Pin 9. Dies habe ich einfach ausprobiert -> Nur die Software zum lesen aufgespielt.

@Eisebaer Mhh Okey habe den Code jetzt nochmal neu und ein wenig "Ordentlicher" aufgeschrieben. Jetzt funktioniert der Webserver, allerdings gibt die Kartensuche:

status = MFRC522_Request(PICC_REQIDL, str);

Immer nur "2" zurück (2 = Keine Karte gefunden, 1 = Karte gefunden aber wird nicht unterstützt, 0 = Karte gefunden und Kann gelesen werden).