spi tra ATmega328p e Raspberry pi 2
Saluti a tutti,
creo un nuovo post perché l'argomento mi sembra diverso.
Sto cercando di interfacciare tramite spi il micro ATmega328p (quello di arduino) e un raspberry pi 2 (40 pin).
Purtroppo non riesco ad ottenere nessuna comunicazione tra i due. Vi posto i dettagli del progetto.
Ho collegato i seguenti pin:
ATmega------->Raspberry PI
17------------->19 (MOSI)
18------------->21 (MISO)
19------------->23 (SCLK)
22------------->20 (GND)
Raspberry pi 2:
Cosa c'è che non va? Mi potete aiutare?
creo un nuovo post perché l'argomento mi sembra diverso.
Sto cercando di interfacciare tramite spi il micro ATmega328p (quello di arduino) e un raspberry pi 2 (40 pin).
Purtroppo non riesco ad ottenere nessuna comunicazione tra i due. Vi posto i dettagli del progetto.
Ho collegato i seguenti pin:
ATmega------->Raspberry PI
17------------->19 (MOSI)
18------------->21 (MISO)
19------------->23 (SCLK)
22------------->20 (GND)
- Codice: Seleziona tutto
#define F_CPU 20000000UL
#include <avr/io.h>
#include <util/delay.h>
void spi_init_slave (void)
{
DDRB=(1<<6); //MISO as OUTPUT
SPCR=(1<<SPE); //Enable SPI
}
unsigned char spi_tranceiver (unsigned char data)
{
SPDR = data; //Load data into buffer
while(!(SPSR & (1<<SPIF) )); //Wait until transmission complete
return(SPDR); //Return received data
}
int main(void)
{
spi_init_slave();
unsigned char data, buffer[10];
uint8_t x = 0;
while(1)
{
data = spi_tranceiver(++x);
_delay_ms(1000);
}
}
Raspberry pi 2:
- Codice: Seleziona tutto
import spidev
import time
spi=spidev.SpiDev()
spi.open(0,0)
try:
while True:
resp = spi.xfer2([0xAA])
print "receiving:", resp[0]
time.sleep(1.0)
except KeyboardInterrupt:
spi.close()
Cosa c'è che non va? Mi potete aiutare?