PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : servomode



michiE
04.01.2006, 11:54
ich hab heir ne CCI m-Unit2 und 2 servos mit hilfe von nem script an ports 4 und 5 angesteuert. Das script , das ich dafür gefunden habe funktioniert echt super. aber leider brauch ich noch 2 weitere servos an der gleichen cc. ich hab gehört , dass sich die DA ausgänge in einen "servo-mode" schalten lassen müssten. Kann mir da jemand nen kleinen codeschnipsel geben , oder mir sonst sagen , wie man die 2 servos sonst irgendwie an die cc anschließen könnte ? ich habe übrigends keinen mm² mehr in meinem bot für zusätzliche schaltungen frei :-(
vielen dank schon mal
mfg
michi

Suggarman
04.01.2006, 14:46
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIII
'III CCBASIC++ DEMO ZUM BASIC-COMPUTER UNIT M 1.2/2.0 IIIII
'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIII
'--------------------------------------------------------------------
' Beispiel zum BASIC-COMPUTER mit dem Programmer/Application-Board
'--------------------------------------------------------------------
' ANWENDUNG: SERVOANSTEUERUNG MIT DA1 und DA2
'
'--------------------------------------------------------------------
' Dieses Beispiel zeigt die Vorgehensweise um die beiden PWM DA-WANDLER
' zur Ansteuerung von Servos zu konfigurieren. Die Konfiguration
' erfolgt über ein KONFIGURATIONS-REGISTER, das wie alle erweiterten
' Funktionen Bestandteil eines OBJECTS ( hier CONFIG)ist. Das Register
' kann gelesen u. beschrieben werden.
'--------------------------------------------------------------------
' Das Konfigurations-Register bietet folgende Optionen.
'
' Bit 0 Schaltet beide PWM-DACs in den SERVO-Mode
' Bit 1 Schaltet den Frequenzzähler 1 in den EREIGNISZÄHLER Mode
' Bit 2 Schaltet den Frequenzzähler 2 in den EREIGNISZÄHLER Mode
' Bit 3 Aktiviert die PULLUP-Widerstände an PORT 1 bis 8
' Bit 4 Aktiviert die PULLUP-Widerstände an PORT 9 bis 15
' Bit 5 Zeigt an wenn die interne Uhr mit DCF77 synchronisiert wurde
' Bit 6 Signalisiert einen Fehler bei der IIC-Kommunikation
' Bit 7 Zustand der Start-Taste
'---------------------------------------------------------------------
' Einzelheiten darüber finden Sie in den Demos zu den EXTENDED FUNCTIONS
' - LCD OBJECT über die zusätzlichen Funktionen für das LCd
' - CONFIG OBJECT über die zusätzlichen Funktionen für die Konfiguraton
'
' Beschreibung:
' Wenn die beiden DA-Ausgänge (und das ist leider nur für beide gleichzeitig möglich)
' als SERVO-Treiber konfiguriert sind liefern sie ein für Servos übliches Signal
' mit einer Wiederholfrequenz von 50 Hz.
' Ein DA-Wert von Null entspricht einer Pulslänge von 1ms, ein Wert von 255
' einer Impulslänge von 2ms
' In diesem Beispiel werden die Einstellbereiche von DA1 u. DA2 antizyklisch
' durchfahren, der gerade aktuelle Wert wird im LCD angezeigt.
' Wenn Sie an DA1 u. DA2 jeweils ein SERVO anschliessen, sehen Sie den Stellbereich
' des Servos
' Beachten Sie bitte, dass der Wert für DA1 u. DA2 nicht aus diesen zurück
' gelesen werden kann.
' Der aktuelle Wert für jedes SERVO wird auf dem LCD ausgegeben.
'-----------------------------------------------------------------------

'--------------------------
'------ I/O PORTS ---------
'--------------------------
define SERV1 da[1]
define SERV2 da[2]
define LIGHT port[16]
'--------------------------
'---- SYSTEM MEMORY -------
'--------------------------
define WERT1 byte[1]
define WERT2 byte[2]
define TEMPVAL byte[3]

goto MAIN
'-------------------------------------------------
'-- SERVO MODE AKTIVIEREN -
'-------------------------------------------------
FUNCTION SERVOMODE()
CONFIG.INIT
CONFIG.PUT 00000001b
CONFIG.OFF
END FUNCTION

'-------------------------------------------------
'-- DISPLAY DATA LOOP -
'-------------------------------------------------
#MAIN
SERVOMODE()
WERT1=128
LCD.INIT
LIGHT=off
#LOOP
WERT2=WERT2+1
WERT1=WERT1+1 'Werte inkrementieren
SERV1=WERT1
SERV2=WERT2 'An DA1 u. DA2 ausgeben
LCD.POS 1,1
LCD.PRINT "SERVO1: "
LCD.PRINT WERT1 'AUSGABE AN SERVO
LCD.PRINT " " 'REST DER ZEILE LÖSCHEN
LCD.POS 2,1
LCD.PRINT "SERVO2: "
LCD.PRINT WERT2 'AUSGABE AN SERVO
LCD.PRINT " " 'REST DER ZEILE LÖSCHEN
goto LOOP



Unter http://c-control-support.de/ gibts noch Unmengen an Beispielen.

mfg

Stefan

michiE
05.01.2006, 12:28
Danke =)
hat mir viel weitergeholfen :-)

mfg
Michi