Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
void Leer_SPI(char *Valor, int n, int f)
{
int i;
for(i = 0;i < n;i++)
{
spi_write(f);//Envío un numero que el esclavo interpreta como una instrucción donde le digo que arreglo quiero leer
delay_ms(5);//Sin estos retardos no me funciona el programa
spi_write(i);//Envío un numero que el esclavo interpreta como la posición del arreglo que quiero leer
delay_ms(5);
Valor[i] = spi_read(0);//Leo
delay_ms(5);
}
}
void Leer()
{
short int Condicion;
Condicion = true;
do
{
while(spi_data_is_in())
{
Rx = spi_read();//Leo lo enviado por el maestro
if(Rx == 25)//el maestro envia 25 cuando quiero terminar la comunicacion
{
Cont = 20;
Condicion = false;
}
Switch(Cont)//En el contador llevo la secuencia de lectura, primero leo Instruccion, segundo leo posicion en el vector
{ //Si el maestro manda un dato para meter al arreglo entonces abria un tercer paso que es recibir el dato.
case 0:{//Si Cont es 0 es porque se leyó la instruccion
Instr = Rx;
Cont++;
}break;
case 1:{//Si Cont es 1 es porque se leyó la posición del arreglo
Address = Rx;
if(Instr == 10)//Si la instruccion es 10 es porque el maestro quiere leer el arreglo ValT
{
Rx = spi_read(ValT[Address]);
Cont = 0;
}
else
{
if(Instr == 11)//Si la instruccion es 11 es porque el maestro quiere leer el arreglo ValL
{
Rx = spi_read(ValL[Address]);
Cont = 0;
}
if(Instr == 12)//Si la instrucción es 12 es porque el maestro quiere enviar un dato
{
Cont++;
}
}
}break;
case 2:{ //Si el maestro envía dato, se recibe y se guarda
Dato = Rx;
Val2[Address] = Dato;
Cont = 0;
}break;
}
}
}while(Condicion);
}
hola yo tambien necesito utilizar la comunicacion i2c para pretendo conectar un pic con otro pic y me ayudaria si me das algun ejemplo en mikro c