打印
[PIC®/AVR®/dsPIC®产品]

新手求指导

[复制链接]
1403|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Masaka|  楼主 | 2013-12-4 20:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
小弟最近刚刚接触PIC系列的单片机,型号是16F716,想实现对8个I/O口的选择性控制输出,不过控制的依据是另外一个MCU,由这个MCU发送一段脉冲信号,信号中包含有需要PIC开启的I/O口的信息(哪个口输出准备)以及该口开启时间的信息(控制LED亮的时间),两个信息在一个脉冲中,目前是想通过频率进行区分,如选择口的脉冲是3个连续的一定频率的脉冲,开启时间为一个脉冲。
那么,请教一下,PIC部分的编程该怎么做,小弟对此很不了解,望大侠指导,谢谢。
沙发
huangxz| | 2013-12-4 23:28 | 只看该作者
为什么不用串口呢

使用特权

评论回复
板凳
langxinke| | 2013-12-5 10:52 | 只看该作者
你想做遥控的?

使用特权

评论回复
地板
NE5532| | 2013-12-5 12:58 | 只看该作者
如果不是原来产品已经这么做了,你去兼容的话,干脆用数据通讯算了,I2C、SPI、串口都可以用。如果是原来产品这样做了,你得给大家详细描述一下信号的特征,以及这些特征如何表达控制信息的,大家才能给你建议。

使用特权

评论回复
5
Masaka|  楼主 | 2013-12-5 21:29 | 只看该作者
NE5532 发表于 2013-12-5 12:58
如果不是原来产品已经这么做了,你去兼容的话,干脆用数据通讯算了,I2C、SPI、串口都可以用。如果是原来产 ...

是这样的,输给PIC的信号线只有一个,该信号是上级MCU通过I/O口输出的。
信号是时序的脉冲信号,总得来说信号中含有两类控制信息,一是用于PIC选择I/O的信息,用3个连续的脉冲表征,PIC只需要计算出脉冲的频率即可,一个频率对应一个I/O口;另一个信息(一个短脉冲)是紧跟在这3个脉冲之后的(延迟不会太长,不到1ms),这个脉冲是控制PIC的I/O开启时间的(控制LED亮的时间的)。 接下来就是,PIC不断的先采集3个脉冲计算频率,选择IO口,IO开启时间是紧接着的第四个脉冲。

使用特权

评论回复
6
Masaka|  楼主 | 2013-12-5 21:30 | 只看该作者
langxinke 发表于 2013-12-5 10:52
你想做遥控的?

算不上,只是PIC的控制比较简单,只作为上一级MCU的执行器件,只做信号采集处理

使用特权

评论回复
7
Masaka|  楼主 | 2013-12-5 21:31 | 只看该作者
huangxz 发表于 2013-12-4 23:28
为什么不用串口呢

挑战一下,不使用通信,帮帮忙吧,很急。
关键PIC与上一级的MCU之间就一根信号线的联系

使用特权

评论回复
8
Masaka|  楼主 | 2013-12-5 21:34 | 只看该作者
huangxz 发表于 2013-12-4 23:28
为什么不用串口呢

随便问下,MPLAB IDE那个版本可以进行PIC16F716单片机的编程啊,对PIC真心不太懂

使用特权

评论回复
9
huangxz| | 2013-12-5 22:11 | 只看该作者
Masaka 发表于 2013-12-5 21:29
是这样的,输给PIC的信号线只有一个,该信号是上级MCU通过I/O口输出的。
信号是时序的脉冲信号,总得来说 ...

关键看你这个频率有多快,如果100K以下,用定时器就可以解决问题,如果很高的频率,就比较麻烦了

使用特权

评论回复
10
NE5532| | 2013-12-6 08:58 | 只看该作者
楼主没有说这个是已有产品的话,乘早换成串口通讯,这个协议写得太笨了。另外,脉冲怎么测“频率”?脉冲只有高电平时间,间隔周期,低电平时间的说法。楼主实在要这样弄,用定时器的捕获测时间就可以了,就像楼上说的,太快了单片机就困难了。

使用特权

评论回复
11
Masaka|  楼主 | 2013-12-6 18:17 | 只看该作者
NE5532 发表于 2013-12-6 08:58
楼主没有说这个是已有产品的话,乘早换成串口通讯,这个协议写得太笨了。另外,脉冲怎么测“频率”?脉冲只 ...

主要PIC的上一级是已有的成熟产品,而且只预留了1口输出口给PIC,没办法啦。
这样的话,能告诉我满足条件的接口分配吗。PIC型号是16f716

使用特权

评论回复
12
Masaka|  楼主 | 2013-12-6 18:18 | 只看该作者
huangxz 发表于 2013-12-5 22:11
关键看你这个频率有多快,如果100K以下,用定时器就可以解决问题,如果很高的频率,就比较麻烦了 ...

恩,实在100kHz以下,能简单说下流程吗

使用特权

评论回复
13
NE5532| | 2013-12-6 19:56 | 只看该作者
1根口线做串口足够了啊,如果刚好是单片机的TXD端,正好,不是的话,做软串口就是了,没啥口线要求。

使用特权

评论回复
14
Masaka|  楼主 | 2013-12-6 20:16 | 只看该作者
NE5532 发表于 2013-12-6 19:56
1根口线做串口足够了啊,如果刚好是单片机的TXD端,正好,不是的话,做软串口就是了,没啥口线要求。 ...

软串口?没接触过,能简单点吗?PIC的上一级MCU是飞思卡尔的,输出口就是个普通的I/O口

使用特权

评论回复
15
duhemayi| | 2013-12-6 21:13 | 只看该作者

使用特权

评论回复
16
huangxz| | 2013-12-6 21:23 | 只看该作者
Masaka 发表于 2013-12-6 18:18
恩,实在100kHz以下,能简单说下流程吗

定时器+IO电平判断,就可以得到脉宽,不过这个精度不是特别高,所以说你的频率在100K一下,就可以判断的比较准确

使用特权

评论回复
17
NE5532| | 2013-12-6 21:56 | 只看该作者
楼主搜下软串口吧,这个是最简答的了。

使用特权

评论回复
18
Masaka|  楼主 | 2013-12-8 09:04 | 只看该作者
NE5532 发表于 2013-12-6 21:56
楼主搜下软串口吧,这个是最简答的了。

好吧,谢啦,有不懂地方再向你请教

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

22

帖子

0

粉丝