마스터 및 슬레이브 마이크로

G

garg29

Guest
난 취미만을위한 프로젝트를 설계하는 노력 중이야.
프로젝트 내가해야 mesaure는 몇 가지 신체적
재산의 말을 10 가지의 온도하자
각 인근 지역에만 위치해있습니다.내가 사용해야 할
슬레이브와 마스터 방식으로 내가 그린 그림에
아래.프로그래밍을위한 방법은 내가 무엇을 따라야한다.
누군가를 즐겁게 해줄 수있다면 정말 감사하게 될거야 제공
이번에 그냥 간단한 예제.

미리 감사드립니다.

Garg
미안하지만, 당신이 첨부 파일을보기 위해서는 로그인이 필요

 
난 Modbus Modbus (또는 mechanisams) 또는 유사한 무언가를 사용하는 경우이 상황에서 (내가이 일을는 PLC의).
should put message:

마스터
메시지를 넣어 주어야 :
ABCD
- 마스터 주소
01h 예
B 조 - 노예 주소 04h (3 노예 MCU의 예)
C -
(나 출력 핀 1에 "1"이나 ....), 예 01h 온도, 또는 comething 다른, 또는 명령을 넣어주고 온도주고, 02h 03h output1 .... 설정된 시간, 줄
D 조 - (CS는 많은 종류의, 그래서 하나를 선택하는 ... 체크섬
should give answer:

노예의
대답을한다 :
ABCDE

- 노예 주소
B 조 - 마스터 주소 (01h)
C - 바이트의 번호는 노예 보내
바이트의 데이터를 D 조
- 데이터 (C 번호)
전자 - 체크섬

안부,

Mr.Cube

 
감사합니다 Mr.Cube.내가 SCL & SDA는 전체 네트워크를위한 두 가지 유형 와이어 링크 (로서 내가 그린)을 사용해야합니다.기초의
경우에는 너무 죄송합니다 .... 제가 통신에 새로 왔어요

 
일반적으로,

당신은 언제나의 I2C, 이런 종류의 의사 소통을 위해 만든 (마스터 - 노예)를 사용할 수있습니다.

난 당신이 많은 예제와 edaboard에 코드를 찾을 수 있다고 생각합니다.

안부 인사.

Mr.Cube

 
ds1307 RTC 칩의 I2C는
내가 89c51 내가 commnicate려고 노력했지만 실패했습니다 PIC 마이크로 컨트롤러 내가 생각나네.89c UCS와 내가 다시 24cxx 코드에서 동일한 방법으로 첨부했을 EEPROM을
함께 복용해야한다

감사합니다 ........ 최고의 안부.
Garg코드 :

# 포함 <reg52.h>

# 포함 <intrins.h>ACK는 1 정의 #

NO_ACK 0 정의 #서명되지 않은 숯불 I2;sbit SDA는 = P1 ^ 7; / / SDA는 핀 (데이터)에 연결

sbit SCL = P1 ^ 6; / / (시계) 핀 SCL에 연결
//-------------------------------

/ /의 I2C 시작

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

무효 시작 (무효)

(

SDA는 = 1;

SCL = 1;

_nop_ (); _nop_ ();

SDA는 = 0;

_nop_ (); _nop_ ();

SCL = 0;

_nop_ (); _nop_ ();

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

/ /의 I2C 중지

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

무효 그만 (무효)

(

SDA는 = 0;

_nop_ (); _nop_ ();

SCL = 1;

_nop_ (); _nop_ ();

SDA는 = 1;

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

/ / 쓰기의 I2C

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

무효 WriteI2C (서명 숯불 데이터)

((I2 = 0; I2 <8; I2 )에 대한

(

SDA는 = (데이터 &은 0x80)?
1:0;

SCL = 1; SCL = 0;

데이터 <<= 1;

)SCL = 1;

_nop_ (); _nop_ ();

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

/ / 읽기의 I2C

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

서명 숯불 ReadI2C (비트 ACK_Bit)

(서명되지 않은 문자 데이터 = 0;SDA는 = 1;

(I2 = 0; I2 <8; I2 )에 대한

(

SCL = 1;

데이터 <<= 1;

데이터 = (데이터 | SDA는);

SCL = 0;

_nop_ ();

)만약 (ACK_Bit == 1)

SDA는 = 0; / /는 ACK 보내기

그 밖의

SDA는 = 1; / / 아니오는 ACK 보내기_nop_ (); _nop_ ();

SCL = 1;

_nop_ (); _nop_ ();

SCL = 0;반환 데이터;

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

// Read 1 byte form I2C
//-------------------------------

숯불 ReadBYTE 서명 (서명이 int 주소)

(

서명되지 않은 문자 데이터;

시작 ();

WriteI2C (0xa0을);

/ / WriteI2C ((서명 숯불) (주소>> 8) &를 0xFF); / / .... 작은 EEPROMs에 유효하지

WriteI2C ((서명 숯불) 주소 &를 0xFF);

시작 ();

WriteI2C (0xA1);

데이터 = ReadI2C (NO_ACK);

그만 ();

반환 (데이터);

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

/ / 쓰기의 I2C에 1 바이트

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

무효 WriteBYTE (서명 int 주소, 서명되지 않은 문자 데이터)

(

시작 ();

WriteI2C (0xa0을);

/ / WriteI2C ((서명 숯불) (주소>> 8) &를 0xFF); / / 보내 높은 주소 .... 작은 EEPROMs에 유효하지

WriteI2C ((서명 숯불) 주소 &를 0xFF); / / 낮은 주소로 보내

WriteI2C (데이터);

그만 ();

)

 
여기 몇 가지의 I2C 코드 예제.

자신을 도와주세요.
미안하지만, 당신이 첨부 파일을보기 위해서는 로그인이 필요

 

Welcome to EDABoard.com

Sponsor

Back
Top