ASM 板


LINE

看板 ASM  RSS
各位好, 小弟最近在写一支自动控制的工作程式。 需要让步进马达可以高转速运作 因此希望每一步之间的delay可以用100μs为单位控制 MCU 新唐W78E516DDG (8052) 振荡器 30MHz Keil C 电路运作正常 方式1是用一般的timer0中断 #define tv 248 //用2.5GS/s 示波器量 1ms时 timer0值为2481 #define TH (65536 - tv)/256; #define TL (65536 - tv)%256; int x1ms; void delay100us(int count1) { x1ms = count1; IE = 0x92; //timer0为计时中断 timer1为uart中断 TMOD = 0x21; //timer0为计时中断 timer1为uart中断 TH0 = TH; TL0 = TL; TR0 = 1; while(x1ms != 0); } void T0_int(void) interrupt 1 { TR0 =0; x1ms-- ; TH0 = TH; TL0 = TL; TR0 =1; } 信号测量程式 void timertest(int delaytime) //透过uart给定delaytime { while(1) { P2 = 0xff; delay100us(delaytime); P2 = 0x00; delay100us(delaytime); } } 这样timertest(1); 跑出来延迟大约是384 μs, OK,虽然差满多的,那我调整一下tv参数应该就可以了吧 调整到tv = 150 跑出来为360 μs左右...这样其他指令也跑太久了吧@@" 再来问题就更大了,我把tv值调得更小 函数timertest()就无法运作 .........也就是最低只能到360μs 也试过把timer0改成mode0 结果相同,完全不知道原因在哪里... 理论上不是0~65536吗.. 因为中断搞不定,我改用跑回圈的方法: void delayL(int t) //延迟tx1ms 副程式 { int i = 0; while(i != t) { i++; } } Keil C编译的结果如下: 79: int i = 0; C:0x125D 8B4C MOV 0x4C,R3 C:0x125F 8A4D MOV 0x4D,R2 C:0x1261 894E MOV 0x4E,R1 80: while(i != t) 81: { 82: i++; C:0x1263 BF0116 CJNE R7,#0x01,C:127C 83: } C:0x1266 7F80 MOV R7,#P0(0x80) C:0x1268 7E00 MOV R6,#0x00 C:0x126A 12162A LCALL write_inst(C:162A) 84: } 结果 timertest(1); 跑了542 μs....................这不科学 也试过for回圈的写法,差异不大。 想请教: 1.为何tv参数不能更小?或是写法哪里有问题@@? 2.delayL 回圈写法 跑一圈花的时间也太长了吧...why...我以为顶多几十μs 3.想要有100 μs的delay函数 不知道要从哪边下手呢。 *先不考虑timertest(1)和timertest(10)的差异。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 42.70.50.235
1F:推 maxlighter:可以去看一下进出中断的ASM码 06/27 18:13
2F:→ shaoweei:看了一下 T0_int的函数也只有30行左右@@应该也不用上百 06/27 18:38
3F:→ shaoweei:微秒 06/27 18:38
Hi All: 後来我在计时中断时关闭UART中断,tv参数就可以小到100以下了 void delay100us(int count1) //计时设定副程式 { x1ms = count1; IE = 0x82; TMOD = 0x01; TH0 = TH; TL0 = TL; TR0 = 1; while(x1ms != 0); IE = 0x92; //打开UART中断 TMOD = 0x21; } delayL我另外开一个单纯的project就正常了...应该也是UART设定的问题.... ※ 编辑: shaoweei 来自: 42.70.50.235 (06/27 19:11)
4F:推 ksmrt0123:要设定timer除数要用算的不应用量的. 你要100uS(=10KHz) 06/30 00:14
5F:→ ksmrt0123:所以从XTAL要除3000, 所以timer要除250 06/30 00:15
6F:→ ksmrt0123:既然timer只需除250, 用mode2(auto reload)比较好 06/30 00:18
7F:→ ksmrt0123:另建议是把stpm的控制直接放在timer isr内作掉就好 06/30 00:19
8F:推 WolfLord:他的问题只在於忘记把TIMER的PR提高而已啦 XD 06/30 02:51
9F:推 lion21:建议可以换 1T的相容产品 . 06/30 03:09
10F:→ WolfLord:@Lion21 UART 跟TIMER ISR优先权不解决用0.5T/133MHZ 06/30 05:41
11F:→ WolfLord:也是无法解决时间会飘的问题.... 06/30 05:41
12F:推 ksmrt0123:光改timer isr priority没用, 因为在stpm两个steps间 06/30 20:49
13F:→ ksmrt0123:uart interrupt还是会发生 06/30 20:49
14F:→ WolfLord:TIME优先下在TIMER时不会发生UART,在UART会发生TIMER 06/30 22:24
15F:→ WolfLord:所以TIMER只要扣除ISR进入的时间就可以稳定执行了。 06/30 22:24
16F:→ WolfLord:反过来,TIMER内会有UART或UART跟TIMER竞争TIMER就会飘 06/30 22:25
17F:→ shaoweei:原来如此 受教了>< ~~~~~~ 07/01 01:38
18F:推 ksmrt0123:光改timer int priority没用, 以原po的 timertest()来说 07/02 00:18
19F:→ ksmrt0123:P2=0xFF与P2=0x00间还是会发生uart int, 造成P2信号输出 07/02 00:20
20F:→ ksmrt0123:时间受影响 07/02 00:20
21F:推 ksmrt0123:事实上把timer int设高priority只有保证timer isr 07/02 00:23
22F:→ ksmrt0123:不会受到uart的干扰, 所以要把需要精准计时的动作放到 07/02 00:24
23F:→ ksmrt0123:ISR内做 07/02 00:24
24F:→ ksmrt0123:上一段的说法不够正确... 不过原po的程式只改timer int 07/02 00:51
25F:→ ksmrt0123:priority不够是肯定的 07/02 00:51
26F:→ shaoweei:多谢k大指点 我再试试把要用的程式一起包到ISR里面@@ 07/03 20:28







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灯, 水草

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

TOP