컨트롤러"더

G

Guest

Guest
안녕하세요,

내 application.I 'm에 CCS는 C 컴파일러, 16F877, 24LC256 및 desing.Can 난 프로 테우스를 사용하여 100 개 이상의 메모리를 필요로 매니저에게 동일한 핀에 가능한 I2C 메모리를 하나 이상 사용합니까?나도 같은 줄에 4 24LC256)를 사용 가능인가요? 877의 (같은 핀 싶어그렇다면, 어떻게 그것을 사용할 수 있습니까?이 모든 프로 테우스 DSN을 파일을?아니면 나를 위해 몇 가지 간단한 괜찮을거야

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="미소" border="0" />감사합니다

분석기.

 
일반적으로, 가능한 I2C 칩은 세 개의 추가 핀을 : A2에서 - A0있다.이러한 핀 및 I2C 디바이스의 주소 부분을 나타내는 0 또는 1로 서로 다른 칩을 다른 주소를 할당하는 데 사용될 수있는 연결되는.그래서, 당신이 칩을 개별적으로 주소가있습니다.24LC256 시트 체크하면 자세한 정보 필요합니다.

에이스 - X입니다.

 
일반적으로 모든 가능한 I2C 장치가 이미 자신의 주소를 가지고.가능한 I2C 디바이스는 또한 가족이 미리되어 주소를 비트 주소를 약간 수정을 선택합니다.예를 들어 24CXXX eerom 메모리 주소를 1010 비트가됩니다 칩에 대한 약간 변경을 선택하실 수 A2에서 대답 A2에서, 당신이 비트에 의해 논리가 낮은 또는 인사 (GND로 또는 Vcc) IC를 위해 이러한 핀 또는 메모리를 연결하면 무엇에 액세스하도록 설정할 수있습니다 지금은 그냥 주소에 대한 이러한 칩 부탁드립니다.포트 확장기 등과 같은 다른 장치에 대한.그래서 메모리 장치와 섞으면 가족이 코드를 제조하여 변경됩니다.난 우리가 한 줄에 10 개 이상의 장치를 사용할 수있습니다 같아요.한 라인에 장치를 많이 사용하여 전체 becare해야 한가지가 sda를하고 SCL의 저항 값을 끌어입니다.만약 당신이 잘 할 수있습니다 저항 계산 또는 일부 회로를 올려 정확하게 라인을 전송 데이터 및 클럭에 도움이되는 장거리와 장치를 많이 사용합니다.난 4 24lc256와 학자 구축되어 있고 그들이 잘하고있습니다 ...

 
마찬가지로 장치 3 주소를 가지고 당신 I2C 버스에 넣고 8 디바이스 핀을 확인됩니다.
생각, 그냥 당신이 시리얼 플래시 간주되지 않습니다 - 훨씬 더 큰 메모리 크기 ( "1MB를) 사용할 수있습니다.

안부
sjo

 
그래서,

이런 장치를 연결해야합니까?:

내가 방법에 의해 ""분석기에서 로그인할 수없습니다 :

난 jpg이 그것을 변화와 vterm했다.
미안하지만, 당신이 첨부 파일을 보려면 로그인이 필요합니다

 
[인용 = "ergen"]
이런 장치를 연결해야합니까?
[인용]

그래, 맞아 맞아.이제 당신 EEPROMs 주소가 : 1,010,000 및 1,010,001.에이스 - X입니다.

 
흠,

정말 이런 addresses.I '난 내가이이 코드와 배선 테스트 CCS는 C 컴파일러 3.168 및 프로 테우스 6을 사용하여 사용하는 혼란 스러워요 :

# "에 c :를 포함 \ ..... \ I2C_Mem.h"
# 포함 "24128.c"
#를 사용하여 RS232 (보오 = 19200, xmit = PIN_C6, rcv = PIN_C7)

메인 무효 () (

int16 c 팀, 내가이야;

init_ext_eeprom ();

C = 1; 전 = 50;

이야 = 32000;

printf ( "쓰기 \ n \ r에");

반면 (C "100) (WRITE_EXT_EEPROM (짜리 c s의 난);짜리 c ; 난 ; 경우는 (i"100) 전 = 50;)

C = 1; 전 = 50;

printf ( "읽기 \ n \ r에");
반면 (C "100) (printf ("% c "로, READ_EXT_EEPROM (짜리 c 들));짜리 c ; 난 ; 경우는 (i"100) (전 = 50; printf ( "\ n \ r에 ");}}

printf ( "\ n \ rFinished");
)

주소, 내가 뭔가를 놓친 것, 그리고 난 아무 생각하는 방법을 첫 번째 메모리 .. 이랑 얘기를해야이 코드는 만약 0 작품 "들"32676 그래, 내가 두 번째 메모리에 액세스할 수없는 것 같아요.내가 끝내 가까이 있어요

분석기.

 
분석기를 썼습니다 :

정말이 주소를 사용하여 혼란 스러워요.
 
470k 너무 가능한 I2C mabee 470 옴이나 4.7k 아니지만 470 k가 낮은 최대 당겨입니다!

 
# 포함 "24128.c"
# ifndef EEPROM_SDA

EEPROM_SDA PIN_B1 정의 #
EEPROM_SCL PIN_B0 정의 #

# endif

(x)를 (* (& x 1)) 안녕하세요 정의 #

) 가능한 I2C (마스터, sda를 = EEPROM_SDA, SCL = EEPROM_SCL 사용 #

EEPROM_ADDRESS 오래 int 정의 #
EEPROM_SIZE 16384 정의 #

무효 init_ext_eeprom ()
(
int 난;

output_float (EEPROM_SCL);
output_float (EEPROM_SDA);
delay_us (4);
위한은 (i = 0; 난 "3; 난 ) (
i2c_start ();
(0xa0을) i2c_write;
(0xff) i2c_write;
(0xff) i2c_write;
경우는 (i == 2)
(0x2로) i2c_write;
그 밖의
i2c_write (0x2로 전);
i2c_stop ();
)
)무효 write_ext_eeprom (긴 int 주소, 바이트 데이터)
(
i2c_start ();
i2c_write (((0xa0을) | (안녕하세요 (주소) ""5)) & 0xFE);
i2c_write (안녕하세요 (주소) & 0x3f);
(주소) i2c_write;
(데이터) i2c_write;
i2c_stop ();
delay_ms (10);
)read_ext_eeprom 바이트 (긴 int 주소) (
바이트 데이터;

i2c_start ();
i2c_write (((0xa0을) | (안녕하세요 (주소) ""5)) & 0xFE);
i2c_write (안녕하세요 (주소) & 0x3f);
(주소) i2c_write;
i2c_start ();
i2c_write ((0xa1) | (안녕하세요 (주소) ""5));
데이터 = i2c_read (0);
i2c_stop ();
반환 (데이터);
)

이것은 헤더 드라이버 파일 I using.Here i2cwrite이 프로토 타입은 오전있습니다 :

i2c_start (); / / 시작 상태
i2c_write (0xa0을); / / 장치의 주소
(cmd를) i2c_write; 명령의 / / 하위 바이트
i2c_write (cmd를 ""8); 명령의 / / 하이 바이트
i2c_stop (); / / 정지 상태

내가 처음 i2write을 변경할 권리가 rigth address.Am 내가 선택할 필요 한가?:

무효 write_ext_eeprom (긴 int 주소, 바이트 데이터)
(
i2c_start ();
i2c_write (((0xa0을) | (안녕하세요 (주소) ""5)) & 0xFE); / /이 라인을 변경해야
i2c_write (안녕하세요 (주소) & 0x3f);
(주소) i2c_write;
(데이터) i2c_write;
i2c_stop ();
delay_ms (10);
)

내가 (...). write_ext_eeprom (...) 그리고 read_ext_eeprom 재작 성해야합니다어떻게 내 헤더 파일을 변경해야합니까?

분석기

 

Welcome to EDABoard.com

Sponsor

Back
Top