Re: [問題] C++求救!不知道問題在哪裡!!

看板ASM (組合語言)作者 (呆呆小狼)時間15年前 (2009/07/18 22:31), 編輯推噓3(306)
留言9則, 1人參與, 最新討論串2/4 (看更多)
本來有點懶得用回文的 不過有幾點你要先想清楚 從ASM來看 1.馬達的動作是靠延遲來決定的。 2.馬達驅動後需要有HOLD TIME 3.動作需要交叉驅動 但是你的C卻是 1.持續一次給了一個馬達的動作量,然後才驅動第二個。 2.完成後沒有HOLD TIME 結果可能第一個被呼叫的因為改叫第二個的時間而動作 而第二個馬達卻沒有足夠的時間ACTIVE 您就仔細想想差異在哪吧? 你一直說電路都一樣,但是事實上就是改變了。但是改變之後是不是 符合馬達特性?你是否有確認? 另外,你的描述很差勁,馬達到底是STEP還是SERVO? SETP除非有其他COUNT電路,不然不會只給脈衝就好。但是給脈衝的話 控制角度的原理也不是這樣。至於SERVO則是需要搭配回授脈衝與計時 微分。你的程式看不出來你如何處理回受脈衝。 一模一樣的程式有不一樣的答案,絕對是電路/硬體無法配合。可能是 你弄錯馬達特性,也可能是修改後的電路有問題。 不要信誓旦旦地保 證電路不會有錯誤, 如果您無法細心的檢查我想您可能到被當掉都找 不出原因。 ※ 引述《wayn12342000 (阿菁)》之銘言: : ※ [本文轉錄自 C_and_CPP 看板] : 作者: wayn12342000 (阿菁) 看板: C_and_CPP : 標題: [問題] C++求救!不知道問題在哪裡!! : 時間: Sat Jul 18 21:40:13 2009 : 目前正在進行專題, : 遇到一個很奇怪的問題, : 我描述一下情況: : 目前從學長那繼承一個由伺服馬達控制的機器人, : 原有的控制方式是組語, : 後來改用C控制, : 但發生副程式無法動作的情況, : 下面是控制方式 : 範例(組語): : 略... : mov r2,#50 ;給值50 : loop0: : mov p2,00000001;丟值進P2.0 控制motor1 : call delay15 ;延遲1.5ms(角度一) : mov p2,00000010;丟值進P2.1 控制motor2 同時將P2.0值=0 : call delay20 ;延遲2.0ms(角度二) : call delay200 ;延遲20ms (滿足週期 驅動馬達動作) : djnz r2,loop0 : 略... : void hd1( int );宣告各部位副程式 頭 : void lh2( int ); 手 : 略... : main() : { : int i; : for(i=0;i<50;i++) : { : hd1( 45 );要求移向的角度 : } : for(i=0;i<50;i++) : { : lh2( 45 ); : } : } : void hd1( int angle ) : { : p1=00000001; : angledelay( angle ); : } : void lh2( int angle ) : { : p1=00000010; : angledelay( angle ); : } : void angledelay( int angle ) -- 作別人不願作的事,是好人!。 作別人不敢作的事,是壞人!。 作別人不能作的事,是天才!。 作別人不會作的事,是…腦殘!! WolfLord -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.46.205.90

07/18 22:36, , 1F
我一次給予一個動作量是為了做基本測試,目前就是單純
07/18 22:36, 1F

07/18 22:37, , 2F
lf2這個副程式無法動作,不知問題在哪,我也將程式先後
07/18 22:37, 2F

07/18 22:38, , 3F
順序改變過,但無論誰先動誰後動,lh2就是不動,hd1動的
07/18 22:38, 3F

07/18 22:38, , 4F
狀況很好
07/18 22:38, 4F

07/18 22:41, , 5F
目前電路完全從學長那控制版複製而來,就只有在程式內
07/18 22:41, 5F

07/18 22:41, , 6F
改變控制腳位再以插PIN位置修正,我回答第一第二點了,
07/18 22:41, 6F

07/18 22:42, , 7F
至於沒有清楚解釋是步進馬達還是伺服馬達是我的錯誤,
07/18 22:42, 7F
那到底是哪一種馬達? ※ 編輯: WolfLord 來自: 114.46.205.90 (07/18 22:46)

07/18 22:47, , 8F
伺服
07/18 22:47, 8F

07/18 22:48, , 9F
上一屆使用組語方式控制並沒有遇到這些問題
07/18 22:48, 9F
伺服馬達並不是靠時間區隔驅動的喔~~ 另外,把示波器接上去看,如果P1.1有信號,那就是你的馬達驅動方式有問題 如果P1.1沒信號,那就是線路有短路 ※ 編輯: WolfLord 來自: 114.46.205.90 (07/18 22:53)
文章代碼(AID): #1AOTob5g (ASM)
文章代碼(AID): #1AOTob5g (ASM)