protocollo I2C

« Older   Newer »
  Share  
view post Posted on 20/1/2011, 17:01
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


Bhe....mi sa che ho preso la vacca per le b....come si dice qui. Ero convinto che il protocollo One-wire fosse sinonimo di I2C, ma evidentemente non è così. Allora devo rimandare un attimo, non avendo dispositivi che mi fanno da slave. Si, potrei mettere un pic su una basetta e usarlo come slave...ma non so, mi complico la vita forse.

Adesso comunque devo fare un ordine on-line e tra gli articoli, prenderò il famoso sensore radar per fare il metro a ultrasuoni, quindi il discorso è solo rimandato di un po'....peccato però...
 
Top
view post Posted on 20/1/2011, 17:17
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


Domanda da PIC-ignorante... ma l'interfaccia one-wire è quella che serve per il debug, mentre la I²C è in dotazione ai PIC o solo ad alcuni di essi per espandere l'I/O e la memoria? Oppure i PIC usano la one-wire per tutto e la I²C è solo un'optional? :unsure:
 
Web  Top
view post Posted on 20/1/2011, 17:32
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


Non ti so rispondere Law, ma credo che qui non sia questione di pic o meno, è un discorso generale, sono 2 protocolli differenti di comunicazione. Credo si possa espandere la memoria, se colleghi una eeprom, mi ci si può mettere di tutto. Appena compro il modulo, ci riprovo, anche perchè senza i2c, non comunica, ma per sicurezza prima guarderò il data.
 
Top
view post Posted on 20/1/2011, 17:43
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


Ho capito che sono due sistemi diversi di comunicazione. Certo. Fin quì almeno c'ero arrivato...:rolleyes:
Ma perchè sono saltati fuori? Forse uno è il protocollo dell'interfaccia unifilare per connettere i PIC al sistema di sviluppo usando un solo pin appunto? :unsure:
 
Web  Top
view post Posted on 20/1/2011, 17:49
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


CITAZIONE
Ma perchè sono saltati fuori?

Perche io volevo fare prove con la sonda di temperatura DS1820 che ho gia' bella pronta sulla mi scheda, usarla come slave in definitiva. Poi però salta fuori che la ds1820, non usa la I2C, ma il protocollo one-wire. E' scritto sul manuale, ma io erroneamente ho pensato fosse un sinonimo di I2C...e invece no...ecco nasce tutto da lì.
 
Top
robo67
view post Posted on 20/1/2011, 18:25




L'interfaccia 1Wire è stata inventata da Dallas/Maxim e non so se sia già stata liberalizzata o sia ancora sotto brevetto.

Il PIC non ce l'ha in versione hardware, quindi occorre implementarla via software.
L'I2C ormai lo usano urbi et orbi, dato che Philips lo inventò parecchi anni fa e penso che il brevetto sia abbondantemente scaduto, quindi chi lo usa non credo neppure che paghi royalties a Philips.

Il PIC ha la porta MSSP che puoi usare per il bus I2C o per l'SPI, bus inventato da Motorola (e che penso sia anch'esso libero da brevetto).
Per il discorso emulazione Microchip usa l'interfaccia ICSP, che è formata da 5 fili: VDD, VSS, MCLR (reset) PGC e PGD.

Tramite l'ICSP è possibile programmare tutti i PIC e, nel caso di PIC con memoria flash (che penso siano ormai tutti quelli che Microchip produce), effettuare un'emulazione, anche se con quanche limite.

In particolare l'emulatore programma il PIC tramite l'ICSP, aggiungendovi anche un programma di debug che occupa tot memoria programma, tot memoria dati e 2 livelli di stack.

Con questo programma di debug puoi farci un po' di tutto, dal funzionamento passo-passo alla modifica/lettura dei registri, dalla programmazione dell'eeprom al funzionamento in real-time.
 
Top
view post Posted on 26/1/2011, 09:16
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


Porca miseria, mi accorgo solo adesso che il modulo SRF05 (radar) NON comunica in I2C!!!! Devo trovare qualcosa da ordinare che mi dia la possibilità di fare prove....consigli?
 
Top
view post Posted on 26/1/2011, 09:56
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


Quindi ogni microcontrollore PIC ha i pin per l'interfaccia ICSP a 5 fili, che in pratica poi, sono solo tre perchè gli altri due ci sono per forza e sono i pin di alimentazione. Io ho un paio di PIC non ricordo cosa perchè son troppo piccoli per leggerci sopra senza microscopio, ma hanno otto pin. Togliamone due per l'alimentazione, tre per i segnali di interfaccia ne restano solo tre... Che ci si fa con tre canali soli di I/O? :huh:
 
Web  Top
view post Posted on 26/1/2011, 10:17
Avatar

Rompiball

Group:
Appassionati
Posts:
2,612
Location:
briansa

Status:


Bhe certo i modelli a 8 pin hanno pochi I/O, ma aspetta Robo, non vorrei parlare a vanvera io!!

Ah, poi mi sa che ripiego su un piccolo accelerometro per fare le prove I2C...solo 10€ e mi sa che con quei cosi lì ci fai cose ganze.
 
Top
Elemento 38
view post Posted on 26/1/2011, 17:11




CITAZIONE (Lawrence @ 26/1/2011, 09:56) 
Quindi ogni microcontrollore PIC ha i pin per l'interfaccia ICSP a 5 fili, che in pratica poi, sono solo tre perchè gli altri due ci sono per forza e sono i pin di alimentazione. Io ho un paio di PIC non ricordo cosa perchè son troppo piccoli per leggerci sopra senza microscopio, ma hanno otto pin. Togliamone due per l'alimentazione, tre per i segnali di interfaccia ne restano solo tre... Che ci si fa con tre canali soli di I/O? :huh:

I pin di programmazione sono comuni a quelli di I/O, quindi si possono usare pin normali dopo la programmazione.
 
Top
view post Posted on 26/1/2011, 18:00
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


Però, se programmo un pin del segnale di comunicazione come I/O una volta dato il via alla scrittura del programma non potrò più riprogrammare l'oggetto nè fare il debug, nè ... nè. (punto).
:unsure:
 
Web  Top
Elemento 38
view post Posted on 26/1/2011, 18:24




CITAZIONE (Lawrence @ 26/1/2011, 18:00) 
Però, se programmo un pin del segnale di comunicazione come I/O una volta dato il via alla scrittura del programma non potrò più riprogrammare l'oggetto nè fare il debug, nè ... nè. (punto).
:unsure:

(robo chiarirà meglio, forse sono un minimo arrugginito con i PIC :) )
Da quello che mi ricordo (o mi pare di ricordare) , in un qualche PIC c'erano RB6 e RB7 usati per la programmazione, questi andavano a due PIN dell'ICSP. Dopo la programmazione quei PIC tornavano ad essere normali pin di I/O, quindi utilizzabili. Se si voleva fare il Debug quei PIN andavano lasciati collegati al programmatore e non riutilizzati.Perché non si potrebbe più riprogrammare l'oggetto :unsure:?
 
Top
view post Posted on 26/1/2011, 18:30
Avatar

Immane Rompiball

Group:
Administrator
Posts:
18,287
Location:
Orlo esterno della cintura di Orione stella 1957

Status:


Sissssì, ora mi ricordo, qualche anno fa ne abbiamo discusso... :o:
È la vecchiaia che ci si può fare...
Quindi il chippino che ho a 8 pin, potrebbe poter disporre di 6 I/O una volta programmato. E se non funziona, pace tanto costano un tubo. Però, niente I²C... oppure esiste la possibilità di usare due pin per I²C dopo la programmazione per impiegare come I/O altre periferiche o memorie oppure un altro PIC...
Poter connetter più PIC in rete I²C può essere più interessante di quanto si possa sospettare.... :rolleyes:
 
Web  Top
Elemento 38
view post Posted on 26/1/2011, 18:40




Ma esistono anche dei PIC a 8 PIN con I2C integrata ... PIC12F1822 e PIC12F1840
oppure si può fare con un software fatto bene :)
 
Top
robo67
view post Posted on 26/1/2011, 21:34




I PIC a 8 pin hanno effettivamente 6 pin di I/O (usando l'oscillatore RC interno calibrabile da software, altrimenti si riducono a 4 usando un oscillatore esterno).

L'interfaccia per la programmazione è formata da 2 pin di I/O, VDD (alimentazione positiva), VSS (alimentazione negativa) e VPP (tensione di programmazione da applicare al piedino di reset).
Durante la programmazione il PIC viene mantenuto resettato e sui pin GP0/ICSPDAT e GP1/ICSPCLK vengono inviati i dati da inserire nel chip.
Alla fine della programmazione, quando il connettore ICSP viene scollegato, il PIC inizia a funzionare normalmente e può utilizzare anche i pin GP0 e GP1 usati durante la programmazione.

Ricollegando il connettore ICSP il PIC torna nuovamente in stato di reset e può essere riprogrammato.

Per una corretta programmazione occorre comunque che in GP0, GP1 e GP3/Vpp vengano rispettate alcune regole di utilizzo (presenza o meno di reistenze di pull-up o pull-down, di condensatori, diodi, ecc.) che dipendono dal tipo di programmatore usato.

Per l'emulazione di alcuni pic (nel caso dei 12Fxxx non so, dato che ultimamente Microchip sta cambiando tutti gli emulatori/debugger), onde ovviare al fatto che usare 2-3 pin per l'emulatore limiterebbe il numero di I/O disponibili, viene usato un modulo da inserire al posto del chip vero e proprio, su cui é montato lo stesso chip ma con più pin (es. nel caso del PIC16F716, che é un 18 pin, sul modulo di emulazione è montato un PIC16F716-ICD che é un 16F716 a 28 pin in cui alcuni dei 10 pin aggiuntivi sono usati proprio per l'emulazione).


Edited by robo67 - 26/1/2011, 22:32
 
Top
118 replies since 5/1/2011, 18:32   3477 views
  Share