Connexió de dos microcontroladors PIC18Fxxxx juntament amb I2C

M

mikkolaa

Guest
Hola,

Estic començant programació programes whitch comunicar-se entre dues PIC18F6520.
(És pot utilitzar la SPI també, però ¿quina és la longitud màxima del cable entre dispositius SPI?)
El protocol ha de ser molt fàcil.Serà només 2
.-4. enviar octet d'una sola vegada.
Crec que és necessari l'ús de doble manera mestre, perquè segon PIC per enviar els codis d'error
PIC mestre.
No tinc ni idea de com iniciar el projecte I2C.(El mestre de CFP està treballant ara
sense I2C, però la propera començaré a escriure protocol I2C a "Slave" i actual "mestre" pic.

Estic usant MPLAB 7.4 ASM codificació.

Pot algú alguns consells per iniciar projecte?Codi d'exemple?
Tinc PIC18C Manual de Referencia.

 
Hola!
Seria bo si pogués donar-nos més informació sobre el seu projecte!
Aleshores,
si us plau, descrigui el seu projecte en poques paraules i, a continuació, ens mostren el que has fet fins ara.
Per últim ens demana a les seves preguntes!
records

 
Kabanga va escriure:

Hola!

Seria bo si pogués donar-nos més informació sobre el seu projecte!

Aleshores, si us plau, descrigui el seu projecte en poques paraules i, a continuació, ens mostren el que has fet fins ara.

Per últim ens demana a les seves preguntes!

records
 
hola,

Estava tractant de fer alguna cosa que sona molt similar al que estem tractant de fer no fa gaire temps.

al final vaig decidir no utilitzar I2C perquè és probablement el més complex mètode de comunicació en el xip.

si vostè és capaç d'utilitzar i suggeriria USART o EUSART ja que són molt més fàcils d'aplicar.

en el meu projecte i També és necessari per poder comunicar entre diversos dispositius com i va ser la construcció d'una unitat que hi havia un mestre de xip i múltiples dispositius esclau.és molt fàcil fer una rutina que pot parlar amb els esclaus individualment.

i fet això mitjançant l'ús de 9 bits.això permet que el byte que voleu enviar més una mica més per ser enviats com un de sol.si utilitza aquest bit per indicar que una adreça
s'està enviant, pot parlar amb 1 dispositiu a la vegada.

sembla ser una manera fiable d'obtenir a curt PEIC de les dades d'un xip a un altre i és ràpida per aconseguir feina.

Encara que jo estava treballant amb el dispositiu de im 16f877A segur que seria una tasca senzilla per a aquest grup de treball en el dispositiu.

l'inconvenient és que el més probable és que requereixen un canvi d'assignació de pins per migrar a aquesta forma de comunicació, però l'avantatge és que vostè no aconseguir passar de llarg la resta del codi escrit.

millor sort!

 
shaun_c_m va escriure:

hola,Estava tractant de fer alguna cosa que sona molt similar al que estem tractant de fer no fa gaire temps.al final vaig decidir no utilitzar I2C perquè és probablement el més complex mètode de comunicació en el xip.si vostè és capaç d'utilitzar i suggeriria USART o EUSART ja que són molt més fàcils d'aplicar.en el meu projecte i També és necessari per poder comunicar entre diversos dispositius com i va ser la construcció d'una unitat que hi havia un mestre de xip i múltiples dispositius esclau.
és molt fàcil fer una rutina que pot parlar amb els esclaus individualment.i fet això mitjançant l'ús de 9 bits.
això permet que el byte que voleu enviar més una mica més per ser enviats com un de sol.
si utilitza aquest bit per indicar que una adreça s'està enviant, pot parlar amb 1 dispositiu a la vegada.sembla ser una manera fiable d'obtenir a curt PEIC de les dades d'un xip a un altre i és ràpida per aconseguir feina.Encara que jo estava treballant amb el dispositiu de im 16f877A segur que seria una tasca senzilla per a aquest grup de treball en el dispositiu.l'inconvenient és que el més probable és que requereixen un canvi d'assignació de pins per migrar a aquesta forma de comunicació, però l'avantatge és que vostè no aconseguir passar de llarg la resta del codi escrit.millor de les sorts!
 
Hola,
Estic treballant en un projecte similar en el que estic PIC18F8722 connectar dos dispositius a través d'I2C bus.There són també una EEPROM, RTC i CAD en el mateix bus I2C.

Però em estic tenint problemes en enviar les dades de mestre a esclau de cpu.
Em poden rebre correctament dades de mestre a esclau.

Però tan aviat com llegir dades d'esclau,
el mestre es penja i es manté en espera d'BF poc sembla que es set.It SCL línia està permanentment sota.

Estic utilitzant el mateix codi que
s'utilitza per comunicar a RTC a master.Please veure a continuació:

StartI2C ();
IdleI2C ();
varslave1 = putcI2C (direcció); / / control byte a escriure
IdleI2C ();
varslave1 = putcI2C (0xAB);
IdleI2C ();
StopI2C ();

StartI2C ();
IdleI2C ();
varslave1 = putcI2C (direcció);
IdleI2C ();
varslave1 = getcI2C (); / / Llegir les dades d'esclau
IdleI2C ();
StopI2C ();

Esclau CPU interromp ha habilitat en I2C.The codi de esclau és:
I2CInterruptHandlerHigh nul (void)
(
Var BYTE;
INTCONbits.GIE = 0; / / desactivar interrompre mundial
if (PIR1bits.SSP1IF) / / respondre a interrompre I2C Slave
(
/ / Bit de parada I2C detectat (Pàgina 81) així que és un I2C slave Transmissió
/ * If (SSP1STATbits.P == 1)
(
SSP1BUF = 0; / / SSPBUF = 0 (pàgina 19)
SSPCON1bits.CKP = 1 / / set_bit (SSPCON, 4) àlies CKP, SSPBUFF ha de ser abans d'escriure (Pàgina 82)
) * /

if (SSP1STATbits.BF == 1) / /
else és una / / I2C slave Recepció
(

AddDelayMs (10);
gFnCode = SSP1BUF; / / guardar les dades
var = putsI2C (0x31); / / enviar les dades a mestre
ComputeENQ (gFnCode);
)

PIR1bits.SSP1IF = 0;
) / / END IF
INTCONbits.GIE = 1 / / permetre interrompre mundial
)

Estic totalment lost.Any ajuda és molt apreciada.

Gràcies,
Amit

 
Jo mateix tenia problemes.Així que no puc ajudar.
Crec que
el microxip I2C de maquinari no és tan fàcil
(amb assemblador).
He treballat gairebé mes amb la I2C problemes.
Avui a substituir la comunicació SPI o similar
basada en programari de comunicació de dades.
Reazon és que no tinc altres dispositius de la mateixa xarxa, i jo no ús wan't ia temps per intentar utilitzar microxip I2C mòduls.

Protocol de comunicació és la qüestió.No necessito transmetre i rebre dades de la meva enorme paquets molt pocs bytes.(pocs bytes de dades i cheksum).

 
Col legues,

És possible canviar de mestre i esclau I2C maneres durant el temps d'execució per escrit a la SSPCON registrar?

Vaig a tenir dos països insulars del Pacífic en el sistema.Un
s'encarregarà de la pantalla, un altre que controlar el procés.Quan el procés ISN no en funcionament, la pantalla hauria de ser el PIC Mestre.Quan el procés
s'està executant, la pantalla ha de mostrar el PIC paràmetres.Però el problema és que tinc l'obligació de que el tipus, que va desenvolupar la versió actual del firmware de control del PIC, que el control de la PIC no hauria de ser interromput per a la comunicació en sèrie.Jo estic contemplant fer una Multimaestro autobús, on el procés de control de PIC és un mestre, quan el procés
s'està executant, i la pantalla PIC és un Màster per a la resta del temps.I ll probablement afegir un protocol d'acord també.Creu que aquest és un bon mètode?

Salut!,
- Nick

PS Una altra opció seria substituir I2C amb la CAN, que és un punt a punt per començar amb l'autobús.Unfortunaltely, és massa tard per fer-ho.

 
Fins i tot millor que la CAN és el LIN, però com vostè ha esmentat és massa tard per posar en pràctica.

 

Welcome to EDABoard.com

Sponsor

Back
Top