함께 두 PIC18Fxxxx 마이크로 컨트롤러의

M

mikkolaa

Guest
안녕하세요,

두 PIC18F6520 간의 통신 프로그래밍 whitch 시작 프로그램입니다.
(SPI의 사용도 가능합니다,하지만
SPI는 장치 사이의 최대 케이블 길이 무엇입니까?)
이 프로토콜은 매우 쉽습니다.그것은 한 번에 오직
2월 4일 바이트를 보낼 것입니다.
내가 두 번째 PIC는 오류 코드를 보낼 필요가 있기 때문에 듀얼 마스터 모드를 사용하는 것
마스터 PIC는.
프로젝트의 시작은 I2C 어떻게해야하는지
전혀 몰라.(마스터 PIC는 지금 노력하고있습니다
의 I2C하지만, 다음에 내가 "노예"와 현재를 "마스터"그림의 I2C 프로토콜을 작성하는 것입니다.

내가 MPLAB
7월 4일은 ASM 코딩을 사용하겠습니다.

어떤 프로젝트를 시작하기 위해 할 수있는 당신이 사람들을 조언?예제 코드는?
내가 PIC18C 레퍼런스 매뉴얼있다.

 
안녕하세요!
만약 당신이 우리를 여러분의 프로젝트에 대해 더 많은 정보를 얻을 수있다면 좋을 것이다!
그러니, 제발, 그리고 우리에게 보여주 프로젝트를 설명하는 몇 마디에 당신이 뭘했는지 지금까지.
마지막으로 귀하의 질문을 우리에게 물어 봐라!
안부

 
Kabanga 썼습니다 :

안녕하세요!

만약 당신이 우리를 여러분의 프로젝트에 대해 더 많은 정보를 얻을 수있다면 좋을 것이다!

그러니, 제발, 그리고 우리에게 보여주 프로젝트를 설명하는 몇 마디에 당신이 뭘했는지 지금까지.

마지막으로 귀하의 질문을 우리에게 물어 봐라!

안부
 
안녕하세요,

나는 매우 당신이 뭘하려는지 너무 오래 전에 비슷한 소리가 뭔가를 해보려고했다.

때문에 아마도 칩상에서 가장 복잡한 의사 소통 방식이다 결국 난에의 I2C를 사용하지 않기로 결정했다.

그들이 훨씬 더 쉽게 구현할 수있다면 그걸로 USART 또는 사용하는 것이 좋습니다 것이 EUSART하실 수있습니다.

내 프로젝트를 내가 또 내가 칩은 하나의 마스터와 슬레이브 장치가 여러 단위 건물에 필요한 여러 디바이스간에 comunicate.상당히 일상적인 얘기를 할 수 있도록 개별적으로 노예가 쉽습니다.


9 비트 모드를 사용하여이 다.이 여분의 비트 하나 더하기 하나가 전송되고 싶어 바이트를 보낼 수있습니다.만약 네가 그렇게한다면 주소 1 장치를 한 번에 전송되는 말할 수 나타내기 위해이 비트를 사용합니다.

그것을 하나의 칩에에서 다른 데이터의 짧은 peices지고의 안정적인 방법이 될 수 있도록 노력하고 좀 빠른 것 같다.

난 당신의 장치에 16f877A 장치 메신저이 작업을 진행하게하는 간단한 작업이 될 것이라고 확신 같이 일하던 비록.

면을 그게
가장 핀 할당의 변경이 필요한 의사 소통의 가능성이 양식으로 마이 그 레이션하는 것이지만,하는 거꾸로 당신이 긴 코드를 작성의 나머지 지출을 늘지고있다.

행운을 빈다!

 
shaun_c_m 썼습니다 :

안녕하세요,나는 매우 당신이 뭘하려는지 너무 오래 전에 비슷한 소리가 뭔가를 해보려고했다.때문에 아마도 칩상에서 가장 복잡한 의사 소통 방식이다 결국 난에의 I2C를 사용하지 않기로 결정했다.그들이 훨씬 더 쉽게 구현할 수있다면 그걸로 USART 또는 사용하는 것이 좋습니다 것이 EUSART하실 수있습니다.내 프로젝트를 내가 또 내가 칩은 하나의 마스터와 슬레이브 장치가 여러 단위 건물에 필요한 여러 디바이스간에 comunicate.
상당히 일상적인 얘기를 할 수 있도록 개별적으로 노예가 쉽습니다.난 9 비트 모드를 사용하여이 다.
이 여분의 비트 하나 더하기 하나가 전송되고 싶어 바이트를 보낼 수있습니다.
만약 네가 그렇게한다면 주소 1 장치를 한 번에 전송되는 말할 수 나타내기 위해이 비트를 사용합니다.그것을 하나의 칩에에서 다른 데이터의 짧은 peices지고의 안정적인 방법이 될 수 있도록 노력하고 좀 빠른 것 같다.난 당신의 장치에 16f877A 장치 메신저이 작업을 진행하게하는 간단한 작업이 될 것이라고 확신 같이 일하던 비록.면을 그게 가장 핀 할당의 변경이 필요한 의사 소통의 가능성이 양식으로 마이 그 레이션하는 것이지만,하는 거꾸로 당신이 긴 코드를 작성의 나머지 지출을 늘지고있다.행운을 빈다!
 
안녕,
나는 소설에 나의 I2C를 통해 bus.There도의 EEPROM, RTC 및 DAC는 동일한의 I2C 버스에 두 개의 장치를 연결 오전 PIC18F8722 비슷한 프로젝트에 일하고있다.

마스터 CPU로 데이터를 보내는 동안 노예에서 오전하지만 문제가있습니다.
제대로 마스터 슬레이브로 데이터를받을 수있습니다.

하지만 최대한 빨리 노예로부터 데이터를 읽고, 마스터 달려있 및
BF 비트에 대한 set.It되기를 기다리는 것 같다 계속 SCL 라인을 영구적으로 낮습니다.

RTC를 master.Please으로 의사 소통에 사용되는 동일한 코드를 사용하고
난 다음을 참조 :

StartI2C ();
IdleI2C ();
varslave1 = putcI2C (주소); / / 제어 바이트 쓰기
IdleI2C ();
varslave1 = putcI2C (0xAB);
IdleI2C ();
StopI2C ();

StartI2C ();
IdleI2C ();
varslave1 = putcI2C (주소);
IdleI2C ();
varslave1 = getcI2C (); / / 슬레이브에서 데이터를
읽어IdleI2C ();
StopI2C ();

슬레이브 CPU를 노예에 대한 인터럽트 I2C.The 코드를 사용할 수있다 :
무효 I2CInterruptHandlerHigh (무효)
(
바이트 var;
INTCONbits.GIE = 0; / / 지구 해제 방해
만약 (PIR1bits.SSP1IF) /의 I2C 노예로 인터럽트
반응 /(
그래서 그것은의 I2C 슬레이브 변속기의 / / 그만의 I2C 비트 (페이지 81) 감지
/ * 만약 (SSP1STATbits.P == 1)
(
SSP1BUF = 0; / / SSPBUF = 0 (페이지 19)
SSPCON1bits.CKP = 1; / / (SSPCON, 4) 일명 CKP set_bit, SSPBUFF를 작성해야합니다 (페이지 82)
전에) * /

만약 (SSP1STATbits.BF == 1) / / 다른 사람은 / /의 I2C 슬레이브 접수
(

AddDelayMs (10);
gFnCode = SSP1BUF; / / 데이터를 저장할
var = putsI2C (0x31); / / 마스터에 데이터를 전송
ComputeENQ (gFnCode);
)

= 0 PIR1bits.SSP1IF;
) / / 최종
INTCONbits.GIE = 1; / / 인터럽트 글로벌 활성화
)

나는 완전히 lost.Any 도움을 크게 받고있다.

감사합니다,
아미트요

 
나는 동일한 문제가 않았다.그래서 내가 도울 수 없어요.
전 마이크로 칩의 I2C 하드웨어가 정말 쉽지 않을 것
어셈블러 ().
거의 한달은 I2C 문제와 함께 일했다.
오늘은 SPI를하거나 유사한 통신 교체
소프트웨어 기반의 데이터 통신.
Reazon 그 같은 그물에있는 다른 장치가 없어, 난 더 이상 사용하지 않습니다 wan't 마이크로 칩의 I2C 모듈을 시도하는 시간을 사용하는 것입니다.

통신 프로토콜 질문입니다.난 내 패킷을 전송하고 데이터를 수신 거대한 겨우 몇 바이트가 필요하지 않습니다.(몇 가지 데이터 바이트 및 cheksum).

 
동료,

그것을 실행 시간 동안의 I2C 마스터 및 슬레이브 모드 사이의 SSPCON 등록을 서면으로 전환이 가능한가요?

이 시스템에서 두 PICS는 것이다.하나, 다른 하나는 프로세스 제어됩니다 디스플레이를 처리합니다.과정이 잘못되면 안을 실행하면, 디스플레이 PIC은 마스터해야한다.이 프로세스가 실행되면, 디스플레이 PIC은 매개 변수를 표시해야한다.그러나 문제는 내가 그 사람에서
사람 컨트롤 PIC는 펌웨어의 현재 버전을 개발 요구 사항,, 그 컨트롤은 PIC의 시리얼 통신에 방해를해서는 안 될 것입니다.내가 할 때이 과정을 실행하는 multimaster
버스, 어디에 PIC은이 과정을 통제하는 마스터, 만드는 방법에 대한, 그리고 숙고 마일의 표시 PIC는 마스터 시간의 휴식을위한 것입니다.아마도 난 너무 핸드 줄을 추가 갈게.당신은 이것이 좋은 방법이라고 생각하십니까?

환호,
- 닉

추신
: 또 다른 옵션은 수있는 피어
- -로 시작하는 버스와 피어의 I2C를 교체하는 것이다.Unfortunaltely, 그것도
그것을 할 늦었어.

 
너무 늦은 것조차 구현할 수있는 것보다 더 나은 린,하지만 당신이 언급했다.

 

Welcome to EDABoard.com

Sponsor

Back
Top