[求助] 两个单片机菜鸟问题,求高手指点

yanjianguo   2012-7-3 00:09 楼主

单片机为PIC单片机

1。串口中断后,必须把数据读走吗?如果不读走就会一直进入中断,这是什么原因(中断标志已清零)

2。AD转换,单片机只有一个10位的AD,但是支持多个通道,AD每次转换之前都得配置OPEN一下吗,能连续转换吗?

连续转换是不是必须开AD中断?

回复评论 (8)

1、先关闭中断,再读读完再开开中断 2、每次都OPEN,连续的有,但PIC好像没
http://shop34182318.taobao.com/ https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
点赞  2012-7-3 12:16

回复 沙发 ddllxxrr 的帖子

每次中断后都要关闭中断?清零标志位不行吗?
点赞  2012-7-3 12:46
每次中断后都要关闭中断是为了不被其他中断打断
点赞  2012-7-4 14:58
如果串口只有一个字节,那么可以不立刻取走,如果串口数据超过一个字节,那么必须在下个字节到来前取走,否则会丢失数据。串口中断标志清除后本次中断不会再次出现,除非下一个字节到来。
AD复用可用多路模拟开关实现,切换通道后每次要重新启动一次AD过程。
点赞  2012-7-4 18:08

回复 5楼 chunyang 的帖子

谢谢版主解答,这里补充个问题,我有串口调试助手向单片机发数据,串口设为异步、连续发送、接收中断开启,波特率设为9600时,一次发送超过一定数量的字节后,串口就死了,不在接收了,有时候一次发20多个死,有时候发30多个死,而且我读状态寄存器发送串口溢出了。不知道是怎么回事,今天把波特率调成4800时,能发送了,再调成2400时又会溢出,我看DATASHEET上说溢出可以通过清零CREN位 清零。但是我加了这步判断后,串口接到的数据到达一定数量后就乱了。求指导啊~~~~
点赞  2012-7-4 22:46
你是说PC的串口死锁了?如何判断的?PC串口硬件死锁只出现于带电插拔的闩扣效应,除此不会,软件则有可能,特别是使用兼容性不良的USB转串口桥时,原生串口绝对不会。
如果是你的MCU系统“死锁”,类似的原因不是硬件而是你的软件结构不合理,来不及处理串口数据而已,需优化你的程序结构。
点赞  2012-7-5 16:21

回复 7楼 chunyang 的帖子

多谢版主,不是PC的串口,我用它自收自发时都好用的,应该是MCU的串口死了,我再看下程序
点赞  2012-7-5 22:43

回复 7楼 chunyang 的帖子

再来麻烦下楼主,现在串口收发已经可以了,但是遇到个新问题,我的PIC单片机还用到个功能,就是产生一个PWM波,频率是10K,我用到了Timer2,波形可以产生,但是一旦开启PWM,我的串口又不能收发数据了,关掉PWM,串口又正常了,不知道它们为什么有冲突,求指导
点赞  2012-7-8 22:47
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复