10.07.2015 Views

cubloc_manual2.pdf

cubloc_manual2.pdf

cubloc_manual2.pdf

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

R/W Repeated Start R/W NoAckS CONTROL BYTE 0 A HIGH ADDRESS A LOW ADDRESS A S CONTROL BYTE 1 A DATA X PS : StartA : AcknowledgeP : StopRead PointRead Point 라고 쓴 지점에서 비로소 EEPROM 으로부터 데이터를 읽어오게 됩니다. 앞 부분은 데이터를 읽어올 어드레스를 셋팅하는 과정입니다. 이를 큐블록 프로그램으로 정리하면 다음과 같습니다.SET I2C 8,9‘8 번을 SDA 로 9 번을 SCL 로 정의I2CSTARTIF I2CWRITE(&H10100000) = 1 THEN ERR_PROC ‘칩선택 어드레스가 0 일 경우IF I2CWRITE(ADR.BYTE1) = 1 THEN ERR_PROC ‘ADDRESS WRITEIF I2CWRITE(ADR.LOWBYTE) = 1 THEN ERR_PROCI2CSTART‘Repeated StartIF I2CWRITE(&H10100001) = 1 THEN ERR_PROC ‘이번엔 읽기 명령으로..DATA = I2CREAD(0)‘결과는 DATA 에 저장됨.I2CSTOP이번엔 여러 개의 데이터를 반복적으로 읽어오는 방법에 대하여 설명하겠습니다. 앞에서 1 바이트만 읽어오는 부분의 맨끝에 STOP 조건을 발생시키지 않고, 계속 읽어온다면 EEPROM 내부에서어드레스가 자동적으로 1 씩 증가되므로, 인접한 어드레스에 대하여 계속 읽어올 수 있습니다. 여러 개 데이터를 연속적으로 읽을 경우, 이렇게 한다면 앞부분의 어드레스 셋팅에 들어가는 시간을절약할 수 있습니다.SET I2C 8,9‘8 번을 SDA 로 9 번을 SCL 로 정의I2CSTARTIF I2CWRITE(&H10100000) = 1 THEN ERR_PROC ‘칩선택 어드레스가 0 일 경우IF I2CWRITE(ADR.BYTE1) = 1 THEN ERR_PROC ‘ADDRESS WRITEIF I2CWRITE(ADR.LOWBYTE) = 1 THEN ERR_PROCI2CSTART‘Repeated StartIF I2CWRITE(&H10100001) = 1 THEN ERR_PROC ‘이번엔 읽기 명령으로..FOR I = 0 TO 10ADATA(I) = I2CREAD(0) ‘10 바이트를 연속읽기, ADATA 는 배열NEXTI2CSTOP참고사항I2CREAD 에서는 Acknowledge 에 대한 확인을 하지 않습니다. Acknowlege 는 칩의 유무, 선의단락, 전원의 이상이 있을 경우를 확인하기 위해서 사용하는데 이미 앞에서 실행한 I2CWRITE에서 확인되었기 때문입니다. I2CWRITE 에서 이상이 없었다면, 불과 수 마이크로 초 뒤 상황에서이상이 발생될 가능성은 극히 드물기 때문에, I2CREAD 에서 Acknowledge 체크를 하지 않습니다.246

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!