Zitat von
Bluesmash
für den empfang mit der software
UART kann ich nur die version mit dem interrupt empfehlen... bin gerade an nem projekt indem ich es verwende...
hier ein kleiner auszug aus meinem code must ihn halt noch abändern für deinen prozi... wichtig ist einfach dass der port für den empfang an einem interrupt pin hängt... bei mir wird der anfang der zu empfangenen daten mit einer 1 erkannt...
Code:
Open "Comb.6:9600,8,n,1" For Input As #2
Config Int0 = Falling
On Int0 Int0_isr
Enable Int0
Enable Interrupts
do
loop
Int0_isr:
Temp = Inkey(#2)
If Temp = 1 Then
Temp = 0
Servo1 = Waitkey(#2)
Servo2 = Waitkey(#2)
Speed = Waitkey(#2)
End If
Return
gruss bluesmash
Hi,
wie wird das von dem anderen Controller angesteuert? Also wie sendest du die Bytes? Ich hab folgenden Code für den Servocontroller:
Code:
$regfile = "attiny2313.dat"
$crystal = 8000000
Waitms 100
Config Servos = 4 , Servo1 = Portb.0 , Servo2 = Portb.1 , Servo3 = Portb.2 , Servo4 = Portd.6 , Reload = 10
Config Portb = Output
Config Portd.6 = Output
Config Int0 = Falling
On Int0 Int0_isr
Enable Int0
Enable Interrupts
Servo(1) = 100
Servo(2) = 100
Servo(3) = 100
Servo(4) = 100
Dim Temp As Byte
Dim New As Bit
Dim Servo_num As Byte
Dim Servo_pos As Byte
Open "Comd.2:9600,8,n,1" For Input As #2
Do
If New = 1 Then
Servo(Servo_num) = Servo_pos
New = 0
End If
Loop
Int0_isr:
Temp = Inkey(#2)
If Temp = 1 Then
Temp = 0
Servo_num = Waitkey(#2)
Servo_pos = Waitkey(#2)
New = 1
End If
Return
Und das is der Code von dem Controller, der dem Servocontroller die "Befehle" gibt:
Code:
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600
Waitms 100
Do
Print 1
Print 1
Print 170
Wait 2
Print 1
Print 1
Print 70
Wait 2
Loop
End
Dadurch sollte der Servo sich immer vor und zurückdrehn. Allerdings bewegt er sich keinen Millimeter. Es muss am Soft-UART liegen, wenn ich den Servo direkt ansteuer gehts. Ich denke mal dass die "Print"-Befehle nicht in Ordnung sind.
Kann mir jemand helfen?
MfG
Lesezeichen