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 친위대);
반환;
)
내가 프로젝트 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 친위대);
반환;
)