Arduino e MCP23S17

Ciao a tutti, è tutta la sera che provo a far accendere un led a sto cavolo di MCP, niente…
Qualcuno ha uno sketch da farmi provare?

Al momento io sto collegando
MCP-ArduinoNano
VDD-5V
VSS-GND
SO-MISO
SI-MOSI
SCK-SCK
SS-10

e voglio fare in modo che il pin 1, GPBIO(0) accenda un led (ho provato direttamente sia per mezzo di un 2N2222, pensando a problemi di amperaggio)

questo invece il codice…sbaglio qualcosa? ho l’MCP fallato?
PS: ho fatto la prova inserendo anche 0 anziché 1 come numero pin e ho anche provato a mettere high il pin 10

Sono abbastanza certo sia una banalità, ma è la prima volta che lavoro con la SPI e quindi forse sto facendo qualche favolata io…

#include <SPI.h>
#include <MCP23S17.h>

MCP uno (0); //device with A0-A1-A2 connect with GND


void setup(){
  pinMode(10, OUTPUT);
 uno.pinMode(1, LOW);
}

void loop(){
  uno.digitalWrite(1, HIGH);

}

cosa significa questo?

 uno.pinMode(1, LOW);

ma funziona? non l'ho mai visto finora. Ciao Uwe

object_name: the name given when this object was created pin: the pin number (1-16) on which to set as input or output mode: if a pin is specified, either a "HIGH" (1) for input (default) or a "LOW" (0) for output. If a pin is not specified, mode should be a word indicating the mode of each of the 16 I/O pins on the chip.

tratto dal playground, libreria mcp23s17, forse ho capito male cosa si intende, in tal caso è ambiguo, ad ogni modo ho provato anche col tradizionale output/input ma niente

sembra giusto; Che Arduino usi e quali pin? Ciao Uwe

usavo un clone del nano, i pin sono il 10ss 11-12 13sck( che andava perche il led collegato faceva dei minilampeggi). le porte classiche del 328... stasera se riesco a ritagliare un po di tempo provo con l'uno originale arduino

controllato che i pin 15,16,17 ( A0,A1,A2) del chip MCP siano tutti e tre a GND ?

Sisi, controllato. Ora provo con l'UNO. Ma una delucidazione sullo SPI, cosa serve avere sia il CS/SS che l'indirizzo?

mastraa: Sisi, controllato. Ora provo con l'UNO. Ma una delucidazione sullo SPI, cosa serve avere sia il CS/SS che l'indirizzo?

A nulla, è che quel chip può lavorare sia in SPI che in I2C ... e quelli sono i pin per l'indirizzo I2C.

Comunque NON vanno lasciati flottanti, quindi ... segui le indicazioni di Brunello ;)

Guglielmo

EDIT : Pag. 4 del datasheet ... "Hardware address pin. Must be externally biased."

Ragazzi sapevo che era una cavolata, mi ero perso la connessione del reset al 5V!!! l'immagine è troppo grande nella pagina e quindi rimaneva nascosta, per sbaglio ho spostato il mouse e me ne sono accorto :roll_eyes:

ma non ho capito, come quel chip si può collegare in I2C? non è l'MCP23017 quello I2C?

mastraa: ma non ho capito, come quel chip si può collegare in I2C? non è l'MCP23017 quello I2C?

Si, ma se guardi il datasheet ... quei pin sono presenti in entrambe le versioni (... anche se ovviamente NON usati dal SPI) ... ... non chiedermi perché però :grin: :grin: :grin:

Guglielmo

P.S. : Secondo me per ottimizzare i costi di produzione ... Il chip è identico e semplicemente attivano un'interfaccia o l'altra, ma dentro ... ci sono tutte e due ;)

invece no, servono anche per il protocollo SPI, infatti nella libreria l'address lo usava. sto facendo in questo momento blinkare due led su due mcp collegati tutti sull'SS10. uno con tutti i tre address select su gnd e uno con a0 su 5v. i due led sono collegati sul pin con lo stesso numero.

ma a questo punto domando (a me nin servirá perche tanto con le combinazioni possibili con i tre pin sono a posto) ma usando quella libreria come si fa a usare un altro pin al posto del 10? cioe se non ho capito male il CS o SS serve ad 'accendere' lo slave che ci serve no? quindi lo dichiaro output e lo pongo a livello alto quando comunico, poi spengo. siccome nella libreria lui non mi chiede dove l'ho collegato, lui pone il 10 alto sempre?

spero di essere stato chiaro:)

Sto leggendo il datasheet ... strano oggetto ...

Allora, la regola è : ... l'I2C usa un indirizzamento logico trasmesso sul bus, lo SPI usa un pin fisico per selezionare il device con cui vuoi parlare !

Questi hanno fatto [u]un bella porcheria[/u], per il bus SPI usano sia il CS che l'address anche nel protocollo SPI ... .... pagina 8, figura 1-3 :astonished: :astonished: :astonished:

Guglielmo

EDIT : ... e comunque è una cosa abilitabile/disabilitabile ... bit IOCON.HAEN ... pag.17 :grin:

non ho guardato il datasheet e non ho mai usato la verisone SPI, ma a me pare corretto avere anche l'indirizzamento ( sia su I2C che su SPI)

Su I2C sappiamo bene perche' Su SPI, puoi avere fino a 8 chip con un solo CS

Brunello: non ho guardato il datasheet e non ho mai usato la verisone SPI, ma a me pare corretto avere anche l'indirizzamento ( sia su I2C che su SPI)

... NO Brunello, concordo che è sicuramente molto utile e sarebbe bello che ci fosse sempre, ma corretto assolutamente NO ... non è nelle specifiche :astonished:

Guglielmo

Siccuramente non é standard e non é previsto nelle specifiche SPI di poter indirizzare via SW il dispositivo. Concordo che é utile per poter usare fino 8 MCP23Sxx con lo stesso Cs e che non disturba altri dispositivi SPI sullo stesso Bus finche gli altri dispositivi vengono selezionati attraverso altri pin CS. È un estensione SPI "privata" che Microchip ha ideata.

Ciao Uwe