Cambiare i pin SPI di ARDUINO UNO con ARDUINO MEGA

Salve,spiego brevemente il problema. Ho una smartshield arduino che lavora su SPI,e' perfettamente compatibile con ARDUINO UNO,ma per esigenze di progetto,dovrei farla funzionare con ARDUINO MEGA.Il problema e' che le librerie della shield sono settate sui pin standard SPI di ARDUINO UNO (SCK=13,MISO=12,MOSI=11,SS=7),io invece dovrei farla funzionare con i pin SPI del MEGA (SCK 52,MISO 50,MOSI 51,SS 7) . Come potrei fare?
Grazie.

Un link al prodotto ed all alibreria aiuterebbe a capire se intanto il produttore ne certifica la compatibilità con la Mega, perché non è detto che solo cambiando i pin nei file della libreria il codice possa poi essere compilato con successo e poi fatto funzionare sulla Mega.

Se funziona sulla UNO con i pin 11-12-13 e la libreria non cambia, sulla mega non fa differenza

Se parliamo solo di SPI, sì.

leo72:
Se parliamo solo di SPI, sì.

e se la shield usa il connettore centrale ICSP a 6 pin.

Ciao Uwe

uwefed:

leo72:
Se parliamo solo di SPI, sì.

e se la shield usa il connettore centrale ICSP a 6 pin.

Ciao Uwe

funziona lo stesso

Altrimenti la domanda è preventiva, non ha ancora provato.

  • se la piazziamo sui 6 pin ICSP il compilatore sa che la scheda prescelta è la MEGA e adegua il software SPI con i vari define
  • l'utente sa già che i pin che gli servono sono .... MEGA SCK 52,MISO 50,MOSI 51 e li potrebbe cambiare manualmente se non usa il connettore
    Aspettiamo chiarimenti.

Intanto grazie a tutti per le risposte,si ho gia provato,ma niente..non funziona...la scheda in questione e' questa:
[http://www.elettroinnova.it/]]http://www.elettroinnova.it/](http://)

http://www.elettroinnova.it/

La libreria fa L'SPI.begin come su tutti gli shield che funzianano su entrambi i modelli
e imposta il pin SS con Smartcard(7)

Smartcard::Smartcard(int slaveSelectPin)
{
  // initialize SPI:
  SPI.begin(); 
  SPI.setDataMode(SPI_MODE0); 
  SPI.setClockDivider(SPI_CLOCK_DIV128); 
 
  // configure slave select pin
  pinMode(slaveSelectPin,OUTPUT);
  digitalWrite(slaveSelectPin,HIGH);
  _slaveSelectPin = slaveSelectPin;
 }

che IDE usi?
Sei sicuro che quella scheda funzioni sulla UNO, cioè tu l'hai vista funzionare con quel software?
Hai altri shield tra arduino e lo Smartcard?

Ho l’ide 1.5.6- R2. Si con Arduino Uno funziona perfettamente!Non ho altre shield connesse!

Come ti hanno già detto, non avendo il connettore ICSP quella shield non può funzionare nella MEGA.
Devo prendere dei cavetti Jumper e poi connettere i pin 51,52,53 ai pin 11,12,13 tramite i cavetti.
Naturalmente poi non dovrai usare i pin 11,12,13 per altre funzioni; anzi per evitare corti settali come ingressi, anche se poi non andrai a leggerli.

Quindi se ho capito bene devo creare dei ponticelli direttamente dalla smart shield ad arduino collegando con un cavetto il pin 13 col 52,il 50 col 12 il 53 col 10 ecc...e poi settando quelli relativi ad arduino uno come input.A livello software devo fare qualche modifica?

Praticamente si tratta di fare 3 ponticelli senza separare le schede sovrapposte.
Dovresti piegare leggermente i pin 11-12-13 verso l’esterno in modo da non farli entrare nel connettore sottostante e poi fare tre ponticelli come mostra la tabella http://arduino.cc/en/Reference/SPI

11 ----------- 51
12------------50
13------------52
SS master rimane il 7

Oppure si come ti ha detto Paolo settarli come INPUT (abbiamo scritto insieme :slight_smile: ) però non so quanto si influenzino con esattezza i 6 pin tra loro, alcune volte ho letto che lavorano in parallelo, bisognerebbe fare chiarezza su questo argomento

Comunque visto che non usa ICSP secondo me sarebbe possibile portare tramite software l'SPI sui pin 11-12-13, ti tocca però rovistare nelle lib