멀티플 주소 / pic18F에 데이터 버스

J

jboud

Guest
안녕 모두,
난 포트 패 추가 멀티 플렉스 / 데이터 모뎀 (mfrc531)을 제어하는 데 사용할
그리고 여기 내 읽기 함수입니다 :

서명되지 않은 문자 읽기 (서명 숯불 추가)

(서명 숯불 발;

SET_TRIS_D (0x00);
output_d (추가); / / 주소
보내기delay_cycles (1);
output_high (ALE);
delay_cycles (1);
output_low (ALE);
delay_us (3);
output_low (NRD);
SET_TRIS_D (를 0xFF);
delay_us (3);
발 = input_d (); / / 데이터를주고받습니다
delay_cycles (1);
output_high (NRD);
delay_cycles (1);

반환 발;
)문제가 발 내가 보낸 주소 값은 previsiouly은 걸립니다.

나는
그 문제를 찾을 수없습니다.

난 정말 당신의 도움을 받고 감사하겠습니다.

융숭히

 
안녕 모두,
난 포트 패 추가 멀티 플렉스 / 데이터 모뎀 (mfrc531)을 제어하는 데 사용할
그리고 여기 내 읽기 함수입니다 :

서명되지 않은 문자 읽기 (서명 숯불 추가)

(서명 숯불 발;

SET_TRIS_D (0x00);
output_d (추가); / / 주소
보내기delay_cycles (1);
output_high (ALE);
delay_cycles (1);
output_low (ALE);
delay_us (3);
output_low (NRD);
SET_TRIS_D (를 0xFF);
delay_us (3);
발 = input_d (); / / 데이터를주고받습니다
delay_cycles (1);
output_high (NRD);
delay_cycles (1);

반환 발;
)문제가 발 내가 보낸 주소 값은 previsiouly은 걸립니다.

나는
그 문제를 찾을 수없습니다.

난 정말 당신의 도움을 받고 감사하겠습니다.

융숭히

 
타이밍이 가장 가능성이 문제가되고있습니다.당신의 실험에 대한 호출 사이의 최적의 지연을 찾아야만합니다.지연 befor 증가 포트 읽어보십시오.

문장에있는 코드는 무엇입니까?
output_d (추가);
발 = input_d ();

이러한 기능 또는 매크로가 있습니까?

글을 쓰기가 더 나을 것
LATD 추가 =;
발 = PORTD;

만약 이러한 기능을하는 함수를 호출의 오버헤드를 방지합니다.

만약 그들이 매크로들을 사용 dont있다.그들은 코드의 이해를 타켓이 불분명하고 아무것도 제기되고있어 매크로 문자열을 대체 하락.

 
답장 주셔서 감사합니다.

output_d ()를 추가하고, 발 = () 함수는 CCS 컴파일러에 의해 제공 input_d.
우리는 그들의 부대를 액세스할 수없습니다.

내가 노력할 것입니다

LATD 추가 =;
발 = PORTD;

그리고 난 당신을 알려줄
것입니다
융숭히

 
안녕하세요 jboud

당신은 포트와 포트
소나무하지 물고 독서 수있습니다 것 같습니다
- 생성된 어셈블리 코드 (PORTD) 등록 확인 0xF83
독서
나는 그 전에 TRISD를 0xFF 배치됩니다 좋습니다 제외어 읽기 Strobe (NRD)

넌 잘 버스 경합와 문제가있을 수있습니다.

the MFRC531의 문제, 국가는 데이터 라인을 밝혀주는 65ns의 읽기 스트로브의 주요 부정적인 가장자리 NRD의 내에 제기되어야한다 없었 보호 데이터 시트,.

최대 클럭에서 명령어 18F452 100ns 당 소요 - 버스 방출 () 주장 이후 스트로브를 0xFF trisd 너무 늦었어!

내가 타이밍
- 지연의 대부분을 읽어들이 40MHz에서 불필요한있다 18F452 함께 제거될 수있습니다.

이게 도움이 되었으면 좋겠 - 박식

 

Welcome to EDABoard.com

Sponsor

Back
Top