and001 发表于 2013-8-20 10:44:11

C8051fxxx 交叉开关跳过问题

C8051fxxx 交叉开关条过问题老是弄不明白,有玩过的帮忙总结一下:


我老是糊涂:

1)是被跳过的i/o用作普通I/O,还是没被跳过的呢?
2)外部中断口,要被使能的话,对应的I/O是该被跳过还是不应该跳过

理解上就是感觉有矛盾!!多谢帮忙用过的朋友用通俗的语言总结总结!

大秦正声 发表于 2013-8-20 15:05:35

被跳过的不能用为i/o了,
如果使用外部晶振,那么p0.2 ,p0.3,需要跳过!

大秦正声 发表于 2013-8-20 15:07:41

多看老外的例程!安装silabs ide 软件。

and001 发表于 2013-8-20 15:18:52

还是晕!要总结性的!

Doding 发表于 2013-8-20 15:53:39

交叉开关使能的功能会从P0.0开始占用IO,被占用的IO就成为该功能的管脚,没被占用的还是基本IO功能。

linbin250 发表于 2013-8-20 16:42:31

之前用过这个交叉开关。

我觉得好处就是,你选功能模块后,功能模块的顺序排列会体现到管脚上,这样能够有效的利用为数不多的管脚。

但是坏处就是,当你样板做出来后,开发过程中如果发现需要一个新的模块需要使用,恰巧这个模块是插在之前选的功能的中间。有部分管脚依次向后推移。这时候问题就来了,要么就是飞一堆线,要么就是重新做样板。

Lauchael 发表于 2013-8-20 16:45:17

大秦正声 发表于 2013-8-20 15:05 static/image/common/back.gif
被跳过的不能用为i/o了,
如果使用外部晶振,那么p0.2 ,p0.3,需要跳过!

貌似可以的哦,被跳过的只是不能被外设使用,而不是不能做为I/O使用。

Lauchael 发表于 2013-8-20 16:48:25

大秦正声 发表于 2013-8-20 15:07 static/image/common/back.gif
多看老外的例程!安装silabs ide 软件。

同感。我因为这个交叉开关问题,专门多看了几个例程。

modbus 发表于 2013-8-20 17:37:12

被跳过的i/o用作普通I/O,不会被特殊功能模块占用。外部中断为端口输入,不受交叉开关影响,即使被分配为特殊功能模块的外部中断管脚依然可以产生外部中断功能。

and001 发表于 2013-8-20 18:23:44

请问楼上是不是可以理解为不管交叉开关设置成有效或者无效,外部中断都是P0.0(对应INT0) & P0.1(对应INT1)两个PIN,不会改变?!

如果这样我就理解了!

还有就是:1)要将I/O设置成普通输出口怎么设置?
         2)要将I/O设置成普通输人口(一般为按键输入用)呢?
         是否将要跳过SKIP寄存器对应的口置“1”

大秦正声 发表于 2013-8-21 09:11:05

and001 发表于 2013-8-20 18:23 static/image/common/back.gif
请问楼上是不是可以理解为不管交叉开关设置成有效或者无效,外部中断都是P0.0(对应INT0) & P0.1(对应INT1) ...

假如你需要使用uart0,外部参考电压,外部晶振,spi,i2c,pca,ad,和外部中断,但外部中断只能在p0.0到p0.7分配,其中有的引脚是固定的,你可以
仔细看英文手册!

大秦正声 发表于 2013-8-21 09:14:31

假如你需要使用uart0,外部参考电压,外部晶振,spi,i2c,pca,ad,和外部中断,这些有优先级别,但外部中断只能在p0.0到p0.7分配,其中有的引脚是固定的,你可以
仔细看英文手册!

lovelywwei 发表于 2013-8-21 09:16:48

SKIP是为了让你需要的外设功能映射到你想要的引脚上去,被SKIP的引脚就当作普通IO就是了,如果作为输出要选择是OD还是PP。就这样。

modbus 发表于 2013-8-21 10:07:33

and001 发表于 2013-8-20 18:23 static/image/common/back.gif
请问楼上是不是可以理解为不管交叉开关设置成有效或者无效,外部中断都是P0.0(对应INT0) & P0.1(对应INT1) ...

外部中断管脚由专门的寄存器控制,和交叉开关无关。没有被分配为特殊功能模块的管脚或被交叉开关跳过的管脚都可作为普通输出,但交叉开关必须使能。普通输入和外部中断和交叉开关无关,在任何时候都可用,比如外部中断管脚又作为普通输出,则当该输出管脚状态跳变时同样会产生外部中断事件。

chenerbox2 发表于 2013-8-21 10:15:56

linbin250 发表于 2013-8-20 16:42 static/image/common/back.gif
之前用过这个交叉开关。

我觉得好处就是,你选功能模块后,功能模块的顺序排列会体现到管脚上,这样能够有 ...


这时就体现出 跳过 用处了,我都是先跳过几个端口才分配的, 以后加啥也有余地

我感觉跳过不影响 IO 基本功能和 中断的

and001 发表于 2013-8-21 10:18:47

非常感谢楼上回答!
我理解更深入了点.

简单点,只要是作为输出口,一定要使能交叉开关?对吗?

linbin250 发表于 2013-8-21 15:18:47

chenerbox2 发表于 2013-8-21 10:15 static/image/common/back.gif
这时就体现出 跳过 用处了,我都是先跳过几个端口才分配的, 以后加啥也有余地

我感觉跳过不影响 IO 基本 ...

跳过不影响基本 IO,但是要保证尽量选后面的管脚,不至于冲突。
但是跳过会影响中断,例如 INT0。会随着你选择的模块(例如使用串口模块和不使用串口模块)的不同对应的 INT0的管脚位置是不同的。



and001 发表于 2013-8-21 16:07:19

看这个就眼花!晕

modbus 发表于 2013-8-22 11:06:22

17楼的是以前的老型号了,C8051F3XX以后的外部中断管脚都不受交叉开关的影响,由专门的寄存器来分配。贴一段手册上的原话:“注意,/INT0 和
/INT0 端口引脚分配与交叉开关的设置无关。/INT0 和/INT1 监视分配给它们的端口引脚,不影响被交叉开关分配了相同引脚的外设。”

and001 发表于 2013-8-22 14:00:29

感觉C8051F330的外部中断只能是P0.0和P0.1两个口,请有不同意见的朋友拍砖。

mhw 发表于 2013-8-22 14:44:02

楼上各位,装了IDE或者单独的config2,在图形界面点点鼠标就行了……

and001 发表于 2013-8-22 16:07:08

mhw 发表于 2013-8-22 14:44 static/image/common/back.gif
楼上各位,装了IDE或者单独的config2,在图形界面点点鼠标就行了……

好像没提及到外部中断(但有 TX/RX/SCK/MISO/MOSI/NSS/DSA/SCL/CP0/CP0A/SYSCLK/CEX0/CEX1/CEX2/ECI/T0/T1)!

modbus 发表于 2013-8-22 17:37:34

and001 发表于 2013-8-22 14:00 static/image/common/back.gif
感觉C8051F330的外部中断只能是P0.0和P0.1两个口,请有不同意见的朋友拍砖。

C8051F330没用过,不过看手册外部中断可以选择为P0.0--P0.7之间的口,由寄存器IT01CF选择。

yh1036164041 发表于 2013-8-23 09:33:56

linbin250 发表于 2013-8-21 15:18 static/image/common/back.gif
跳过不影响基本 IO,但是要保证尽量选后面的管脚,不至于冲突。
但是跳过会影响中断,例如 INT0。会随着 ...

为什么我 C8051F410手册和你的SKIP和你不一样啊?

linbin250 发表于 2013-8-23 15:25:15

yh1036164041 发表于 2013-8-23 09:33 static/image/common/back.gif
为什么我 C8051F410手册和你的SKIP和你不一样啊?

不知道了,应该特殊的单片机交叉开关不一样吧。
我在10年前做的第一个C8051F的东西,用的就是我发的那个图。你的这个图可能是新的版本吧。

and001 发表于 2013-8-23 21:47:11

我的外部中断一开始使能,就感觉到I/O都错位了!
页: [1]
查看完整版本: C8051fxxx 交叉开关跳过问题