PSoC I2CHW做slave 时, 中断服务子程序如何写?

[复制链接]
 楼主| Jerric 发表于 2011-12-8 14:09 | 显示全部楼层 |阅读模式
21434 中  I2CHW做slave 时, 中断服务子程序如何写?

如Timer8是如下这样,但 I2CHW呢?  
#pragma interrupt_handler Timer8_ISR
void Timer8_ISR(void)




EzI2Cs 有没有中断服务子程序??
Go_PSoC 发表于 2011-12-8 22:55 | 显示全部楼层
给你他的用户模块手册,里面有介绍

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
Go_PSoC 发表于 2011-12-8 23:03 | 显示全部楼层
EzI2Cs的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
japrincess 发表于 2011-12-8 23:06 | 显示全部楼层
我使用的芯片是 CY8C29466,因为项目中要使用两块功能几乎相同的 pSoc 模块,所以我打算把两块芯片的代码放在一块。但是与主芯片通信的 I2C 地址(slave模式),却是不可以一样的。
默认生成的I2C HW 模块,address 是在 Device Editor 模块中定死的;其实看自动生成的代码,会发现地址只是被预定义为一个值I2CHW_1_SLAVE_ADDR。而对这个值的使用,只在 i2chw_1int.asm 中遇到。具体就是在判断master发过来的 address 是否是本 slave 的address.
原始代码片断(自动生成):
    mov A, reg[I2CHW_1_DR]
    and F, 0xF9                                                     
    rrc A                                                           
    xor A,  I2CHW_H_SLAVE_ADDR
    jnz I2C_Terminate
    or [I2CHW_1_RsrcStatus], I2CHW_ISR_ACTIVE
I2CHW_1_DR 里放置的就是 master 发过来的address,而 I2CHW_H_SLAVE_ADDR 就是pSoc芯片定义的I2C address. 只要根据实际需求把 I2CHW_H_SLAVE_ADDR 换乘其他的值,就可以在程序中任意改变 I2C 的address了。
常见的方法,是读取某些 GPIO 引脚的高低,根据高低不同,把 A 与不同的质进行比较。
 楼主| Jerric 发表于 2011-12-9 08:32 | 显示全部楼层
谢谢板主,但是用户模块手册上并没有介绍 中断服务子程序呀~~
有没有应该的例程呢!~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

128

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部