搜索
bottom↓
回复: 50

我写的MEGA8的TWI双机通讯(查询和中断 ICCAVR)

[复制链接]

出0入0汤圆

发表于 2008-1-21 21:34:33 | 显示全部楼层 |阅读模式
今天搞TWI通讯,4到5小时,基本搞定,硬件是两M8的SCL和SDA互联,当然还有GND,
主机用串口连到电脑,9600波特率
一共发 0到10一共十个数重复发
思路主要参考艺芯的,但是程序是自己写的,跟他不一样.
这里是一个文件夹,包括两个工程,主机和从机,还有UART文件,
用ICC的朋友可以直接到开工程,GCC要移植,把#include"iom8v.h"改为#include<avr/io.h>,还有其它地方修改一下,就可以,我没试
点击此处下载ourdev_204692.rar(文件大小:68K)

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2008-1-22 13:34:16 | 显示全部楼层
那就来个简图吧,OrCAD的
1

出0入0汤圆

 楼主| 发表于 2008-1-22 13:34:52 | 显示全部楼层
够清晰了

出0入0汤圆

 楼主| 发表于 2008-3-21 19:39:06 | 显示全部楼层
11楼说得对,因为只有一个下位机嘛,另外补充说明AVR的硬件I2C:
当接受时,因为一次I2C传输传的有多种信息,如总线起始,地址,数据等,接收机的TWI硬件会根据总线电平来置TWI状态寄存器的各个位.
用户根据状态寄存器的内容来判断下一步怎么办.例如从一次传输的(总线起始,地址,数据等)之中,把数据取出来(接受数据和接受地址时的状态寄存器的内容不一样).

出0入0汤圆

 楼主| 发表于 2008-3-21 19:44:15 | 显示全部楼层
^_^,程序里的  TWI.h是我从  WinAVR里面扣出来的,没想到有这样用的吧,
ICC的LIB没有GCC全, TWI.h里定义了I2C传输过程中状态寄存器 状态值的 宏,很方便,做AVR  的I2C,拿去用吧.

出0入0汤圆

 楼主| 发表于 2008-3-29 18:41:04 | 显示全部楼层
楼上的WINAVR中包含  twi.h就可以了
发送还得看从机呢。如果从机设置不对,也会导致主机发送不出去START和其他命令,那么主机自己的TWCR的TWINT也没有反应
我估计是这样,再检查吧,多看看中文的DATASHEET,这一章的芯片文档写的及其详细
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-30 18:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表