chuanhuibh 发表于 2008-1-21 21:34:33

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

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

52robot 发表于 2008-1-21 22:09:10

过段时间要用。标记一下。顺便顶一下,可惜阿莫要原理图才会给穿裤子,

chuanhuibh 发表于 2008-1-22 13:34:16

那就来个简图吧,OrCAD的
1http://cache.amobbs.com/bbs_upload782111/files_9/ourdev_205112.GIF

chuanhuibh 发表于 2008-1-22 13:34:52

够清晰了

plc_avr 发表于 2008-1-22 13:40:17

好,我顶了!

52robot 发表于 2008-1-22 14:01:29

阿莫呢,快发裤子,人家大冬天的还等着呢!!!

marker 发表于 2008-1-22 14:28:16

thank you.

dengxiaojun 发表于 2008-2-8 21:23:02

多谢!

ninjia 发表于 2008-2-13 11:14:06

好东西

PaulDE 发表于 2008-2-28 14:42:30

leo_cheung 发表于 2008-3-21 13:53:51

好东西,下来试试!

leo_cheung 发表于 2008-3-21 15:31:45

看了你的代码,主机是以广播的方式写给从机的

chuanhuibh 发表于 2008-3-21 19:39:06

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

chuanhuibh 发表于 2008-3-21 19:44:15

^_^,程序里的TWI.h是我从WinAVR里面扣出来的,没想到有这样用的吧,
ICC的LIB没有GCC全, TWI.h里定义了I2C传输过程中状态寄存器 状态值的 宏,很方便,做AVR的I2C,拿去用吧.

z_zt 发表于 2008-3-27 10:11:25

我把MASTER和SLAVE合起来了,想做个双向的TWI,为什么发过的那个主机就不能再收了?

leo_cheung 发表于 2008-3-27 13:54:58

我的在START语句里,就死在循环(while)里了

void Start(void)
{
TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
while(!(TWCR&(1<<TWINT)));
}

MEGA16的SDA,SCL 引脚也设置为输入上拉了

另外,楼主说"TWI.h是我从WinAVR里面扣出来的".我用的就是WinAVR,是不是包含了哪个头文件,就可以直接调用系统自带的函数了?


TWI学习中……

chuanhuibh 发表于 2008-3-29 18:41:04

楼上的WINAVR中包含twi.h就可以了
发送还得看从机呢。如果从机设置不对,也会导致主机发送不出去START和其他命令,那么主机自己的TWCR的TWINT也没有反应
我估计是这样,再检查吧,多看看中文的DATASHEET,这一章的芯片文档写的及其详细

lionliu 发表于 2008-5-9 14:21:55

记号

yibin818 发表于 2008-5-9 21:57:40

TWI从机! 顶!!

sciencehero 发表于 2008-5-9 22:26:45

顶一个

yxcon 发表于 2008-8-19 16:24:13

问一下啊,从机(AVR)接收到的数据是放在TWDR中还是在EEPROM中呢???

yxcon 发表于 2008-8-19 17:48:28

想通了!

thefrogking 发表于 2008-8-21 21:08:31

0620221 发表于 2009-6-9 10:16:22

mark

goofy 发表于 2009-7-21 19:52:10

非常感谢!!

Lanou 发表于 2009-7-27 14:51:04

mark~~~~

dengxiaofeng 发表于 2009-8-20 20:48:28

收藏!!!

zhaoyanrock 发表于 2009-8-21 11:29:22

顶一下~~~谢谢啊

yyjames 发表于 2010-1-11 16:54:03

mark

luojiyin 发表于 2010-6-13 22:08:14

学习

BLDC2010 发表于 2010-6-14 14:35:18

mark

hpdell 发表于 2010-8-13 15:47:18

DINGYIGE!!!!!!!!!!

zztbb868 发表于 2010-11-20 16:06:35

mark

zcjxjw 发表于 2011-5-7 15:27:31

回复【楼主位】chuanhuibh
-----------------------------------------------------------------------

真的应该很好吧 各种情况都做到了

wpaeng 发表于 2011-8-27 20:45:47

太感谢了

avrwj 发表于 2011-12-23 20:23:20

Mark

wolfdong7 发表于 2012-1-11 19:02:10

谢谢,下载来看看!

T_SONG 发表于 2012-1-31 15:45:49

学习一下

jjqwhm 发表于 2012-6-27 23:54:41

楼主能发一份你写的MEGA8的TWI双机通讯(查询和中断 ICCAVR)程序给我吗?我的邮箱是jjq12345678900@sina.com

jjqwhm 发表于 2012-6-27 23:56:06

谢谢楼主了

jjqwhm 发表于 2012-6-28 00:04:33

楼主加我QQ122469179再发过我也好

hddgf 发表于 2012-6-28 06:18:05

谢谢楼主了

microsoho 发表于 2012-11-23 18:09:09

l程序里的那个非广播模式的好像不可以用啊

microsoho 发表于 2012-11-23 20:24:59

lz,非广播模式的你有没有写出来啊?求教

lyreliu 发表于 2013-1-30 21:38:54

好东西啊,正在用wti

hsztc 发表于 2013-1-31 02:07:37

“一共发 0到10一共十个数重复发”

这个好像是11个{:3_49:}

hamipeter 发表于 2013-3-6 20:28:06

支持一个

wcm_e 发表于 2013-3-6 20:53:35

学习, mark

csignor 发表于 2013-8-7 18:04:32

GCC可用,谢谢

Ace_Young 发表于 2013-11-27 10:28:10

正好要用!不错!

dezhga 发表于 2014-10-4 02:21:07

attiny系列可以直接用吗?
页: [1]
查看完整版本: 我写的MEGA8的TWI双机通讯(查询和中断 ICCAVR)