emulein
22.01.2010, 12:56
Hallo Zusammen,
ich bin gerade dabei einen RX-10 Servo mit Bascom anzusteuern, leider
habe ich da so meine Probleme. Hier im Forum war das ja schon mal ein Thema und ich habe auch ein paar Sachen versucht. Am Anfang ist es halt schwer Fehler einzugrenzen, könnte ja Hard.- oder Software sein. Ich poste einfach mal den Code den ich versucht habe, vielleicht sieht ja einer einen Fehler. Danke schon mal im voraus!!
Ich hoffe das es mit der 485 Schnittstelle so geht, habe da die ganze Zeit
einen anderen Motor dran gehabt, dort hat es geklappt, Senden und Empfangen.
Hier mal das Datenblatt des Servo´s
http://www.nodna.com/download/ROBOTIS/Dynamixel/RX-10(english).pdf
und hier der Code
$regfile = "m16def.dat" 'ATMEGA16
$crystal = 16000000 'Quarz: 16MHz
$baud = 1000000
Dim S As Byte
Wait 2
Ddrd = &B11100000 'Pin PD7,6,5 als Ausgang konfigurieren
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Enable Interrupts 'Interrupts global
'FF FF 01 04 03 19 01 DD ' LED ein bei Adresse 1
'FF FF 01 04 03 19 00 DE ' LED aus bei Adresse 1
Do
Wait 1
Ucsra.txc = 1
Portd.7 = 0 ' 485 Modul auf schreiben setzen
Waitms 1
S = &HFF
Print Chr(s);
S = &HFF
Print Chr(s);
S = &H01
Print Chr(s);
S = &H04
Print Chr(s);
S = &H03
Print Chr(s);
S = &H19
Print Chr(s);
S = &H01
Print Chr(s);
S = &HDD
Print Chr(s);
Portd.6 = 0 ' Test-Led einschalten
Sprung:
If Ucsra.txc = 0 Then Goto Sprung ' warten bis Serieller Puffer leer ist
Portd.7 = 1 ' 485 Modul auf lesen setzen
Wait 1
Ucsra.txc = 1
Portd.7 = 0 ' 485 Modul auf schreiben setzen
Waitms 1
S = &HFF
Print Chr(s);
S = &HFF
Print Chr(s);
S = &H01
Print Chr(s);
S = &H04
Print Chr(s);
S = &H03
Print Chr(s);
S = &H19
Print Chr(s);
S = &H00
Print Chr(s);
S = &HDE
Print Chr(s);
Portd.6 = 1 ' Test-Led ausschalten
Sprung1:
If Ucsra.txc = 0 Then Goto Sprung1 ' warten bis Serieller Puffer leer ist
Portd.7 = 1 ' 485 Modul auf lesen setzen
Loop
End
Danke Gruß Frank
ich bin gerade dabei einen RX-10 Servo mit Bascom anzusteuern, leider
habe ich da so meine Probleme. Hier im Forum war das ja schon mal ein Thema und ich habe auch ein paar Sachen versucht. Am Anfang ist es halt schwer Fehler einzugrenzen, könnte ja Hard.- oder Software sein. Ich poste einfach mal den Code den ich versucht habe, vielleicht sieht ja einer einen Fehler. Danke schon mal im voraus!!
Ich hoffe das es mit der 485 Schnittstelle so geht, habe da die ganze Zeit
einen anderen Motor dran gehabt, dort hat es geklappt, Senden und Empfangen.
Hier mal das Datenblatt des Servo´s
http://www.nodna.com/download/ROBOTIS/Dynamixel/RX-10(english).pdf
und hier der Code
$regfile = "m16def.dat" 'ATMEGA16
$crystal = 16000000 'Quarz: 16MHz
$baud = 1000000
Dim S As Byte
Wait 2
Ddrd = &B11100000 'Pin PD7,6,5 als Ausgang konfigurieren
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Enable Interrupts 'Interrupts global
'FF FF 01 04 03 19 01 DD ' LED ein bei Adresse 1
'FF FF 01 04 03 19 00 DE ' LED aus bei Adresse 1
Do
Wait 1
Ucsra.txc = 1
Portd.7 = 0 ' 485 Modul auf schreiben setzen
Waitms 1
S = &HFF
Print Chr(s);
S = &HFF
Print Chr(s);
S = &H01
Print Chr(s);
S = &H04
Print Chr(s);
S = &H03
Print Chr(s);
S = &H19
Print Chr(s);
S = &H01
Print Chr(s);
S = &HDD
Print Chr(s);
Portd.6 = 0 ' Test-Led einschalten
Sprung:
If Ucsra.txc = 0 Then Goto Sprung ' warten bis Serieller Puffer leer ist
Portd.7 = 1 ' 485 Modul auf lesen setzen
Wait 1
Ucsra.txc = 1
Portd.7 = 0 ' 485 Modul auf schreiben setzen
Waitms 1
S = &HFF
Print Chr(s);
S = &HFF
Print Chr(s);
S = &H01
Print Chr(s);
S = &H04
Print Chr(s);
S = &H03
Print Chr(s);
S = &H19
Print Chr(s);
S = &H00
Print Chr(s);
S = &HDE
Print Chr(s);
Portd.6 = 1 ' Test-Led ausschalten
Sprung1:
If Ucsra.txc = 0 Then Goto Sprung1 ' warten bis Serieller Puffer leer ist
Portd.7 = 1 ' 485 Modul auf lesen setzen
Loop
End
Danke Gruß Frank