Tengo cinco chips SPI SRAM, que quiero eliminar de un solo Arduino. He visto configuraciones como esta, que comparten SCLK
, MOSI
y MISO
, con SS
pins separados:
(imagencortesíadeWikipedia)
Sinembargo,megustaríaevitarusarcincopinesparahabilitarSS
porseparado.Estoyconsiderandousaruncontadorparaseleccionarlosdiferentesesclavos,asíquepuedoreducirlacuentaa2pines.
Laideaesusardospinesparaladirecciónyelrelojdelcontador.Elcódigoseveríaalgoasí:
intcurrentSlave=1;//onsetupI'llsetthecounterto1voidSelectSlave(intid){//errorcheckingif(id<1||id>5)Serial.writeln("Invalid slave ID passed to SelectSlave.");
// calculate the ID difference
int diff = abs(id - currentSlave);
if (diff == 0) return; // no need to do anything
if (id > currentSlave) set(CTR_DIRECTION); // increment
if (id < currentSlave) clear(CTR_DIRECTION); // decrement
// calculate the number of clock pulses to send to the counter
int pulses = 0;
if (id > currentSlave) pulses = (1 << (id - 1)) - (1 << (currentSlave - 1));
if (id < currentSlave) pulses = (1 << (currentSlave - 1)) - (1 << (id - 1));
// send the clock pulses
for(int i = 0; i < pulses; i++)
{
set(CTR_CLOCK);
delay(1);
clear(CTR_CLOCK);
delay(1);
}
}
Tengo algunas preguntas:
- ¿Hay algún problema relacionado con la activación y desactivación de varios
SS
pins durante el período de recuento provisional? - ¿Puedo confiar en (la mayoría) de los contadores configurados en cero cuando se encienden por primera vez?
- ¿Hay otras / mejores formas de reducir el número de pines en este tipo de configuración?