spacer.png, 0 kB

Torna indietro   Roboitalia.com - Il primo portale in Italia sulla robotica amatoriale > Robotica di base > Informatica > P. in Basic per micro

Rispondi
 
Strumenti discussione Modalità  visualizzazioe
  #1  
Vecchio 05-07-2008, 15.04.08
anti83 anti83 non è collegato
Nuovo robottaro
 
Data registrazione: 18-06-2008
Residenza: Trieste
Messaggi: 4
Potenza reputazione: 0
anti83 E' per ora ancora un mistero
Predefinito Comunicazione SPI tra pic

Salve a tutti, ho provato a prendere gli esempi sulla comunicazione SPI al sito http://www.melabs.com e li ho ritoccati in maniera da inviare un byte fissato in una variabile dal pic slave al pic master che a sua volta me lo dovrebbe inviare al pc trammite l'rs232.
In poche parole il pic master aspetta che la porta rc.0 passi ad high e inizia la sua comunicazione al pic slave, ma il tutto non funziona... il pic slave resta in attesa che l'interrupt spi vada alto ma non succede nulla
Qualcuno mi può dare qualke delucidazione su dove ho sbagliato?


Codice:
'PIC MASTER
DEFINE HSER_RCSTA 90h '‘ Setting the receiving register
DEFINE HSER_TXSTA 20h '‘ Setting the emitting register
DEFINE HSER_BAUD 2400 '‘ Baud rate
DEFINE HSER_SPBRG 25 '‘ Direct setting of SPBRG
DEFINE OSC 4
 
SSPEN VAR  SSPCON.5 'SSP Enable bit
CKP  VAR  SSPCON.4 'Clock Polarity Select
SMP  VAR  SSPSTAT.7 'Data input sample phase
CKE  VAR  SSPSTAT.6 'Clock Edge Select bit
SSPIF VAR  PIR1.3  'SPI interrupt flag
 
i  VAR  BYTE
a       var     byte[6]
 
  TRISB = %11111111
        TRISD = %00000000
        TRISC = 0  
  SSPEN = 1   'enable SPI pins
  CKP = 0    'clock idle low
  CKE = 0    'transmit on idle to active transition
  SSPIF = 0   'clear buffer full status
  SMP = 0    'sample in middle of data
 
'PORTd SET
LED1    VAR     portd.0
LED2    VAR     portd.1
LED3    var     portd.2
 
pause 1000
high led1  
hserout [dec I]
MAIN:
HIGH LED2
IF PORTB.0 = 0 THEN MAIN
B0 = 1
LOW LED2
GOSUB GETDATA
GETDATA:
SSPBUF = "?"
GOSUB LETCLEAR
if SSPBUF<>"!" THEN GETDATA
SSPBUF = 0
GOSUB LETCLEAR
I = SSPBUF
hserout [dec I]
LETCLEAR:
IF SSPIF = 0 THEN LETCLEAR
pauseus 25
sspif = 0
return
Codice:
'PIC SLAVE
'SPI REGISTER
SSPEN VAR  SSPCON.5  'SSP Enable bit
CKP  VAR  SSPCON.4  'Clock Polarity Select
SMP  VAR  SSPSTAT.7  'Data input sample phase
CKE  VAR  SSPSTAT.6  'Clock Edge Select bit
SSPBF   VAR     SSPSTAT.0
SSPIF VAR  PIR1.3   'interrupt flag - last bit set
'PORTd SET
LED1    VAR     portd.0
LED2    VAR     portd.1
LED3    var     portd.2
i  VAR  BYTE   'loop counter
a       var     byte[6]
ADCON1 = 7
  TRISC = %11011111  'set PORTC I/O
  TRISD = %00000000
  SSPCON = %00000101  'configure SPI slave, no SS
 
  CKP = 0     'clock idle low
  CKE = 0     'transmit on idle to active transition
  SSPIF = 0    'clear SPI interrupt
  SMP = 0     'sample in middle of data
high led1
PAUSE 2000
I = 0
MAIN:
HIGH LED2
SSPEN = 0
SSPEN = 1
GOSUB LETCLEAR
IF (SSPBUF <> "?") THEN MAIN
I = I + 1
LOW LED2
GOSUB SENDDATA
SENDDATA:
GOSUB LETCLEAR
SSPBUF = "!"
SSPBUF = I
RETURN
 
LETCLEAR:
HIGH LED3
IF SSPIF = 0 THEN LETCLEAR
SSPIF = 0
LOW LED3
RETURN
Rispondi citando
  #2  
Vecchio 19-11-2008, 13.21.07
leonsungabriele leonsungabriele non è collegato
Robottaro senior
 
Data registrazione: 19-11-2008
Residenza: pavia
Messaggi: 34
Potenza reputazione: 59
leonsungabriele E' per ora ancora un mistero
Predefinito

Salve
Anch'io sono molto interessato alla comunicazione SPI del pic; in particolare avrei bisogno di trasmettere sequenze di 8 bit ad un sensore digitale. Non ho mai utilizzato la comunicazione SPI e sto incontrando delle difficoltà a trovare in rete degli esempi di codice in Picbasic.
Aiuto!!!
Ciao a tutti
Gabriele
Rispondi citando
  #3  
Vecchio 20-11-2008, 10.26.38
L'avatar di marnic
marnic marnic non è collegato
Administrator
 
Data registrazione: 24-05-2002
Residenza: Monselice (PD)
Età : 61
Messaggi: 5,458
Potenza reputazione: 435
marnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua famamarnic La sua reputazione è oltre la sua fama
Predefinito

Citazione:
Orginalmente inviato da anti83 Visualizza messaggio

Codice:
......
GOSUB GETDATA
GETDATA:
SSPBUF = "?"
GOSUB LETCLEAR
if SSPBUF<>"!" THEN GETDATA
SSPBUF = 0
GOSUB LETCLEAR
I = SSPBUF
hserout [dec I]
LETCLEAR:
IF SSPIF = 0 THEN LETCLEAR
pauseus 25
sspif = 0
return
Ma sei sicuro di questo codice? Non ho provato ma si ripete in entrambi listati questa cosa (cambiano le label):
......
GOSUB GETDATA
GETDATA:
.....
In sostanza ad un certo punto il codice manda alla SUB, fatta la quale (return) il codice ricomincia dalla sub senza essere stata chiamata, quando trova il return.... dove va?
Poi anche questo non mi risulta corretto:
if SSPBUF<>"!" THEN GETDATA
La GETDATA è una sub per cui non puoi omettere il gosub dopo la then. puoi omettere il GOTO infatti è come tale che viene compilato il codice se trova una label dopo il then

Ciao
__________________
Marnic
Roboitalia Staff
www.fabbrimarco.com
Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione
Modalità  visualizzazioe

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code è Attivato
Le smilies sono Attivato
[IMG] è Attivato
Il codice HTML è Disattivato

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
comunicazione dsp pic 1q2w3e4r Comunicazione 7 03-11-2010 14.38.44
Comunicazione I2C leonsungabriele P. in Basic per micro 19 27-11-2008 16.32.48
comunicazione tra pic franco1063 Elettronica 5 13-06-2006 14.07.45
comunicazione tra pic argoI P. in Basic per micro 5 30-03-2006 19.50.22
Comunicazione IR MarkNitro Elettronica 7 12-04-2003 14.43.00


Tutti gli orari sono GMT. Adesso sono le: 08.16.02.


Basato su: vBulletin Versione 3.8.8
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.
Realizzazione siti web Cobaltica Foligno
spacer.png, 0 kB