[問題] C++求救!不知道問題在哪裡!!
目前正在進行專題,
遇到一個很奇怪的問題,
我描述一下情況:
目前從學長那繼承一個由伺服馬達控制的機器人,
原有的控制方式是組語,
後來改用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
※ wayn12342000:轉錄至看板 ASM 07/18 21:44
推
07/18 22:54, , 1F
07/18 22:54, 1F
→
07/18 22:56, , 2F
07/18 22:56, 2F
→
07/18 23:04, , 3F
07/18 23:04, 3F
推
07/19 10:28, , 4F
07/19 10:28, 4F
→
07/19 17:35, , 5F
07/19 17:35, 5F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章