No.106158 作者:liulihua123 邮件:ryokuka@163.com ID:79706 登陆:1次 文章数:1篇 最后登陆IP: 最后登陆:2007/6/6 21:58:47 注册:2007/6/6 21:58:47 财富:100 发帖时间:2007/6/6 22:03:24 发贴者IP:60.20.194.8 标题:liulihua123:AVR spi通讯问题(atmega64/16之间) 摘要:No.106158AVR spi通讯问题(atmega64/16之间) 主机用 Mega16 (晶振:8MHZ), 向从机 Mega64 (晶振:8MHZ) 每秒发送数据0X60, 现在遇到的问题是: 我是用AVR仿真器设定断点跟踪,从机接收的数据是 F9 (有时是E9),并是主机发送的值0X60,好象是从机本身SPDR中的固定值, 而主机的SPI数据寄存器SPDR中却收到0X60, 这样以来,主从机的SPDR中都接收的是自己本身的值.不知道 是什麽原因.?请老师指点迷津. 主从机的连接如下: /SS --- /SS ; MOSI – MOSI ; MISO – MISO ; SCK – SCK; 以下是主机(Mega16)程序: #include <mega16.h> #include <delay.h> #include <stdio.h> #include <math.h> unsigned char rx_wr_index,rx_counter; // This flag is set on USART Receiver buffer overflow bit rx_buffer_overflow; // SPI interrupt service routine interrupt [SPI_STC] void spi_isr(void) { unsigned char data; data=SPDR; if (1) { rx_buffer[rx_wr_index]=data; if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0; if (++rx_counter == RX_BUFFER_SIZE) { rx_counter=0; rx_buffer_overflow=1; }; }; } //transmit SPI data void SPITransmion(unsigned char data) { /* Put data into bu ......
>>返回讨论的主题
|