ade7753와

K

kbbhushan

Guest
안녕,
내가 프로젝트 ade7753 및 atmega32를 사용하고있는 중이야.
나도 둘 사이에 통신을 설정할 수없습니다입니다.
누가 좀 도와 줘요 수있다.

이것은 SPI는 코드입니다.
int 주 (무효)
(

/ / 우리가 라이브러리를 초기화
/ / 킷에는 UART (직렬 포트)를 초기화
uartInit ();
/ / 우리가 디버깅을위한 킷에는 UART의 전송 속도 설정 / 출력보고
uartSetBaudRate (9600);
/ / 타이머 시스템의 초기화
timerInit ();

/ / rprintf 시스템의 초기화
rprintf 모든 진술에 대한 출력 / / - 사용 uartSendByte
/ /이 모든 rprintf 라이브러리 함수를 직접적인 원인이된다 그들의
/ / 킷에는 UART 출력
/ / - rprintf 어떤 문자가 걸립니다 모든 장치에 출력을 만들 수있습니다.
/ / 당신은 어떤 인자로 서명되지 않은 숯불 걸리는 함수를 작성해야합니다
/ / 그리고 이렇게 rprintfInit이 비밀 번호 : (YOUR_FUNCTION) rprintfInit;
rprintfInit (uartSendByte);

/ / 파라미터 라이브러리 초기화
vt100Init ();

/ / 취소 터미널 화면
vt100ClearScreen ();
sbi (DDRD, 1);
CBI (DDRD, 0);

숯불 결과;
spi_init ();
(0x13, 0x02) ade7753_write_to_reg;
결과 = ade7753_read_from_reg (0x13);
rprintf ( "결과 %이다 라에 \ r \ n", (uint8_t) 결과);/ / spi_tx ();
/ / spi_rx ();/ /)

)

ade7753_write_to_reg 무효 (숯불 addr, 숯불 값) (
rprintf ( "ade7753_write_to_reg 있음에 \ r \ n");
spi_start ();
/ / 커뮤니케이 션 주소를 먼저 등록 쓰기
addr = (addr 0 x80);
rprintf ( "이 주소는 % d 개 쓰여지고있는 동안에 \ r \ n", addr);
spi_tx (addr); reigster의 작성 / / 주소
_delay_us (0.05);
spi_tx (값); 레지스터에 기록되도록하려면 / / 가치
spi_end ();
)

서명 숯불 ade7753_read_from_reg (숯불 addr)
(
서명 숯불 regval;
rprintf ( "ade7753_read_from_reg 있음에 \ r \ n");
spi_start ();
/ / 통신에 등록할 독서의 주소를 먼저 등록 쓰기
addr = (addr 0 x80);
rprintf ( "이것은 읽기 레지스터 주소는 %입니다 d 개", addr);
_delay_us (4); / / 때까지 T9은 = 4uswait 후 주소가 로드된

regval = spi_rx ();
반환 regval;
)

무효 spi_init (무효)
(
/ * MOSI 밖으로 설정; SCK 아웃, SS는 좀; * /
DDR_SPI = DDR_SPI | (1 ""MOSI) | (1 ""SCK) | (1 ""SS 친위대);
/ * 설정 MISO * 안에 /
DDR_SPI = DDR_SPI & ~ (1 ""MISO);
/ * 사용 SPI는; 마스터 모드를 설정합니다; SPI의 모드 = 3; f를 '= f/128 * /
SPCR = (1 ""SPE) | (0 ""DORD) | (1 ""MSTR) | (0 ""CPOL) | (1 ""CPHA) | (0 ""SPR1) | (1 ""SPR0) ;

반환;
)

무효 spi_tx (서명 숯불 데이터)
(
/ * 시작 전송 * /
SPDR = 데이터;
rprintf ( "이것은 spi_tx 데이터에 % d 개", 데이터)입니다;
/ 전송을위한 * 잠깐 완료 * /
동안 (! (SPSR & (1 ""SPIF)));

반환;
)

서명 숯불 spi_rx (무효)
(
/ * 가짜 문자 보내기 * /
SPDR = 더미;
/ 수신을 위해 * 잠깐 완료 * /
동안 (! (SPSR & (1 ""SPIF)));
/ * 데이터 * 으 등록 /
rprintf ( "이것은 spi_tx 데이터에 % d 개입니다", SPDR);
반환 SPDR;
)

무효 spi_start (무효)
(
/ * 종료되는 경우, 이전 세션 * /
spi_end ();
/ * 세트 SS는 낮은 - 새로운 세션을 시작 * /
PORT_SPI = PORT_SPI & ~ (1 ""SS 친위대);

반환;
)

무효 spi_end (무효)
(
/ * 세트 SS 친위대 * 고등학교 /
PORT_SPI = PORT_SPI | (1 ""SS 친위대);

반환;
)

 
미안 해요, ATMEGA32 익숙하지는 아니지만 데이터 시트의 모양과 유일한 있었는 것
잘못이 여기에있습니다 :

인용구 :

/ * 사용 SPI는; 마스터 모드를 설정합니다; SPI의 모드 = 3; f를 '= f/128 * /

SPCR = (1 ""SPE) | (0 ""DORD) | (1 ""MSTR) | (0 ""CPOL) | (1 ""CPHA) | (0 ""SPR1) | (1 ""SPR0) ;
 
귀하의 답장을 보내주셔서 감사합니다.
사실은 내가 f/16로 분담 사용하고있습니다.난 거기에 코멘트를 변경 걸 깜빡 했군.
만약 모든 게 괜찮아, 난 어디로가는 내가 잘못인지 모르겠어.
수 말하지 않을 경우 코드에서 아마 내가 잘못가는하시기 바랍니다.

 
죄송합니다, 당신 ADE7753 여기서 주소를 써주세요 표시되지 않습니다 :

인용구 :

서명 숯불 ade7753_read_from_reg (숯불 addr)

(

서명 숯불 regval;

rprintf ( "ade7753_read_from_reg 있음에 \ r \ n");

spi_start ();

/ / 통신에 등록할 독서의 주소를 먼저 등록 쓰기

addr = (addr 0 x80);

rprintf ( "이것은 읽기 레지스터 주소는 %입니다 d 개", addr);

_delay_us (4); / / 때까지 T9은 = 4uswait 후 주소가 로드된regval = spi_rx ();

반환 regval;

)

 
정말 감사합니다.
난 모든 게 괜찮다고 생각.그건 간단한 성명을 실수했을 때 내가 연구실로 이동 및 u 알려주 프로그램을 실행하면 해결됩니다 noticable.Now 아니 었어.

그리고 자네가 그 주소 0 x80하지 말았어야했다.
0x80으로 추가하는 이유는 그 명령 바이트 (읽기 / 쓰기)를 읽을 수 있는지 여부 또는 쓰기 작업을 수행 오전 ade7753을 알려줍니다.년 1되어야 명령 안녕 운영 MSB가를 써주세요.그럼 어떻게 MSBit 1 설정할 수있습니다.

다시 한번 정말 감사합니다.

 
당신은 여기에서 볼 수있는 처음 두 개의 명령 바이트 최고의 비트 0과 (주소)를 보내 ADE7753에서 읽기.
그 후에 당신의 데이터 바이트를 읽고 더미 바이트 전송을 시작합니다.<img src="http://images.elektroda.net/8_1215370714_thumb.jpg" border="0" alt="help with ade7753" title="ade7753 도움이"/>
 
안녕,
감사합니다.그것 일하고있다.
한 번 더 의심 일부 ade7753에서 레지스터의 서명 및 서명되지 않은 몇 가지있습니다.
제 기능을 부호로 선언됩니다.
수 서명 숫자를 처리하는 방법을 가르쳐주십시오.

감사합니다.

 
언제 그리고 올바르게 선언 변수로 저장하면 서명되지 않은 변수를 사용할 수 ADE7753로부터 데이터를 읽어 보시기 바랍니다.

8 그들이 문자와 정수를 직접 - 몇 가지 예입니다 : 위에지도를 16 비트 값을 간단합니다

서명 8 비트 레지스터 TEMP가 (0x26)에 대한 변수를 선언 -

숯불 TEMP를;

- 그리고 나서부터 SPI는 데이터 바이트를 저장할 -

TEMP가 = spi_rx ();서명되지 않은 8 비트 레지스터 이득 (0x0F)에 대한 변수를 선언 -

서명 숯불 게인;

- 그리고 SPI의에서 데이터 바이트를 저장할 -

가인 = spi_rx ();서명된 16 비트 등록 APOS 들어 (0x11) 변수를 선언 -

int APOS;

- 그리고 노동 조합에서와 같은 정수를 저장할 우리가 다른 스레드에서 정의한 -

APOS = value.Int;서명되지 않은 16 비트 등록 LINECYC (0x1C)에 대한 변수를 선언 -

서명 int LINECYC;

- 다음 -

LINECYC = value.Int;서명되지 않은 24 비트 등록 IRMS 들어 (0x16) 비트 변수 - 32 선언

서명 오래 IRMS;

- 다음 -

IRMS = value.Long;자, 당신이, 비트 23 비트 확장에 서명해야 오래 약간 복잡에서 서명된 24 비트 저장.
서명된 24 비트 등록 파형 (0x01) 32 비트 변수를 선언 - 들어

긴 파형;

- 그리고 만약 읽을 가치가 부정적이다 (로그인 비트 = 1)을 확인하고 상위 8 비트 세트 24-31 -

(value.Char [1] & 0x80으로) value.Char [0] = 0xFF; 경우파형 = value.Long;그래서 우리는 그들과 비슷한 일을 할 필요는 일부 서명 값을 12 비트입니다.
서명된 12 비트 등록 VAGAIN (0x1a)에 대한 비트 변수 - 16 선언

int VAGAIN;

- 그리고 만약 읽을 가치가 부정적이다 (로그인 비트 11 = 1)을 확인하고 상위 4 비트를 설정 12-15 -

만약 (value.Char [0] & 0x08) value.Char [0] = value.Char [0] | 0xF0;VAGAIN = value.Int;그건 좀 더러워 보이지만 당신이 일반적인 아이디어를 얻을 바랍니다.

/ 램

 
안녕,
귀하의 모든 도움을 주셔서 감사합니다.그것 근무.

내가 현재의 트랜스 포머 및 전압 변압기 필요가없습니다.내가 널 얼마나 여부를 전체 회로 또는 작동하지 테스트할 수 있는지 아세요.

미리 감사드립니다.

 
잘했어!

ADE7753 시트는 측정 입력 그래서 내가 당신을 생각 ą0.5 승 걸릴 수 있다고 수있습니다
직접 입력은 전압을 연결할 수있습니다.경우에는 14 페이지에 적용할 수있는 그림 29 확인
"전압"신호 (V2P) 및 ""(V1P) 4 핀 현재 7 핀.또한 핀 5 (V1N) 접지해야합니다
그 땅에 핀에 100 옴 저항을 연결하여.내가 그 일을해야한다고 생각.

아마 그렇게 ≤ 0,5 승 DC 전압과 그것을 시도하는 AC 신호가 필요하지 않습니다.
그 측정 결과를 P는 같은 두 가지 전압의 제품, = 승 * 난 정말 당신이 될 텐데
그들 중 하나를 조정할 수 있고 어떻게 나오는지보고는 "P"다릅니다.

/ 램

 
감사합니다.

마 우리가 어떤 단계에, 물건 등 같은 종류의 오프셋을 설정해야합니다.

 
만일 당신이 신호 발생기에서 DC 또는 AC 전압, 사용이 신호가 오면, 위상 일치하는 완벽한
동일한 소스에서.
차와 일치하는 유일한 연극에서 실제 응용 프로그램에서, 트랜스 포머 및 물건과 함께 다음의 교정이 필요 온다
측정.

난 당신이 애플 리케이션 노트는 어디로 위상 일치 및 교정 논의 본 것 :
http://www.analog.com/Analog_Root/static/pdf/library/applicationNotes/an564.pdf

/ 램

 
안녕,

제가 문서를 통해 갈 것이다.

다시 한번 감사 드려요.

 
안녕,

16 페이지에있는 데이터 시트의 테이블 6 그것은 LSB가 크기 1.61mV/LSB있다이다.이게 정확히 무슨 뜻 이죠?어딘가에 그것도 고 말했다입니다 2.2ms/LSB.이게 무슨 뜻 이죠?

감사합니다.

 
오프셋 보정 등록 6 비트 - 1 기호 5 규모에 대한했습니다.

그것은 텍스트 0x1F = 31 단계의 전압을 최대 교정을 위해 사용하고있는 말대로
스팬 ą50 mV 이득 = 1) 각 단계에서 31분의 50 = 1.61 mV 얻을 수있다 (보정위한 것입니다.
LSB가 (최소 유효 비트) -에 의해 증가하거나 혹은 감소 1 레지스터 값 변경 - 예정
1.61 mV의 전압이 단계에서이 사건을 결과 / LSB가.

당신이 테이블에서 전압이 단계에서 최대 스팬에 따라 다릅니다 볼 수있습니다.

/ 램

 
안녕,

날 설명 주셔서 감사합니다.

등록 AENERGY 두 방법을 보완하여 서명됩니다.어떻게 등록부터 값을 읽어야 할까?만약 내가 그것을 변환하는 방법에 그 권리 가치를 얻을 수있는 서명되지 않은 변수를 사용하여 읽기입니다.

 
and is used like this:

당신이 서명 서명 값으로 처리하려면 컴파일러에게 타입 주조
방식으로 불리는이 같이 사용됩니다 :

코드 :

긴 값을 가진;

서명 오래 aenergy;값 = (길이) aenergy;

 
안녕,

감사합니다.

내가 IRMS 및 VRMS 레지스터 읽기 노력하고 있어요.난 큰 16 진수 값을납니다.데이터 시트 그것 앰프로 변환되어야 / LSB를 지속했다.하지만 내가 어떻게 할 생각도 없어.내가 교정보기 PDF 통해 지났습니다.제발 도와주세요.

 
인용구 :

0.5 브이, 0x2518 및 0xDAE8 60 Hz에서 사이 LPF1 그네에서 출력에 지정된 전체 규모는 ac, 아날로그 입력 신호와 2 채널 ADC가 절을 참조하십시오.
이에 상응하는 약 1,561,400 (0z17D338) VRMS 레지스터에이 풀 스케일 신호의 가치는 ac rms의.
 

Welcome to EDABoard.com

Sponsor

Back
Top