ASM 板


LINE

看板 ASM  RSS
※ 引述《deo2000 (800IM)》之铭言: : 如标题 : 之前的控制,我一次都只传一个字元,所以没什麽问题。 : 但是现在控制目标不仅仅只於马达运动方向了,还多了 PWM。 : 上下左右解析度都 100 的话,资讯量就暴增到 (100+100)^2=40k 马达运动方向 1 bit,PWM资讯 1 byte. 如果你的马达有两颗,也不过 3 bytes,哪来的 40K ? 如果传输的资料 <header> <datas> <check sum> 1byte 3bytes 1byte 也不过5 bytes : 已经非 ASCII 一个字 0~255 可以容纳。 : 但是我这几天实作 PC 送字串给 51 一直出问题, : 先从两个字开始做起。 : 虽然很多高手热心帮忙解答,但在这个关键上都没有改善,弄得焦头烂额了。 : 目前 4 组 PWM 控制的实验,若不是要靠重新烧录改值,就是要靠 51 的 IO set, : 实在是找不到一个可以用 PC 一次传送这麽大量资讯的办法。 : 是否有板友做过类似的东西,可以提供样板或经验呢?谢谢 BYTE data Current_State = FSM_INIT; #define SYNC 0x40 //Guide Char '@' BYTE data ANG_Itor; BYTE data PWM_ANGLE[4]; BYTE data PWM_ID; WORD data PWM_Count[4]; void ISR_Serial() interrupt Serial_ISR { BYTE data ch; if(_testbit_(TI)) { } if(_testbit_(RI)) { if(!Flag.rx)//Do nothing if the command not be excuted before. { ch = SBUF; switch(Current_State) { case FSM_INIT: if(ch == SYNC) { Current_State = FSM_ADDRESS; SBUF = ch; } break; case FSM_ADDRESS: if(isalpha(ch)) { PWM_ID = ch; Current_State = FSM_ANGLE; SBUF = ch; } break; case FSM_ANGLE: if(isdigit(ch)) { PWM_ANGLE[ANG_Itor] = ch; SBUF = ch; ++ANG_Itor; if(ANG_Itor > 2) { PWM_ANGLE[ANG_Itor]=0; ANG_Itor = 0; Current_State = FSM_END; } } if(ch == 0x0D) { Current_State = FSM_INIT; PWM_ANGLE[ANG_Itor] = 0; SBUF = ch; ANG_Itor = 0; Flag.rx=1; } break; case FSM_END: if(ch == 0x0D) { Current_State = FSM_INIT; SBUF = ch; ANG_Itor = 0; Flag.rx=1; } break; default: //Reset FSM Flag.rx=0; Current_State = FSM_INIT; ANG_Itor = 0; break; } } } } -- 不要问我从哪来,我只是一个浪迹天涯的工程师.... --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.232.32.206
1F:推 deo2000:对,我搞错了,最低资讯量不是^2,是*2,因一次只能跑一个方向 08/13 03:40
2F:→ deo2000:想不到这麽困难的东西大家都直接给code啊 (惊) 08/13 03:41
因为要解释做法很累,乾脆直接放code,不去研究怎样做,那些code就 跟废物一下。而且也不是啥困难的东西,那是我以前大二写的东西。现 在也不用8051了。
3F:推 WolfLord:因为看你很勤劳啊~ 不过说真的,觉得你要好好把CODE看懂 08/13 04:11
4F:→ WolfLord:喝汤囫囵吞很容易烫到喔 :P 08/13 04:12
5F:推 Deltaguita:只要不是伸手牌 这里很多很厉害的前辈在分享自己的经 08/13 11:22
6F:→ Deltaguita:验 收获良多 08/13 11:23
※ 编辑: MasterChang 来自: 118.232.32.206 (08/13 23:02)
7F:推 ksmrt0123:其实原po没算错, 只是"资讯量"这词容易误解. 08/13 23:39
8F:→ ksmrt0123:每颗马达需要 (方向2) x (pwm 100)种状态, 08/13 23:40
9F:→ ksmrt0123:两颗独立就是 (2x100)^2 种状态, 08/13 23:41
10F:→ ksmrt0123:故需要40K个数值才能表示所有状态, 可编进2 bytes. 08/13 23:41
查表? 到现在还不知道原PO的PWM频率多高?XD
11F:→ ksmrt0123:40K只是计算最少需要的状态(数值), 不代表要编成 08/14 00:06
12F:→ ksmrt0123:0-399999 08/14 00:07
※ 编辑: MasterChang 来自: 118.232.32.206 (08/14 00:11)
13F:推 ksmrt0123:看原po最早的程式似乎是想要10K @ 10 steps... 08/14 00:15
14F:→ ksmrt0123:不过这用11.0592MHz的标准51应该是做不到 08/14 00:15
XD 我是 WolfLord 讲得那种死硬派,只要跟演算法核心无关得我只 想用硬体搞定。~_~ ※ 编辑: MasterChang 来自: 118.232.32.206 (08/14 00:24)
15F:推 WolfLord:他想用11.0592做出10uS/100Steps*8CH 的PWM,然後还要 08/14 00:30
16F:推 ksmrt0123:PWM硬体很多了, PIC的ECCP, STM32的TIM都很方便 08/14 00:30
17F:→ WolfLord:可以用serial来通讯、改变各ch的数值。其实我算一算也不 08/14 00:31
18F:→ WolfLord:是不能做出来,只是写范例太花工,要解释清楚更花功 XD 08/14 00:32







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

请输入看板名称,例如:e-shopping站内搜寻

TOP