master og slave Microcontrollers

G

garg29

Guest
Jeg forsøger at designe et projekt, bare for hobby.
Projektet er formoder jeg nødt til at mesaure nogle fysiske
ejendom, lad os sige temperatur på 10 forskellige
steder hver beliggende i nærheden kun.Jeg er nødt til at bruge
slave og master-metoden, som jeg har draget i billedet
neden under.hvilken metode skal jeg følge for programmering.
Jeg
vil være virkelig taknemmelig hvis nogen kan du give
bare kort eksempel på dette.

Thanks in advance.

Garg
Beklager, men du skal login for at se denne tilslutningskrav

 
I denne situationer jeg bruge Modbus (eller mechanisams af Modbus) eller noget lignende (jeg gøre dette på PLC's).
should put message:

Føreren
bør lægge besked:
ABCD
A - mester adresse
f.eks 01h
B - slave adresse
f.eks 04h (tredje slave MCU)
C - kommando (give mig temperatur, eller comething andre, eller sætte output pin 1 til "1" eller ....),
f.eks 01h give temp, 02h give tid, 03h sæt output1 ....
D - checksum (der er mange typer af CS, så vælge en ...
should give answer:

Slave's
bør give svar:
ABCDE

A - slave adresse
B - mester adresse (01h)
C - antal bytes, som slave afsendelse
D - data (C antal bytes data)
E - kontrolsum

Hilsen,

Mr.Cube

 
Takket Mr.Cube.Skal jeg bruge SCL & SDA type to wire link til hele nettet (som jeg har tegnet).Beklager, hvis det
er for grundlæggende ....
Jeg er ny til kommunikation

 
Generelt

Du altid kan bruge i2c, det
er gjort for denne form for kommunikation (Master - slaver).

Jeg tror, du kan finde masser eksempler og koder på edaboard.

Venlig hilsen.

Mr.Cube

 
i2c minder mig om ds1307 RTC chip som jeg forsøgte at commnicate med 89c51 jeg gjorde, men med PIC microcontroller jeg var forgæves.Med EEPROM 24cxx jeg har gjort igen med 89c UCS vil jeg nødt til at tage samme metode som i den kode vedlagte

Takket ........ med Best regards.
GargCode:

# include <reg52.h>

# include <intrins.h># define ACK 1

# define NO_ACK 0usignerede CHAR i2;sbit SDA = P1 ^ 7 / / forbinde til SDA pin (Data)

sbit SCL = P1 ^ 6 / / forbinde til SCL pin (ur)
//-------------------------------

/ / Start I2C

//-------------------------------

void Start (void)

(

SDA = 1;

SCL = 1;

_nop_ (); _nop_ ();

SDA = 0;

_nop_ (); _nop_ ();

SCL = 0;

_nop_ (); _nop_ ();

)//-------------------------------

/ / Stop I2C

//-------------------------------

void stop (void)

(

SDA = 0;

_nop_ (); _nop_ ();

SCL = 1;

_nop_ (); _nop_ ();

SDA = 1;

)//-------------------------------

/ / Skriv I2C

//-------------------------------

void WriteI2C (usignerede CHAR Data)

(for (i2 = 0; i2 <8; i2 )

(

SDA = (Data & 0x80)?
1:0;

SCL = 1; SCL = 0;

Data <<= 1;

)SCL = 1;

_nop_ (); _nop_ ();

SCL = 0;)//-------------------------------

/ / Læs I2C

//-------------------------------

usignerede CHAR ReadI2C (bit ACK_Bit)

(usignerede CHAR Data = 0;SDA = 1;

for (i2 = 0; i2 <8; i2 )

(

SCL = 1;

Data <<= 1;

Data = (Data | SDA);

SCL = 0;

_nop_ ();

)if (ACK_Bit == 1)

SDA = 0 / / Send ACK

anden

SDA = 1 / / Send NO ACK_nop_ (); _nop_ ();

SCL = 1;

_nop_ (); _nop_ ();

SCL = 0;returnere data;

)//-------------------------------

/ / Læs 1 byte form I2C

//-------------------------------

usignerede CHAR ReadBYTE (usignerede int Adr)

(

usignerede CHAR Data;

Start ();

WriteI2C (0xa0);

/ / WriteI2C ((usignerede CHAR) (Adr>> 8) & 0xFF); / / .... ikke gyldig for små EEPROMs

WriteI2C ((usignerede CHAR) Adr & 0xFF);

Start ();

WriteI2C (0xA1);

Data = ReadI2C (NO_ACK);

Stop ();

tilbagevenden (Data);

)//-------------------------------

/ / Skriv 1 byte til I2C

//-------------------------------

void WriteBYTE (usignerede int Adr, usignerede CHAR Data)

(

Start ();

WriteI2C (0xa0);

/ / WriteI2C ((usignerede CHAR) (Adr>> 8) & 0xFF); / / sende adresse høj .... ikke er gyldigt for små EEPROMs

WriteI2C ((usignerede CHAR) Adr & 0xFF); / / sende adresse lav

WriteI2C (Data);

Stop ();

)

 
Her nogle i2c kode eksempler.

Hjælp dig selv.
Beklager, men du skal login for at se denne tilslutningskrav

 

Welcome to EDABoard.com

Sponsor

Back
Top