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 19-11-2008, 16.52.03
leonsungabriele leonsungabriele non è collegato
Robottaro senior
 
Data registrazione: 19-11-2008
Residenza: pavia
Messaggi: 34
Potenza reputazione: 60
leonsungabriele E' per ora ancora un mistero
Predefinito Comunicazione I2C

Vista la difficoltà di trovare materiale riguardo la comunicazione SPI utilizzando il picbasic ho deciso che mi va bene far comunicare il pic tramite l'I2C. Qualcuno ha del materiale a riguardo?
Il mio obiettivo è mandare sequenze di 8 bit ad una data frequenza verso un sensore che funge da slide.
Ciao a presto
Rispondi citando
  #2  
Vecchio 20-11-2008, 09.12.32
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

Con il picbasic è piuttosto semplice comunicare in modo master I2C nel senso che c'è l'istruzione I2CWRITE, difficile se non impossibile avere il lato slave ma di solito questo è già implementato nei sensori o dispositivi vedi LCD03, bussole e la serie SFRxx
__________________
Marnic
Roboitalia Staff
www.fabbrimarco.com
Rispondi citando
  #3  
Vecchio 20-11-2008, 09.17.40
leonsungabriele leonsungabriele non è collegato
Robottaro senior
 
Data registrazione: 19-11-2008
Residenza: pavia
Messaggi: 34
Potenza reputazione: 60
leonsungabriele E' per ora ancora un mistero
Predefinito

Salve Marnic
Si è vero nel mio sensore lo slave I2C è già implementato! Quindi devo solo programmare il mio pic in modo tale che funzioni da master e possa comunicare direttamente col sensore. Però non ho mai avuto a che fare con questo tipo di comunicazione e sto incontrando dei problemi nello scrivere il codice, anche perchè forse oltre ad utilizzare il comando I2cwrite devo impostare opportunamente dei registri. Non avete per caso un codice di esempio che faccia qualcosa di simile a quello che devo realizzare io?
Grazie ancora
Gabriele
Rispondi citando
  #4  
Vecchio 20-11-2008, 10.05.44
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

Niente registri da settare, ci pensa il pic basic.
Usa questi DEFINE:
DEFINE I2C_SLOW 1
DEFINE I2C_HOLD 1
Non tutti i dispositivi slave vanno a 400KHz

Codice:
i2cwrite sda,scl,inddisp,0,[3,3,6]
i2cwrite sda,scl,inddisp,0,["Hello"]
Queste due righe scrivono sull'LCD (Fai riferimento alla tabella comandi dell'LCD03)

Prima devi aver impostato:
Codice:
SCL     VAR     PORTC.3    ' Clock pin
SDA     VAR     PORTC.4    ' Data pin
inddisp = %11000110  'indirizzo I2C display
ad esempio, dipende da quali porte sono dedicate all'I2C nel pic che usi e dall'indirizzo del tuo dispositivo, nel caso del display l'indirizzo è C6 in esadecimale, equivalente a 11000110 in binario

Ciao
__________________
Marnic
Roboitalia Staff
www.fabbrimarco.com
Rispondi citando
  #5  
Vecchio 20-11-2008, 13.37.48
leonsungabriele leonsungabriele non è collegato
Robottaro senior
 
Data registrazione: 19-11-2008
Residenza: pavia
Messaggi: 34
Potenza reputazione: 60
leonsungabriele E' per ora ancora un mistero
Predefinito

Grazie Marnic
incomincio a vedere un po' di luce!
Pero' ora vorrei provare il tutto direttamente sulla mia board collegando il sensore direttamente al pic e mandando sequenze di 8 bit del tipo: 00011100.

Quindi ho un po' di dubbi:
1)al piedino scl devo mettere un clock?
2)come dichiaro e spedisco la stringa: 00011100?

Grazie tante Marnic
A presto
Gabriele
Rispondi citando
  #6  
Vecchio 20-11-2008, 13.59.05
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 leonsungabriele Visualizza messaggio
Quindi ho un po' di dubbi:
1)al piedino scl devo mettere un clock?
2)come dichiaro e spedisco la stringa: 00011100?
1)Nessun clock esterno, è il pic che internamente lo genera su quel piedino
2)La stringa viene sempre inviata come sequenza di zero e uno, se tu fai:
i2cwrite sda,scl,inddisp,0,[28] in realtà mandi proprio la sequenza che hai scritto tu: "00011100".
Non ho mai provato se viene accettata la sintassi:
i2cwrite sda,scl,inddisp,0,[%00011100]
fai una prova tu e magari fammi sapere se il compilatore la digerisce.
Ciao
__________________
Marnic
Roboitalia Staff
www.fabbrimarco.com
Rispondi citando
  #7  
Vecchio 20-11-2008, 14.28.00
leonsungabriele leonsungabriele non è collegato
Robottaro senior
 
Data registrazione: 19-11-2008
Residenza: pavia
Messaggi: 34
Potenza reputazione: 60
leonsungabriele E' per ora ancora un mistero
Predefinito

Ok ora provo e appena ho qualche risultato ti faccio sapere!
Rispondi citando
  #8  
Vecchio 20-11-2008, 20.01.25
leonsungabriele leonsungabriele non è collegato
Robottaro senior
 
Data registrazione: 19-11-2008
Residenza: pavia
Messaggi: 34
Potenza reputazione: 60
leonsungabriele E' per ora ancora un mistero
Predefinito

Prima di collegare il sensore al pic ho deciso di provare a programmare il pic per vedere se riesciuvo a rilevare qualcosa dai piedini R3 e R4 che sono rispettivamente quello del clock e quello della trasmissione dei dati, cercando di vedere in particolare se il pic mi produceva un clock e mi sono accorto che entrambi i piedini sono a massa. Ciò puo' essere normale per il piedino dei dati perchè magari si aspetta un ack di risposta dal sensore, ma per quanto riguarda il clock è normale?
Ciao a presto
Intanto ti allego il codice(per l'elettronica sto utilizzando una scheda di mikroelettronica easypic4 e uso l'oscillatore interno del pic):

Codice Php:

Define OSC 4

DEFINE LCD_EREG PORTD
DEFINE LCD_DREG PORTD
DEFINE LCD_RSREG PORTD 
DEFINE LCD_RWREG PORTD
DEFINE LCD_EBIT 3        
'bit dell'
DEFINE LCD_DBIT 4        
'bit iniziale dell'lcd (0 o 4)
DEFINE LCD_RSBIT 2     'bit del rs
DEFINE LCD_LINES 2

DEFINE  I2C_SLOW 1
DEFINE  I2C_HOLD 1      


OSCCON = %11101110
OSCTUNE = %10000111

indirizzo var word
SCL     VAR     PORTC.3                ' 
Clock pin
SDA     
VAR     PORTC.4                ' Data pin

Pause 100                    ' 
Wait for LCD to start up
LCDOUT $FE
'clear display
Pause 1000
     
indirizzo = %0001111
          
loop:

I2Cwrite sda,scl,indirizzo,0,[28]
       
Pause 500               

GoTo loop                    ' 
Do it forever


 End 
Rispondi citando
  #9  
Vecchio 21-11-2008, 09.13.05
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

Le due linee sda e scl vanno pulluppate, devi mettere una resistenza da 10K tra positivo e linea, diversamente... non va
Forse non da errore ma perchè definisci la "indirizzo" come word? basta un byte, se durante l'operazione di scrittura vengono spediti 16 bit ti si incasina tutto
.... che pic usi?
Ciao
__________________
Marnic
Roboitalia Staff
www.fabbrimarco.com
Rispondi citando
  #10  
Vecchio 21-11-2008, 09.25.37
leonsungabriele leonsungabriele non è collegato
Robottaro senior
 
Data registrazione: 19-11-2008
Residenza: pavia
Messaggi: 34
Potenza reputazione: 60
leonsungabriele E' per ora ancora un mistero
Predefinito

Salve Marnic
Grazie la pronta e completa risposta.
Ora vedo di pulluppare quei piedini, per quanto riguarda l'indirizzo hai ragione ma non ho fatto attenzione perchè per il momento non ho collegato il sensore e quindi ho messo la prima parola che mi è venuta in mente.
Il pic che uso è il 18f4550.
Grazie ancora ti terrò aggiornato sugli sviluppi.
A presto
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 SPI tra pic anti83 P. in Basic per micro 2 20-11-2008 10.26.38
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: 19.45.29.


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