Ok, grazie mille a tutti. Mi metto a studiare.
Ciao ciao
spi tra ATmega328p e Raspberry pi 2
Moderatore:
Paolino
24 messaggi
• Pagina 3 di 3 • 1, 2, 3
0
voti
A parte il microcontrollore, ti sei rassicurato che il codice sulla Ras
funzioni correttamente ?

Ottima scelta !
funzioni correttamente ?
scipiusbarbatus ha scritto:Mi metto a studiare.
Ottima scelta !

4
voti
C'era un errore nell'inizializzazione dello slave. Riporto il codice corretto.
La correzione principale è stata:
prima era
Studiare è sicuramente servito!
Purtroppo non riesco ad eseguire la comunicazione a più di 100kHz. In teoria non dovrebbe essere possibile arrivare a 244 kHz?
- Codice: Seleziona tutto
#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
void spi_init_slave (void)
{
DDRB=(1<<DDB4); //MISO as OUTPUT
SPCR=((1<<SPE)|
(0<<MSTR)|
(0<<CPOL)| // Clock Polarity (0:SCK low / 1:SCK hi when idle)
(0<<CPHA)); // Clock Phase (0:leading / 1:trailing edge sampling);
//Enable SPI
}
unsigned char spi_tranceiver (unsigned char data)
{
SPDR = data; //Load data into buffer
while((SPSR & (1<<SPIF))==0);
return(SPDR); //Return received data
}
int main(void)
{
spi_init_slave();
unsigned char data, buffer[10];
uint8_t x = 0;
DDRB |= (1<<DDB1); //Set the 6th bit on PORTB (i.e. PB5) to 1 => output
while(1)
{
data = spi_tranceiver(x++);
}
}
La correzione principale è stata:
- Codice: Seleziona tutto
DDRB=(1<<DDB4); //MISO as OUTPUT
prima era
- Codice: Seleziona tutto
DDRB=(1<<6); //MISO as OUTPUT
Studiare è sicuramente servito!
Purtroppo non riesco ad eseguire la comunicazione a più di 100kHz. In teoria non dovrebbe essere possibile arrivare a 244 kHz?
-

scipiusbarbatus
35 3 - Messaggi: 38
- Iscritto il: 21 lug 2012, 18:12
1
voti
scipiusbarbatus ha scritto:Studiare è sicuramente servito!
Purtroppo non riesco ad eseguire la comunicazione a più di 100kHz. In teoria non dovrebbe essere possibile arrivare a 244 kHz?
Ottimo!
Sei uno dei pochi, anzi pochissimi, che si è messo a studiare il datasheet!
Sto pensando ad una cosa.
Se parli davvero di 100 kHz la comunicazione avviene a 200 kbps, che è vicino ai 250 kHz.
Non è che stai confondendo le due cose?
Altrimenti, se così non fosse, ci potrebbe essere il solito problema dell'errore dato dal resto dei divisori che fanno sì che una comunicazione non avvenga mai perfettamente alla velocità voluta.
Per esempio (sparo numeri a caso) se ti calcoli che il divisore dovrebbe essere 123.56 nel registro potrai mettere o 123 o 124, che ti fanno trasmettere a velocità un po' più alta o un po' più bassa del voluto.
Alle volte questo è accettabile, altre volte no.
Ciao,
Pietro.
-

PietroBaima
90,7k 7 12 13 - G.Master EY

- Messaggi: 12206
- Iscritto il: 12 ago 2012, 1:20
- Località: Londra
24 messaggi
• Pagina 3 di 3 • 1, 2, 3
Torna a Realizzazioni, interfacciamento e nozioni generali.
Chi c’è in linea
Visitano il forum: Nessuno e 2 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)
pigreco]=π