Electronics 板


LINE

参照 http://www.finetech.idv.tw/techdoc/8051serial/8051serial.htm 他说中断法的执行效率远超过等待法,所以我也想采用中断法 不过我的程式只需要把资料传送出去,不需要接收,看起来大概像这样 void serial_isr() __interrupt 4 { // 把 buffer 的资料传送出去 } main() { while (1) { // 把资料塞到 buffer } } 问题是这样不会动,看起来 serial_isr 并没有被呼叫 於是我试着在 main 里先传送一个数字,serial_isr 就有被呼叫了 我猜大概是因为中断是在传送完成之後才产生,没传送任何东西自然也不会有任何中断 那麽如果我想维持让 main 负责产生资料,serial_isr 负责传送资料 该怎麽写才能让 serial_isr 开始跑呢? 应该不能在 main 里呼叫 serial_isr 吧?这样资料好像会乱掉 感觉是个很蠢的问题,可是 google 不到答案,还请各位帮忙一下 -- 放着养蚊子的部落格 http://resolaqq.blogspot.tw --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.165.41.215
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Electronics/M.1439992468.A.DD3.html
1F:推 yudofu: main只要一直检查传送有没有完成、完成就写进去,中断那边 08/19 23:20
2F:→ yudofu: 是检查到有东西要写的中断就把东西送出去、一直到确认写完 08/19 23:21
3F:→ yudofu: 清空旗标再挑出去,中断涵式本身没有在呼叫 08/19 23:21
4F:→ dsplab: 未必,使用1T的8051,921600bps下使用询问方式也是可以的 08/20 08:43
5F:推 yudofu: 就算polling可以,可是原po想要要用中断提高效率啊,没有 08/20 09:25
6F:→ yudofu: 必要硬去用polling吧。总之中断写好之後,main要去"触发" 08/20 09:25
7F:→ yudofu: 中断而不是"呼叫"中断 08/20 09:25
8F:→ ResolaQQ: 问题就是我不知道要怎麽触发 interrupt 4 的中断呀 08/20 09:37
9F:→ ResolaQQ: 似乎是接收到一个资料(我的程式没在接收) 08/20 09:38
10F:→ ResolaQQ: 或是刚传送完一个资料(但第一个资料都还没开始传) 08/20 09:38
11F:→ ResolaQQ: 上面两种看起来都不可行,那要怎麽产生中断 冏 08/20 09:39
12F:推 yudofu: 你的范例不是就写中断4了吗?当你使用并enable uart中断的 08/20 10:03
13F:→ yudofu: 时候,收送产生ti/ri都会产生中断 08/20 10:03
14F:→ ResolaQQ: 我刚试了一下,手动把TI从0改到1似乎不会产生中断对吧? 08/20 10:33
15F:推 yudofu: 中断4的using1是用timer1的内部中断,timer1的时间设定好b 08/20 11:13
16F:→ yudofu: aud rate之後,就会触发中断 08/20 11:13
17F:→ ResolaQQ: 不晓得您方不方便提供简单范例,我真的搞不定... 08/20 17:39
18F:→ ResolaQQ: 用开关ES的方式写是成功了,但跑的比while(TI==0);还慢 08/20 17:40
19F:推 yudofu: http://tinyurl.com/qzwqe6n 这是以前我买中国开发版附的 08/20 20:38
20F:→ yudofu: 范例,里面注解是简体的,他的范例是用中断去定时检查UART 08/20 20:39
21F:→ yudofu: 的收、有要发的时候main自己发,你的应用可以把发放在中断 08/20 20:39
22F:→ yudofu: 里面,中断触发时间检查要送的东西是不是空的,是空的就跳 08/20 20:40
23F:→ yudofu: 出不送,有的话就用阵列循环发送到空为止,至於要送的资料 08/20 20:41
24F:→ yudofu: 就在main里面写。它的范例只是单纯的把你输入的字元loop回 08/20 20:41
25F:→ yudofu: 去,你可以把main里面的程式通通搬到中断,main里面只有 08/20 20:42
26F:→ yudofu: while(1)工作也是正常,证明全部都是中断在处理。 08/20 20:42
27F:→ ResolaQQ: 太感谢了,不过看着有点不太对劲,现在写到脑袋打结 08/20 20:57
28F:→ ResolaQQ: 等睡醒再来研究,写软体跟写硬体差好多,一堆怪问题... 08/20 20:58
29F:→ ResolaQQ: 他应该不是用中断定时检查耶,是因为有收到东西 08/21 03:42
30F:→ ResolaQQ: RI自动触发中断,我把它的程式烧进去试的结果是这样 08/21 03:43
31F:→ yudofu: RI/Ti会触发中断,但是触发之後用timer1按照鲍率去检查中 08/21 06:38
32F:→ yudofu: 段要做的事情然後相当於自动设定timer把字节一个一个送出 08/21 06:40
33F:→ yudofu: 去 总之....就像程式写的这样啦 哈 08/21 06:40
34F:→ ResolaQQ: 了解,我先写个基本款,确定会动再来处理这个问题好了 08/21 07:16
35F:→ ResolaQQ: 实作後发现延迟并不明显,远比软体buffer的问题还小 08/23 17:10
36F:→ ResolaQQ: 看来可以不用管XD 以後有需要的时候再来研究 08/23 17:11







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP