导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[liulihua123]AVR spi通讯问题(atmega64



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 ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:31毫秒 最大:78531毫秒 查询6次