|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 精灵 于 2014-12-20 22:05 编辑
试一试改控,从头开始,不说改个14通呵,先整个8通带混控哈(目标而以,能实现不再论哈)
今天试验成功了M16作PPM的编码部分,用的是time1计数器的笨办法,FASTAVR一边学一边用,总算搞定,接4VF的并口模拟线
可以在用按键控制摇杆的动作,1号键切换通道,2号键增加值,3号键减少,还没有加电位器AD部分.
LCD1602第一行显示通道号,第二行显示当前通道舵机值(从500到1500)单位us,呵呵!感觉还是比较费劲
回头加AD部份了!!
程序很乱!改得很乱哈
'//////////////////////////////////////////////////////////////
$Device= m16 ' used device
$Stack = 125 ' stack depth
$Clock = 8 ' adjust for used crystal
$Timer1=Timer, Prescale=8
$Lcd =PORTD.4 , RS = PORTD.2 , EN = PORTD.3, 16, 2
$Key Rows=PORTB&h07
$Def TestPin0=PORTA.0
$Def TestPin1=PORTA.1
$Source= On
Declare Interrupt Ovf1()
Dim Testch(18) As Word
Dim akey As Byte ,achg As Byte,i As Byte,j As Byte,tempw As Word,temp As Byte
Dim tempy As Word
Testch(0)=500:Testch(1)=800:Testch(2)=500:Testch(3)=1000:Testch(4)=500:Testch(5)=1000
Testch(6)=500:Testch(7)=1000:Testch(8)=500:Testch(9)=1000:Testch(10)=500:Testch(11)=1000
Testch(12)=500:Testch(13)=1000:Testch(14)=500:Testch(15)=1000:Testch(16)=500
Testch(17)=7500
i=0:akey=0:achg=0
Set DDRA.0
Set DDRA.1
TestPin0=1:TestPin1=0
Start Timer1
Enable Ovf1
Enable Interrupts
InitLcd( )
Do
Cls '
WaitMs 5 '
Cursor Off
Locate 1, 1 ' '
Lcd “12345678“ '
Locate 2 , 1
Lcd Testch(achg+achg+1)
Cursor On:Cursor blink
Locate 1,achg+1
'//////////////////////////////////////////
akey=Key():temp=achg+achg+1
If akey=1 Then
Incr achg
If achg=8 Then
achg=0
End If
End If
'/////////////////////////////////////////
If akey=2 Then
Testch(temp)=Testch(temp)+9
If Testch(temp)>1500 Then
Testch(temp)=1500
End If
End If
'/////////////////////////////////////////
If akey=4 Then
Testch(temp)=Testch(temp)-9
If Testch(temp)<500 Then
Testch(temp)=500
End If
End If
tempw=20000-500*9
For j=0 To 7
temp=j+j+1
tempw=tempw-Testch(temp)
Next
testch(17)=tempw
WaitMs 100
Loop
End
'//////////////////////////////////////////////////////////////
Interrupt Ovf1(), Save 4
Toggle Testpin0:Toggle TestPin1
tempy=65520-testch(i)
TCNT1H= Shift(Right,8,tempy)
TCNT1L=tempy
Incr i
If i=18 Then
i=0
End If
End Interrupt
今天总算赶上了一点进度,加上了4个通道,先测试波形很稳,在电脑上用G2测试,可以哈!可以飞cap232了,很灵活的飞机,应该说不跳舵哈!
LCD上显示当前通道的数值,个位数上有跳动,应该是正常的,范围从500~1500us。每个AD上接了104P的电容滤波
其它什么都没加,用的是华科尔4号的电位器。三和VG400还没舍得拆,等方案成熟再改。
接RD6000的高频头发射信号,感觉还行,比较稳。
测试平台,我的慢飞P51机身,加滑翔机机翼,舵机声音大,有点小动静都听都见
后来出现一次,油门只要一动,其它通道都抖,后来检查了一下,是虚焊哈!:em15: :em15:
今天的程序还是乱哈!!
'//////////////////////////////////////////////////////////////
$Device= m16 ' used device
$Stack = 125 ' stack depth
$Clock = 8 ' adjust for used crystal
$Timer1=Timer, Prescale=8,CompareA=Toggle,Clear
$Lcd =PORTC.4 , RS = PORTC.2 , EN = PORTC.3, 16, 2
$Key Rows=PORTB&h07
$Def TestPin0=PORTD.5
$Source= On
Declare Interrupt
|
| |