[問題] C++求救!不知道問題在哪裡!!
※ [本文轉錄自 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
略...
註:伺服馬達的控制是給予一小段特定時間脈波(1.5ms 2.0ms...
並於滿足週期後向著目標角度進行一動(視馬達而定...
給予足夠迴圈就可以移至正確角度位置(r2=50...
簡單介紹後進入正題,
目前寫出來的C是
略....
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 )
略...
問題開始!!
在原先測試的時候發現robot像中風一樣一直抖...抖...抖...
轉而用這個簡易程式測試
結果發現各種交叉測試
1.交換馬達
2.交換程式位置(考慮定義先後
3.改變輸出port點
都無法使lh2這個副程式正常動作
但hd1完全正常!!!
但hd1完全正常!!!
但hd1完全正常!!!
DEBUG到目前為止並無發現任何硬體上的錯誤以及軟體上直接的錯誤
是有什麼隱規則被忽略掉了嗎?
這兩個副程式只差在一個叫hd1 一個叫lh2
但結果是天差地別
請問各位高手有什麼辦法嗎??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.126.120.102
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.126.120.102
推
07/18 22:05, , 1F
07/18 22:05, 1F
→
07/18 22:06, , 2F
07/18 22:06, 2F
→
07/18 22:10, , 3F
07/18 22:10, 3F
推
07/18 22:12, , 4F
07/18 22:12, 4F
→
07/18 22:15, , 5F
07/18 22:15, 5F
→
07/18 22:16, , 6F
07/18 22:16, 6F
→
07/18 22:16, , 7F
07/18 22:16, 7F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 4 篇):
ASM 近期熱門文章
PTT數位生活區 即時熱門文章