Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

spi tra ATmega328p e Raspberry pi 2

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

4
voti

[11] Re: spi tra ATmega328p e Raspberry pi 2

Messaggioda Foto UtentePietroBaima » 30 giu 2015, 22:18

Le parole 20 MHz e bread board, insieme, mi fanno lo stesso effetto delle unghie sulla lavagna :D

Allora, devi fare questo, se vuoi far funzionare il tutto:

  • Usa un quarzo da 10 MHz al massimo;
  • la bread-board NON va assolutamente bene a quelle frequenze, monta tutto su millefori;
  • i collegamenti fra quarzo, condensatori ceramici e pin del micro devono essere cortissimi,
  • devi collegare i due lati freddi dei due condensatori fra di loro e poi a 0V con un unico filo.

Poi vedrai che tutto può funzionare :D
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[12] Re: spi tra ATmega328p e Raspberry pi 2

Messaggioda Foto Utentescipiusbarbatus » 30 giu 2015, 22:47

Ho ripristinato i fuses e adesso utilizzo il "int. RC osc. 8Mhz", con il divider 8.
Ho riprovato con il raspberry. Sempre nessun risultato...
Con la millefori cambierebbe qualcosa?
Avatar utente
Foto Utentescipiusbarbatus
35 3
 
Messaggi: 38
Iscritto il: 21 lug 2012, 18:12

0
voti

[13] Re: spi tra ATmega328p e Raspberry pi 2

Messaggioda Foto UtentePietroBaima » 30 giu 2015, 22:49

scipiusbarbatus ha scritto:adesso utilizzo il "int. RC osc. 8Mhz", con il divider 8.

Quindi adesso viaggi ad 1 MHz?
Ma non devi reimpostare i divisori dell'SPI, adesso?
Dipende, a che frequenza vai in SPI? Se superi i 500kHz non dovrebbe più funzionare se ben ricordo.

Comunque quando si lavora sopra il MHz conviene montare su millefori, anche se è un dato indicativo.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[14] Re: spi tra ATmega328p e Raspberry pi 2

Messaggioda Foto Utentescipiusbarbatus » 30 giu 2015, 23:04

Come programmatore uso usbasp. Quali sono i divisori del SPI?
Nell'intestazione del programma ATMEGA328p uso F_CPU 1000000UL.
Il programma spidev_test.c su raspberry va a 500kHz. Raspberry è il master della comunicazione SPI.
Avatar utente
Foto Utentescipiusbarbatus
35 3
 
Messaggi: 38
Iscritto il: 21 lug 2012, 18:12

2
voti

[15] Re: spi tra ATmega328p e Raspberry pi 2

Messaggioda Foto UtentePietroBaima » 30 giu 2015, 23:13

Ah, ecco perché non funziona!
Devi programmare i registri dell'SPI per farlo funzionare, non basta leggere e scrivere.
Poi (grazie Foto Utentecarloc) il limite di campionamento è FCLK/4 non FLCK/2 come mi ricordavo (male) io.

Se usi il clock interno a 8 MHz devi dichiarare che usi 8 MHz, non 10.

Secondo me ti conviene scaricare il data sheet completo di quel AVR e leggerti la sezione SPI, dove spiegano l'uso dei vari registri.

Qui trovi il device overview di quell'AVR, qui il datasheet completo.
Vai sotto alla sezione 19. SPI – Serial Peripheral Interface e leggila, soprattutto la parte di configurazione dei registri.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[16] Re: spi tra ATmega328p e Raspberry pi 2

Messaggioda Foto Utentescipiusbarbatus » 30 giu 2015, 23:25

Ok, mi leggo meglio il datasheet.
La programmazione dei registri la faccio con la funzione slave_init

Codice: Seleziona tutto
void spi_init_slave (void)
{
   DDRB=(1<<6);                                  //MISO as OUTPUT
   SPCR=(1<<SPE);                                //Enable SPI
}


Se usi il clock interno a 8 MHz devi dichiarare che usi 8 MHz, non 10.


Uso il clock interno a 8MHz, ma con il divider 8 fa 1MHz, da cui F_CPU 1000000UL.
Avatar utente
Foto Utentescipiusbarbatus
35 3
 
Messaggi: 38
Iscritto il: 21 lug 2012, 18:12

1
voti

[17] Re: spi tra ATmega328p e Raspberry pi 2

Messaggioda Foto UtentePietroBaima » 30 giu 2015, 23:26

e allora non va bene.
Se usi 1 MHz puoi fare una SPI fino ad un massimo di 250 kHz.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[18] Re: spi tra ATmega328p e Raspberry pi 2

Messaggioda Foto Utentescipiusbarbatus » 30 giu 2015, 23:43

E' veramente frustrante...

Codice: Seleziona tutto
pi@raspberrypi ~ $ ./a.out
spi mode: 0
bits per word: 8
max speed: 50000 Hz (50 kHz)

00 00 00 00 00 00
00 00 00 00 00 00
00 00 00 00 00 00
00 00 00 00 00 00
00 00 00 00 00 00
00 00 00 00 00 00
00 00


Codice: Seleziona tutto
import spidev
import time

spi=spidev.SpiDev()

spi.open(0,0)
spi.max_speed_hz=50000
try:
    while True:
        resp = spi.xfer2([0xAA])
        print "receiving:", resp[0]
        time.sleep(1.0)
except KeyboardInterrupt:
    spi.close()


Codice: Seleziona tutto
pi@raspberrypi ~/spi-python $ python test-spi.py
receiving: 0
receiving: 0
receiving: 0
receiving: 0
receiving: 0
Avatar utente
Foto Utentescipiusbarbatus
35 3
 
Messaggi: 38
Iscritto il: 21 lug 2012, 18:12

2
voti

[19] Re: spi tra ATmega328p e Raspberry pi 2

Messaggioda Foto UtenteTardoFreak » 30 giu 2015, 23:48

Foto Utentescipiusbarbatus pare evidente che non conosci bene AVR anzi, tecnicamente parlando lo conosci in modo insufficiente.
Quindi, per non continuare con tentativi, la cosa più efficiente per tutti è che tu ti studi bene il datasheet del micro in questo modo:
1) Ci spendi una o due orette per leggerlo ed impararlo a grandi linee. Non serve sapere tutto di tutte le periferiche del micro.
2) Ti prendi dalle quattro alle otto ore per studiarti nel dettaglio tutto il micro. Non serve ricordare i registri ed i bit dei registri a memoria.
3) Torni su questa discussione e la si continua.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[20] Re: spi tra ATmega328p e Raspberry pi 2

Messaggioda Foto UtentePietroBaima » 30 giu 2015, 23:50

Ahimè, sono d'accordo in pieno con Foto UtenteTardoFreak.
Devi impostare tutti i registri dell'SPI, non solo alcuni.
Io comincerei leggendo la sezione 19 del data sheet che ti ho linkato più sopra.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

PrecedenteProssimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti