[도움말] 8051 sensirion SHT7X 디지털 센서 인터페이스

A

aaron8390

Guest
나는 그것에 대해 몇 가지 질문

첫째,이 센서 수있는 인터페이스를 89c52로, 어셈블리 언어를 사용하는가?

이 디지털 센서 인터페이스를하려고하지만, 아직까지는 LED에 출력을 테스트 할 때 사용 stucked 및 어셈블리 언어를 디자인했다에는 그 결과, 이러한 LED는
그냥 날 "점멸"과 그 이후에 아무 반응이없고 3주고있다.

나는 내 어셈블리 언어 코딩 첨부된 너희들이 나를 여기 코멘트 및 안내를 즐겁게 해줄 수있다 그것에 대해?이제이 프로젝트를하고있는 나는 정말 긴장 ...

그리고 또한이 센서의 데이터 시트를 부착

기본적으로이 센서 인터페이스 :
A)를 전송 신호를 보내기 시작
B 조), 명령을 보내기도 온도 또는 humidty meassure로
센서는 C) 잠깐 측정 완료
D)를 직렬 형태의 데이터를받습니다.
미안하지만, 당신이 첨부 파일을보기 위해서는 로그인이 필요

 
죄송 해요, 전 여기 내 코딩 첨부해 주시기 바랍니다.

난 모든 간격과 배치하기 때문에 매우 깔끔하게 마무리, 그냥 왼쪽에있는 모든 것들을 쥐어 짜기가 내 여기 코딩을 게시할 수없습니다.

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

 
안녕,
귀하의 질문의 첫 번째 부분을 들어, 그래, 89C52 어셈블리 언어를 이용한 센서 인터페이스를 가능해야한다.두 번째 부분을 들어, 나중에 다시 얻을 것이다.또한 그 동안 계속 시도합니다.
안부,
Laktronics

 
야아 ... ... 나도 노력뿐만 강사 부탁하고 싶은게있다.

기꺼이 도와 주셔서 감사합니다!!

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="매우 행복" border="0" />
 
안녕,
당신이 원하는 경우에는, 귀하의 코드의 진정한 엔드로 이동해야하는 최종 성명을 제외하고 그것을 성공 했어야 테스트 프로그램.엔드의 장소에서, 당신은 시작하는 ljump를 게재할 수있습니다.
또한, check
sum을 어떻게 받아 들이든 상관 바이트를 제거하면 읽어도 그것을 거부 할 수있습니다.또한 지난 안함는 ACK 비트를 생성하는 sck 펄스 필요
안부,
Laktronics올린날짜 2 시간 10 분 후 :안녕,
또한 다음의 포인트를 참고하시기 바랍니다 :
1.당신은 11 밀리초의 최소 지연을 제시해야합니다.시작 부분에있는 센서에
대한 명령을 보내기 전에, 일단 처음에 또한 지연 루틴을 호출합니다.
2.MSB는 처음 센서 출력,하지만 당신은 LSB가 처음에 그들을 저장할 수있다.mov 인 p0.6, C 코드를 두 번 반복됩니다.
3.또 센서는 바이트 공급 장치, 컨트롤러를 생성할 수있다는 ACK -.첫 번째 데이터 바이트를 읽고 나면, 당신은 데이터 비트 9 비트에 대한 긍정적인, 그래서는 ACK 보관가 없는데 명령이 종료됩니다.로 변경 - 봤어요.당신은 두 번째 바이트 이후는 ACK를 지켰지
없는데 또한,이 센서는 당신이 내 질문에 대한 답변은 이전 게시물에 체크섬 바이트 싫다고 말해 한 방법입니다.
마스터에서하지만, 센서의 초기 상태로 생성하는 경우 명령 상태의 시작으로 모셔오면 언제든지 가정해, 지난 SCK 없는데는 ACK 대응이 필요하지 않을 수도있습니다.
4.귀하의 코드를 만들 수 서브루틴을 작성하는 경우는 다음 상태에 대한 매우 컴팩트한 보면 :
a.시작 명령을 생성합니다.
b.사령부 (어큐뮤레이터를 명령 바이트 지주) 보내기
3.읽기 바이트 (Accu. 읽을 바이트 재방)
4.체크는 ACK에 대한 종속에서
5.해지할 사령부 () 없는데는 ACK 보내기

안부,
Laktronics

 
안녕, 감사합니다

귀하의 가이드에 대해서는, 제가 1,2 및 3에 대한 변경을했다.

제가 몇 가지 질문
가)있다면, 오전은 CRC 체크섬을 사용하지 않는 문제입니까?
b) 항은 CRC 체크섬을 사용하지
않을 경우에는 제가 오전, 데이터 시트에, 난 그냥 건너뛸 필요는 ACK했다.이 확인을해야 맞죠?다른 측정을 필요로하는 경우, 그냥 리셋 버튼을 누르세요.아니면 아직도 는 ACK 필요?

C) 어셈블리 언어 제한된 지식을 가지고,하지만
난 노력을 기꺼이.내 코드 컴팩트 아이처럼 보이게 있음, 만약 내가 어큐뮤레이터를에서 바이트, 어떻게 시리얼 (비트 양식)에있는 센서로 보내 저장할 SCK 맥박과 평행?

또한 측정
직렬 형태도했지만 유로 어큐뮤레이터를 바이트 형태로 복귀할 수있을 것이라고 바이트를 읽을 수있습니다.어떻게해야 성공할까요?

 
안녕,
1.1,2 및 3 당 후 포인트로 변경 사항을 어떻게 된거야?
나는 네가 마지막 라인에 귀하의 프로그램에있는 모든 코드 후 최종 지시자 이동했을 것 같은데.
또한, 나는 어제 그것이 0x0000에서 Sjump 대문을하는 경우에만 레이블을 대문과 함께 메인 프로그램을 시작하는 좋은 연습입니다 언급
: 후 벡터 주소 영역 어떤 미래에 대한 사용을 방해 소유 떠나 벡터 인터럽트 주소 공간 영역을 방해하고 깜빡 .

2.내가 이미하고있다는 또한 데이터 시트에 표시된대로, 가능하다면해야 두 번째 바이트는 ACK를 전송하여 독서 후 없는데 당신은 CRC 바이트 센서 싫다고 말해.내가 만약 당신이
없는데는 ACK와 통신 시퀀스를 해지할 수 없어 무슨 일이 일어날 지,이 제도도의 I2C에 사용되었는지 확실하지 않습니다.만약 당신이 언제든지, 센서는 새로운 명령 시퀀스는 다시 시작할 수있는 실험과 나에게도 함께 얻을 수있습니다 명령 상태의 시작을 보내 알아 직관적으로 느낌이 들어.그것도 현재의 순서를 제대로 종료하지 않는 한 그 센서 로직 명령의 시작을 수락하지 않을 수있습니다.

비록 그것이 명령의 실행의 표준 방법이 아니라는 그러나 만약 당신이 시스템의 전원을 사용하여 -에 재설정되며, 센서, 새로이 시작한다.

3.당신이 축적에 보내도록 명령 8 비트를 저장할 수있습니다., 일상, 일상에 대한 지침을 사용합니다 보내 RLC 전화 루프에서
8 번 및 각 시간 과정으로,
그리고 마지막으로 the는 ACK를 확인했을 다니는 -도 아홉 번째로 비트 및 반환합니다.
4.당신을 수행하는 동안에, 다음 어큐뮤레이터를로 교대로 RLC 바이트 명령어 비트의 데이터를 읽습니다, 바이트, 비슷한 서브루틴을 받게 할 8 번 다음 - 봤어요 / 전송 없는데는 ACK와 통해 Accu 돌아 갑시다.읽기 바이트를 포함합니다.
안부,
Laktronics

 
이봐, 다시 한번 감사

늦게 답장, 내 대학에 대한 죄송합니다.연구실을 주말에 오픈하지 않습니다.그래서 난 그냥 새로운 코드를 테스트를 마친 이일.

글쎄 난 아직 1 2 3도 일부 담합 후 출력을 얻을 수없습니다!

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="슬픈" border="0" />내가 당신의 안내에 따라 최신 코드를 업로드할 수있습니다.(컴팩트하지 않은 코드를 아직, 제가 공부하고 나중에 그것을 할 필요, 후) 시험 결과를 인수한제가 하드웨어에 관한 몇 가지 질문이있다.
1) 센서 난 그냥 데이터 시트에 따라 오른쪽에 연결하는 데 필요 한가?마찬가지로 microC의 P1.0, 5V 서플라이 핀 3 지상과 microC의 데이터 P1.1에 4 핀과 외부의 저항 만 올려 2-1로 핀 SCK 핀.

2) 그 결과 P0.0
- P0.4 ()에서 확인하기 위해 5 개의 LED.LED가하면 센서에있는 회로에 퍼팅도없이.만약 내가 그 결과 오른쪽 obtainied 및 센서와 함께, 결과는 각 포트 LED가 트리거 비트에 저장됩니까?지금은 LED를 dont 트리거, 그래서 결과를 얻을 수 없다는 생각 =.=...

3)이 5 개의 LED와 저항을 올려 공유하는 데이터 라인의 같은 롤, 괜찮 아요?이나 데이터 라인에 대한 독립적인 저항을한다.

수있다면 센서가 작동
- 4) 다른 방법을 확인하기 위해?이 같은 테스트 게다가, 어쩌면 @ 센서 버릇!

마지막으로,
2 바이트 해지는 ACK 후, 코드에 포함됩니다 시도해 연구실에 내일,하지만 만약없이 지금의 내 인생의 LED도 트리거링해야 맞죠?

다시 감사합니다!!
미안하지만, 당신이 첨부 파일을보기 위해서는 로그인이 필요

 
안녕,
잠시 후 다시 하겠지만 그 동안에,
당신은 추가한다 'LJMP 메인'기본 루틴의 끝 부분에, 레이블 전에 CLR은 데이터 : 다른 데이터를 통해 귀하의 코드를
CLR은 한 시간이 지나면 메인 일을
실행하는 것이다 .또한 메인 자리하고 싶습니다 : 레이블
ORG를 0000X 지시문 후, 비록 그게 문제가되지 않을 수있습니다.

귀하의 포인트에 대해서는

1.당신이 설명
그래, 너, 데이터 시트에 따라 센서를 연결한다.

2.네, LED를 독서의 5 LSBs을 보여야한다.

3.LEDs 또한, 별도로 사용할 필요가 없다 올려 pullup의 기능을 다할 것입니다.

4.센서를 테스트하는 유일한 방법은 당신이하지 않는 등 몇 가지 잘못된 공급을 연결했을뿐, 당신은 센서로 시작하려면 확인을 기대 할 수있다.

5.또 한번 일을하지만, 위에서 언급한없이 LED를 기대할 수있는 LJMP하여
CPU가 통제 불능으로 갈 수있습니다.그리고 그렇게되면, 당신은 긍정적인 명령을 종료할 필요가있습니다 LJMP는 ACK와 함께 넣었어요!!

6.또한, 당신은 당신이 올바르게 입력, 평면 유형이나 IC 유형으로 이해, 평면 타입의 핀 1
마크 부근의 핀 장치, 핀 번호를 식별 해줬으면 좋겠다.

안부,
Laktronics

 
안녕,
또한 다음의 수정이 필요합니다 :
1.LJMP 대신의 메인 루틴, 후 첫 지연 통화 LJMP 할 메인으로
메인 후 :.
2.당신 SETB - DATAA에 ACK는 이후 첫번째 바이트의 영수증.데이터 라인의 기본 상태와 그 SCK 항상 낮은해야 높은되어야한다.

난 여기 그 정정 귀하의 코드가 붙어있다.

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

 
늦게 답장을 보내주셔서 다시 한번 죄송 - 임기 중반을 시험 서류.최대한 빨리 알려 유 윌!

 
헤일로, 감사합니다.

내가이 센서를 성공적으로 테스트를했다고 생각합니다.그건 내의 LED에 방아쇠를 내게 준!!
코드 유 가이드 나를 위해, 그것을 읽어 보면 반복되는, 그래서 모든 대해 방아쇠 1sec 내 LED가 계속됩니다.

그리고 난 SJMP $ LJMP strt에서 코드를 편집할 수있습니다.나는 단지 그것을 한번 재보고, 그리고 그게 날 LED가 방아쇠를 한 번주지 않았다 어느 완.

하지만 한가지 질문에,
내가 왜 내 리셋 버튼을 누르면 다른 독서 걸릴 수있습니다 싶어?난 단지 전력 공급을 켜거나 swtiching 가진 새로운 결과를 얻을 수있습니다.

알았,
지금 생각하는 날 위해 실제 가치 비트의 데이터를 변경해야 할 시간입니다.

가)로서 유했다 어큐뮤레이터를에 가게?서재에만 deximal 숫자로 변환?
모든 가이드이나이 코드에 대한 정보로 내가 그것을 공부하고 싶어, 난 내 텍스트를 책으로 그것을 찾을 수없습니다.

b)
항 및 온도 보상을하지 않고, 무엇인지 다양한? 난 temperation 보상이 필요합니까?

C) 데이터 시트에 내가 본, 수식 부분은, 내가
어떻게 "그런식으로 8051에서"가치 equat 수 있습니까?어떤 공부를하게 안내 또는 정보 날 수 있을까?

도와 주셔서 다시 한번 감사합니다!!

 
안녕,
귀하의 코드를 알고 잘 협력하고있다.
그것은 RESET 버튼을 추진하여 독서 걸릴 수 있어야합니다.재설정 왜 작동하지 않습니까?당신은 1K에 대해서는 현재 limitting 저항기, 커패시터를 가로질러 통해 재설정 재설정 스위치를 연결할 수있다.
이제 안전하게 소프트웨어의 작업 복사본을 저장할 수 있고, 복사와 같은 작업을 약간 개선을 위해, 클록 사이클에서 NOPs 줄이는
등 CLR은 C 지침 제거

어셈블러에서, 소프트웨어의 가장 힘든 부분이되는 공학 단위 전환됩니다.당신이 독서를 표시하는 방법을 제안합니까?이러한 인터페이스는 어때?

안부,
Laktronics

 
abit 여기서 혼동.

일부 nops 제거하지 50 % 듀티 사이클을 것입니다.이 어떠십니까?
CLR을 C 명령은 필요하지 않습니다?

공학 단위 전환 무엇입니까?
지금은 비트 결과 난, 변환하고 어큐뮤레이터를 (등) 등록에 팩을 받았습니다에서 말입니다. 그리고 센서의 데이터 시트에 의해 실제 가치를 얻을 수있는 가장 수식을 적용?

이것은 어려운 부분입니까?

알았 나 인터넷에
대한 연구를 abit, 플로트 번호 8051 어셈블리 언어 표현과 함께 작동하지 않을 수 있었어?그럼 .... 어떻게 수식 이행

아직 시작을 어떻게해야하는지 전혀 몰라,하지만 내 강사에게 물어 봤다면 그는 모든 수학적 값 "EQU"내 코드의 시작에있을 수 있다고 말했다.5의 10 전원, 그런 쯤요.그리고 그가 나를 어떻게 진행해야한다의 인터넷에 검색을 요청합니다.

흠, 흠 ...

 
안녕,
1.나는
50 %의 듀티 사이클이 필요합니다, 그게 어딘가에서 언급한 것처럼 생각하지 않아?최대한 멀리에만 최소 클럭 1과 0 레벨 마침표가 언급을 확인하시기 바랍니다.대칭을 원하는 경우에도, 당신은 아직도 시계의 상태는 0과 1에서 일부 NOPs 생각을 제거할 수있습니다.어떤 경우에는 그런 것들을 시도하면 한
번에 한 가지 유형의 변화와 그 이후에 그것을 시험한다.항상 별도의 버전 번호 아래에있는 각 작업을 코드의 사본을 보관.

2.C에 필요로 할 때 당신은 그것을 분명하지 조금 이동하고있다.

3.공학 단위 변환 센서를 사용하여 수치가 eqations 카탈로그에 주어진 실제 물리적 값을 얻을 것을 의미합니다.당신은 어셈블러에서 부동 소수점 계산을 극복하기 위해 다음의 논리를 시도할 수있습니다 :

14 비트 온도의
대답 계산 :
섭씨 온도는 T = -40 0.01 (Rdt) 여기서 Rdt 센서에서 temp.reading입니다.

그래서, T는 = 0.01 [- 4000D Rdt]; 어디 패 10 진수의 약자 및 Rdt 비나 형식입니다.

첫 시제품으로 4000D는 13 비트 위치에서 높은 비트로 반입할 수있습니다.그래서 독서의 13 번째 비트 ..에서
1을 빼야이 시제품은 최종 독서에 추가될 수있는 것에 대해 1degree 섭씨의 오류를 소개하고 다음과 같습니다 :- 1 in 13 th bit) 100D]

그래서 지금의
BCD T는 = 0.01에서 온도 [의 BCD (Rdt - 1의 13 번째 비트에서) 100 D 조]
the 100D 추가되는 오류 근사치로 인해 정확한로 0.01 곱셈의 표시 소수점의 위치에서 처리 될 수있습니다.

나 12 비트 상대 습도 계산 :
Rh = - 4 0.04 (Rdh) -
2.8 * 10 ^ -6의 방정식 (Rdh) ^ 2, Rdh입니다
센서에서 읽고있습니다.
계산 단계 :
가) 시간이되고, 제곱 장기 방치
Rh = 0.01 [4 (- 100D Rdh)]; 패 진수를 위해 버틴다.
이제 약관의 바이너리 산술 광장과 최초의 BCD로 변환 브라켓 시간.
곱셈 0.01와 함께 디스플레이에 소수점을 설정하여 수행할 수있습니다.

b)
항 균형 학기 들어, 낮은 비트가 제로로와 표현의 가치를 계산 Rdh 유지에만 석사 한입 걸릴
b0 =
8월 2일 * 10 ^ -6 (Rdh) ^ 2와 가게는 16 일 MS의 한입에 대한 테이블을 우러러 바이트에의 BCD로 변환했다.반면, BC 주
= 0.01 (2.n1 * n2의 정정 요소 추가)를 MS 한입 n1과 n2 어디 테이블 값, 최종 값을 계산 Rdh의 중간 한입니다.그래서, b = b0 기원전

C) 빼기 b) 항)에 대한 고려에서 0.01의 스케일링 팩터).디스플레이 % Rh로 결과안부,
Laktronics2008년 3월 22일 5:32; laktronics으로 수정한 시간을 1 편집한에 마지막 총

 
안녕,
내가 더 정확한 결과를 얻기 위해서는 것, 당신도, 10 진수 지수 디스플레이 목적을 위해 마침내 소수점의 위치를 조정해야 떠나는 당신이 계산을 위해 16 비트 정수를 산술 노력해야한다.습도 계산이 경우에는, 당신은 LSB가 떠날 수 있고 그렇게되면 28로 여전히 16 비트 숫자가 될 가치를 증식에만 11 비트 정밀도.

안부,
Laktronics

 
반 어느 한 날 7 세그먼트 디스플레이 코드를 보낼까????올린날짜 34 분 후 :모두에게
인사
 
죄송합니다, 그것의 대부분이 제외 이해

b)
항 균형 학기 들어, 낮은 비트가 제로로와 표현의 가치를 계산 Rdh 유지에만 석사 한입 걸릴
b0 =
8월 2일 * 10 ^ -6 (Rdh) ^ 2와 가게는 16 일 MS의 한입에 대한 테이블을 우러러 바이트에의 BCD로 변환했다.반면, BC 주
= 0.01 (2.n1 * n2의 정정 요소 추가)를 MS 한입 n1과 n2 어디 테이블 값, 최종 값을 계산 Rdh의 중간 한입니다.그래서, b = b0 기원전

왜 오직 석사와 LS 한입 한입 한입과 태만 중동 될까?

한 16byte (비트?) 테이블을 보여?이게 뭐야?

안 그렇다면 어떻게 u이 Part B에 대한 보정 계수있어, 알겠어?

 

Welcome to EDABoard.com

Sponsor

Back
Top