Home
        Handbuch SandboxS 2 - Hagenberg Hexapod Robot Pages
         Contents
1.                            QL Q  a                  ee a Q 169   974 Wart        test Bub en 170   975        usb tx ready ee euer nun           170   Q0 uat usb Mish uds uw t Rey e NEE      dte                  171   05             ei waka 9m eda    dem Oo bo          OE    A ES 171          ECL Lucus eer Eae vor dex cR oe Wem dU RO Er ar ka      171   052      Sethedbnghiness o o rensa kx a k a a        EU        172   2623 RC SELECTA og cy cg ooo ea RR                 173   9954  BC SelbervoMOde         esos oom e o en 173   9 8 5      SetGlobalServoMode                             175   956      SetServoPwmDirect   oo coc e ea ee RR XR d 176   087 RC GetServoCumentPwm 212 2222 or eS kg 3 177   988 RC SetServoPhiSpeed 22 2                           178   9 89 RC SetServoPhiDirect     2 2 2  om mm   nen 179  9 8 10 RC GetServoDeltasTOGo                             181  9 8 11 RC GetServoCurrentDeltaPhi                           182  9 8 12 RC_GetServoCurrentPhi                              183  9 813 RC_SetServoRotation                               185  9 8 14     _                                                             186  SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007          INHALTSVERZEICHNIS 9  9 8 15 RC SetServoAttributesTable                            186  9 8 16 RC SetServoAttributesTable                             186  9 8 17 RC SetGlobalServoAttributesTable                        186  9 8 18 RC SetGlobalServoAttributesTable                         18
2.                          R  ckgabewert   R  ckgabewert Beschreibung   Data Akkusspannung in mV   Anmerkung    Bevor diese Funktion verwendet werden kann  muss SL2_Init    aufgerufen werden     Beispiel  Einschalten von AVR LED 1 sobald die Akkuspannung 5 5V  5 5V   5500mV  unterschreitet     int main          uintl6_t Voltage   0       function that has to b xecuted in every appli     cation to initialize the interface with the FPGA  SL2 Init           while  1       Voltage   SL2 GetBatteryVoltage     if  Voltage  lt  5500           SL2 AvrSetMsgLed  SL2 MSG LED 1  SL2_MSG_LED_STATUS_ON                          return 0     9 4 12 SL2 ExtAvrGetAdcValue    uintl16 t 512 ExtAvrGetAdcValue  in  uint8 t Number     Beschreibung    Misst die Spannung an einem ADC Pin des AVR        Parameter   Bedeutung   Number Gibt den Index des ADC an  an dem die Spannung gemessen werden soll   Kann folgende Werte annehmen  512 EXT         2  am Erweiterungsstecker  des AVR angeschlossen  oder S L2  EXT         3  Messung der Akkuspannung                        R  ckgabewert       R  ckgabewert   Beschreibung  Number 16 bit Wert des ADC  aus dem der entsprechende Spannungswert berechnet  werden kann                       SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    160 9 SOFTWARE FUNKTIONSBIBLIOTHEK       Anmerkung    w   e Die von dieser Funktion zur  ckgegebenen Werte sind keine Spannungen sondern lediglich Zah   lenwerte  die in einem bestimmten Verh  ltnis zur messenden Spannung st
3.                      functions             EE ILL AL ERS AL ELLE LATA GOAL      stream I O wrapper functions    anb  int  int  int      do all the initialization stuff here    strm uart putc char c FIL  strm uart_getc  FILE xs   strm usb putc char c FILE    strm usb getc FIL    void Init  woid                 xs         S         re        5            turn    turn     uart putc c  return 0       unsigned char uart getc         uart usb  putchar c  return 0       unsigned char uart  usb getchar           SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    140 8 INVERSE KINEMATIK         initialize sandboxs2 AVR  SL2 Init  i        initialize robotics chip  RC Init         initialize usb  uart usb init          initialize uart  uart init  UART CALC BAUDRATE  38400            clear all LEDs  RC SetLedClearAl1         activate stream I O  gStrmUSB   fdevopen strm usb putc strm usb getc    gStrmUART   fdevopen strm uart putc strm uart                  enable interrupts  sei         get keys state  KeysState GetKeysState  void       uintl6 t i          key is still pressed  if  SL2_AvrGetKey  SL2 KEY 0              delay loop 2 0xfff    return INCREMENT                 if SL2 AvrGetKey SL2 KEY 1                 delay loop 2 0xfff    return DECREMENT                            wait on key  while  SL2 AvrGetKey SL2 KEY 0   amp  amp   SL2 AvrGetKey SL2 KEY 1     delay  loop 2 0xffff              evaluate keys  if SL2 AvrGetKey SL2 KEY 0   amp  amp  SL2 AvrGetKey SL2 KEY 1       
4.                     228       Layoutlop Layet    u ercas s   a ke Na ae eae age           wa da 229  RS Layout                        gt  2 2 2 2224        4          a Ea d   230   C RC Empf  ngerumbau zum Anschluss an die SandboxS 2 231  D Literaturverzeichnis 235  Index 235       SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    11       1   berblick    d  Kn BR    rra             Abbildung 11  Die     EEE t dis    p  SandboxS 2  Mur Me DIST LATE don AE UA                               Das Embedded System SandboxS 2  Abb  1 1  links  ist eine frei kon gurierbare Steuerelektronik  f  r bis zu 24 Servoantriebe  Bei der Entwicklung stand das Feld der Embedded Robotics als wichtigster  Anwendungbereich im Vordergrund  Als Anwendungsbeispiel seien die Hexapod Laufroboter    Wilde  13    und    Captain Ahab  genannt  die in Abbildung 1 2 zu sehen sind  Das System sollte dar  ber       Abbildung 1 2  Zwei Hexapods vor ihrem Zuhause in Hagenberg  Links  Eine Wilde 13  Pal3   Rechts   Die wesentlich gr    ere Konstruktion Captian Ahab  Bo20      hinaus auch f  r Roboter verwendbar sein  wie sie Abb  1 3 zeigt        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    12 1   BERBLICK          Abbildung 1 3  Mittlere bis gro  e Octapods stecken die obere Grenze des Einsatzspektrums der Sand   boxS 2 ab  Die Aufnahmen entstanden im Laboratorium von HSSE und bei einer Exkursion auf dem  Versuchsfreigel  nde in Hagenberg M  hlkreis     Die SandboxS 2 eignet sich   ber die Robot
5.                   R  ckgabewert    Der R  ckgabewert bestimmt  ob der Punkt angefahren werden konnte oder nicht        R  ckgabewert Beschreibung       IK FAILED Der Punkt kann nicht erreicht werden                   SUCCESSFUL   Der Punkt wurde angefahren           Anmerkung    e Bevor diese Funktion verwendet werden kann  m  ssen SL2_Init     RC_Init     RC_Init    aufgerufen werden und der CORDIC Interrupt muss aktiviert sein     Beispiel    und    Berechnet die Winkel f  r den Punkt  138  80  0  im rotierten Coxa System  dieser Punkt entspricht     159  0  0  im Coxa System  und f  hrt diesen an       program entry point  int main  void       uint8_t i 0        initialize all modules                         copy the linearisation table into the RoboticsChip  RC_SetGlobalServoAttributesTable_P  gTable        activate all servos  for  i 0  i  RC NUMBER OF SERVOS    i                    RC SetServoPhiDirect  i  1609         RC_SetGlobalServoMode  RC_SERVO_MODE_PHI_DIRECT                     enable cordic interrupt  RC_SetInterruptO  RC_INTTERRUPT_MASK_CORDIC            SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    208    9 SOFTWARE FUNKTIONSBIBLIOTHEK       kinematics  138  80  0       calculate th  IK_SetLegMovement    invers   2        for         return 0     9 9 5 IK GivensTransformation    IK Point2d      GivensTransformation  in    in        IK KNEE             _UP      IK_Point2d Input        Beschreibung    uint8_t Leg     F  hrt die Givens Transformation 
6.                Bit 7 6 3 4  0  85  5          ImCord   ImNeut  0x85F4 InvPpm   NrOfChannels  unsigned 3 downto 0     Tabelle 7 20  Register  IrgMaskRcRxCtrl  Alle Interrupt Mask Bits und InvPpm sind nach dem Einschal   ten deaktiviert  0   die Anzahl der Kan  le ist 2  Les  und schreibbar     Bit 11     ImCord Interrupt Mask Bit das die Ausl  sung eines Interrupts  INTO  nach der Fertigstel   lung eines Berchnungsauftrages des CORDIC Prozessors  siehe Abschnitt 7 22  erlaubt  Wert  1   oder untersagt  Wert 0       Bit 10     ImNeut Interrupt Mask Bit das die Ausl  sung eines Interrupts  INTO  beim Aktivieren der  Servogrundstellung  siehe Abschnitt 7 8  erlaubt  Wert 1   oder untersagt  Wert 0       Bit 9     ImPnk Interrupt Mask Bit das die Ausl  sung eines Interrupts  INTO  beim Aktivieren der  Paniktaste  siehe Abschnitt 7 9  erlaubt  Wert 1   oder untersagt  Wert 0       Bit 8     ImPs2 Interrupt Mask Bit das die Ausl  sung eines Interrupts  INTO  beim Eintreffen neuer  Daten von der PS 2 Schnittstelle  siehe Abschnitt 7 14  erlaubt  Wert 1   oder untersagt  Wert  0      Bit 5     ImRc Interrupt Mask Bit das die Ausl  sung eines Interrupts  INTO  beim Eintreffen neuer  Daten vom RC Empf  nger erlaubt  Wert 1   oder untersagt  Wert 0          SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    112    7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP       Bit 4     InvPpm Die meisten Fernsteuersender und  empf  nger arbeiten mit sogenannten nichtinver   tierten PPM Signalen  Hier
7.              Der Schaltkontakt zur Anzeige der Anwesenheit einer Karte schaltet die Hauptstromversorgung der  SandboxS 2 ein  siehe auch Abschnitt 3 4   Die Stellung des Schreibschutzschiebers der SD Karte  l  sst sich   ber den zweiten Schaltkontakt vom AVR aus einlesen  Selbstverst  ndlich braucht die Be   deutung dieses Schiebers sich nicht auf einen Schreibschutz f  r die SD Karte festzulegen  Ebensogut  w  re es beispielsweise denkbar  von dessen Stellung das grunds  tzliche Verhalten eines Roboters ab   h  ngig zu machen     5 2 0 1 Formatierung der SD Card unter Windows XP    Die Formatierung der SD Card sollte nicht mit dem in Microsoft Windows integriertem Programm  zum Formatieren von Secure Digital Karten erfolgen  Karten  die auf diese Art formatiert wurden sind  nicht les  und schreibbar  weil das angelegte Dateisystem mit den Funktionen der Softwarebibliothek  nicht voll kompatibel ist    Um die Speicherkarte dennoch unter Windows zu formatieren  muss wie folgt vorgegangen werden     a  Das auf der mitgelieferten CD be ndliche Programm  Pfad   SbxRemMedia starten  Nun be   ndet sich ein neues Icon  SD Karte  im Sytem Tray von Windows     b  Durch einen Rechtsklick auf dieses Icon wird ein Men   ge  ffnet  in dem    Format media    aus   gew  hlt wird  siehe Abb  5 5           GC Format media  D Scan for media          Update media   2 Select file   2  Recent files      Auto update file     gt  Options       Exit                   SandboxX      Abbildung 5 5  Sys
8.           WE EFE PEE EIE                        E EE     global variables definitions   WIN BEER                              TAA AAA                                                                           pointers to I O stream structures   FILE    gStrmUSB   NULL   FILE    gStrmUART   NULL                             FARA P B ERE LAA ALL AML AAA TDA                                AAAI EB                     7                          PLLLRU LLARA BIER PPP PEPPER ILULA      stream I O wrapper functions                   int strm uart putc char c FILE xs   uart_putc c  return 0     int strm uart getc FILE xs   return  unsigned char uart  getc       int strm usb putc char c FILE  s   uart usb putchar c  return 0     int strm usb getc FILE   s   return  unsigned char uart  usb getchar             do all the initialization stuff here  void Init  void        initialize sandboxs2 AVR peripherals  SL2_Init          initialize robotics chip        Initl        initialize usb  uart usb init         initialize UART  set baud rate to 38400  uart init  UART_CALC_BAUDRATE  38400            activate stream I O  gStrmUSB   fdevopen strm usb putc strm usb             gStrmUART   fdevopen strm uart putc strm uart getc        enable interrupts       SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    40 2 ERSTE SCHRITTE       sei         program entry point  int main  void        led number  uint8_t led   0       initialize system  Init          set AVR status led and wait on key  SL2 
9.          205   954      setLegMiovement ou ocea      a dx yos dogm         206   995 IK GivensTramsformdtion                        RE 208             i e 5     527                                       3               209                       222229858564      u W G 8                     209   9 10 2 fat cluster data store                               210   9 109 Gelllustersize 12202225056                                                     210   9 104  GeiBytesPersee    u    rou n oko ow Ro Bl                      211   2103 tab search BE ca Seg ae een               ie ERES 212   9 10 6 Tat read  Je 22222225 hw a Re ee 4   lt   gt  213   310 3 iat wite          214   9 11 Strukturen und benutzerde nierte Typdeklarationen                    216   9 11 1 Robotics Chip        reses ho moy aawa da wa 216   0112 Invetse Kinematik    os na ca wa 9 km y W s s OX x Ro 217   A Schaltplan 219   B Platinenlayout 224      1 Platinenfoto ohne Best  ckungsdruck                            224   B 2 Platinenfoto ohne Best  ckungsdruck                            225  SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX       10 INHALTSVERZEICHNIS        Platinenfoto mit Aufklebern                                225  BA Platinenfoto mit Aufklebern und                                          226  B 5 Foto der Platinenunterseite                                 226  B 6 Best  ckungsaufdruck                             22     227  B 7 Aufkleber statt                                             
10.         Parameter Bedeutung  ChannelNumber   Nummer des Kanals  der gelesen werden soll                    R  ckgabewert       R  ckgabewert   Beschreibung  Data Von der Fernsteuerung gelesene Daten des angegebenen Kanals                    Anmerkung    Bevor diese Funktion verwendet werden kann  m  ssen SL2_Init    und RC Init    aufgerufen  werden     Beispiel    Zeigt die empfangenen Daten direkt auf den Servo LEDs 0 und 1     int main         uint8 t Temp 0   uint16 t RxData 0       proxy function for whole initialization  Init         clear all LEDs  RC SetLedClearAl11       RC SetRxControl  RC RX NO INVERT  2         while 1      for  Temp 0  Temp lt 2                  RxData   RC_GetRxData  Temp    if  RxData    0        divide the number by 16  otherwise    changes are not visible  non linear   RC SetLedBrightness  Temp   RxData  gt  gt  4            return 0        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    192    9 SOFTWARE FUNKTIONSBIBLIOTHEK       9 8 25 RC_GetGamePadButtons    uintl6_t RC_GetGamePadButtons       Beschreibung    Liest den Status aller Tasten des Sony Playstation 2 Gamepads     R  ckgabewert       R  ckgabewert   Beschreibung  Buttons Am Gamepad gedr  ckte Tasten  Die Zuordnung zwischen Bits und Tasten  entspricht jener in Abbildung 7 29 auf Seite 121                    Anmerkung    Bevor diese Funktion verwendet werden kann  m  ssen SL2_Init    und RC Init    aufgerufen  werden     Beispiel    Deaktiviert Servo LED 0  wenn eine der Rich
11.       time needed for movement  128 Steps   20 ms   2 56 sec    while  1           return 0     9 8 9 RC_SetServoPhiDirect    inline void RC_SetServoPhiDirect   in  uint8 t ServoNumber             in  uintl6_t Angle        SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    180    9 SOFTWARE FUNKTIONSBIBLIOTHEK       Beschreibung    Erm  glicht die Bewegung eines Servos im PhiDirect Modus  Der Modus ist in Abschnitt 7 7 auf Seite  102 erkl  rt        Parameter Bedeutung   ServoNumber   Nummer des Servos  das bewegt werden soll  Die Nummerierung der Servos  ist in Abb  7 1 auf Seite 81 ersichtlich    Angle Endwinkel der Bewegung im Bereich 0     4095                       R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e UmRC_SetServoPhiDirect    verwenden zu k  nnen  muss der angegebene Servo zuvor  in den Modus RC_SERVO_MODE_PHI_DIRECT geschalten werden     T             e Bevor diese Funktion verwendet werden kann  m  ssen SL2_Init    undRC_Init    aufge   rufen werden     Beispiel  Die Positition von Servo 0 wird bei jedem Tastendruck von        KEY 0 um 90   ver  ndert     int main           proxy function for whole initialization  Init          clear all LEDs  RC SetLedClearA11       RC SetServoMode  0  MODE PHI DIRECT                  1    1      RC_SetServoPhiDirect  0  0               SL2 AvrWaitOnKey  SL  SL2 AvrWaitOnKey  SL    EY 0  SL2 KEY PRESSED    EY 0  SL2 KEY NOT PRESSED            2_K  2_K                               SL2_SetS
12.      Bits 7 bis 0     JoyR     x Achse Dieses Register enth  lt die momentane Auslenkung f  r die x Achse  des rechten Joysticks ausgedr  ckt durch eine vorzeichenlose 8 Bit breite Zahl  wobei 0x00 der  Auslenkung nach ganz links und OxFF der Auslenkung nach ganz rechts entspricht        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    122 7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP       7 17 1 3 Register SonyPs2GamePadJoyL    Dieses Register gibt die Stellung des linken Joysticks in der gleichen Weise  wie schon beim Register  SonyPs2GamePadJoyR f  r den rechten Joystick beschrieben an        Bit 7 6  5 4  5 2         0  87  7 JoyL     y Achse  unsigned 7 downto 0   0x87C6 JoyL   x Achse  unsigned 7 downto 0                       Tabelle 7 31  Register  SonyPs2GamePadJoyL  Nur lesbar     Bits 15 bis 8     JoyL     y Achse Dieses Register enth  lt die momentane Auslenkung f  r die y Achse  des linken Joysticks ausgedr  ckt durch eine vorzeichenlose 8 Bit breite Zahl  wobei 0x00 der  Auslenkung nach ganz oben und OxFF der Auslenkung nach ganz unten entspricht     Bits 7 bis 0     JoyL     x Achse Dieses Register enth  lt die momentane Auslenkung f  r die x  Achse  des linken Joysticks ausgedr  ckt durch eine vorzeichenlose 8 Bit breite Zahl  wobei 0x00 der  Auslenkung nach ganz links und OxFF der Auslenkung nach ganz rechts entspricht     Das Interface f  r das Playstation Gamepad verf  gt nicht   ber die M  glichkeit  neue Werte mittels  eines Interrupt Flags anzuzeigen  D
13.      uint8 t X   uint8 t Y     RC GamePadJoystickData     Um alle Informationen des Sony PlayStation 2 Gamepads lesen zu k  nnen existiert die Struktur  RC_GamePadData  Darin sind zwei Strukturen vom Typ RC  GamePadJoystickData f  r die    beiden Joysticks und eine 16 Bit Variable f  r die Tasten enthalten  Die Belegung  welche Taste wel   ches Bit in Buttons beeinflusst  ndet sich in Abschnitt 7 16 auf Seite 115        typedef struct      uint16_t Buttons   RC_GamePadJoystickData JoystickLeft   RC_GamePadJoystickData JoystickRight      RC_GamePadData     9 11 2 Inverse Kinematik    F  r die Berechnung der inversen Kinematik ist ein dreidimensionales Koordinatensystem n  tig  aus  dessen Koordinaten die Winkel f  r die Servos berechnet werden     typedef struct IK_Point3d       intl6 t X        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    218 9 SOFTWARE FUNKTIONSBIBLIOTHEK       inti6  t Y   intl16 t 7     IK Point3d     Weil die H  henkoordinate bei der Drehung der einzelnen Koordinatensysteme in eine einheitliche    Richtung nicht ver  ndert wird  existiert ein zus  tzlicher Datentyp f  r zweidimensionale Koordina   ten     typedef struct IK Point2d            16 t x    zntt6 t y     IK Point2Qg     Die Winkel aller Servos f  r ein Bein sind in einer Struktur abgelegt und zus  tzlich mit einem Sta     tusbyte Calculation versehen  falls es sich um das Berechnungsergebnis der inversen Kinematik  handelt     typedef struct IK HexapodLegAngles          intl6_t Phi0   
14.     2 5 1 Projekt erstellen    Ein neues Projekt muss erstellt werden  Die Vorgehensweise ist dabei gleich wie in Abschnitt 2 4 1     2 5 2 Programm schreiben    Im soeben erstellten Projekt kann der Programmcode nun eingegeben werden     2 5 2 1 Programmspezifikation    Das Programm bringt die LEDO zum Aufleuchten  Einen kurzen Zeitpunkt sp  ter erlischt LEDO und           beginnt zu leuchten  Dies wiederholt sich f  r alle LEDs bis LED11  Danach wird wieder bei  LEDO begonnen  Gestartet wird das Lauflicht mit der Taste Key_Avr0  Zus  tzlich wird ein Begr     Bungstext   ber die USB Schnittstelle ausgegeben     2 5 2 2 Quellcode     Ke ke ke e ke e ok e ck ke ke ke Ke ke oe e oe e ck e ck e ck e ok e Ke    Ke e oe e o e ce e c e ke ok e ke ke e ke oe e e e e e e e e e e e ke e e e               Workfile 7 main e     Author   Christian Raschko    Date   2007 08 20     Description   main program     Revision e 3    3    ok ke Ke o ke e ke ke oe e o e ok e c e ok e Ke    e e oe e oe e oe e ck e ok e ce SK    e oe e oe e ok e oe o e o e Ke ke         SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    2 5 LAUFENDE LICHTER    39       EE E EE     includes  FIT WE PET EET FEE FENDER UI                                    standard library includes  tinclude  lt stdio h gt      AVR specific includes  include  lt avr interrupt h gt   include   util delay h      hexapod library includes  include  SandboxS2 lib h   include  RoboticsChip h   include  uart h    include  uart usb lib nh 
15.     7 19 Versionsnummer des Robotics Chips    Die Versionsnummer des Robotics Chips ist als Nur Lese Register angelegt  das per Software erfragt  werden kann  Die Version ist als vierstellige Dezimalzahl in ASCII Codierung  also als String mit vier  Zeichen verf  gbar     7 19 0 5 Register VersionDigits32    Bit  0x87F9 ASCII Zeichen  1000er Stelle    0x87F8 ASCII Zeichen  100er Stelle    Tabelle 7 33  Register  VersionDigits32  1000er  und 100er Stelle der Versionsnummer des Robotics   Chips  Nur lesbar           7 19 0 6 Register VersionDigits10           Bit 7  0x87FB ASCII Zeichen  10er Stelle  Ox87FA ASCII Zeichen  ler Stelle                 Tabelle 7 34  Register  VersionDigits32  10er  und ler Stelle der Versionsnummer des Robotics Chips   Nur lesbar     7 20 Demo Mode    Der Robotics Chip wird aus Gr  nden des Kopierschutzes 10 bis 11 Minuten nach dem Einschalten  deaktiviert  Der deaktivierte Zustand wird durch Aufleuchten beider Message LED am FPGA  Ms   gFpga0 und MsgFpgal  angezeigt  Au  erdem wird eine mittlere Lautst  rke des Summers eingestellt     7 24 RAM Erweiterung    Vom FPGA werden 2 kByte RAM der Wortbreite 8 Bit in den Adressbereich des AVRs eingeblendet   Diese be nden sich im Adressbereich 0x9000     Ox97FF  Dieses externe RAM kann als Erweiterung  des internen RAMs verwendet werden  wobei jedoch im Unterschied zu diesem pro RAM Zugriff drei  Taktzyklen statt eines einzigen notwendig sind    Das RAM wird nach dem Einschalten weitgehend mit dem Wert 0x
16.     Adr unsigned 7 downto 0     Tabelle 7 16  Register  DeltasToGo  Dieses Register hat nur im Mode PhiSpeed eine Bedeutung   Adr 0x8600 2ns  ng ist die Servonummer  0 bis 23   Nur lesbar           7 7 1 Geschwindigkeitsabstimmung    Der Ablauf der Servobewegungssequenzen verwendet die Pulszyklen der Servos als Zeiteinheit f  r  einen Winkelschritt  Die Dauer dieser Pulszyklen ist f  r alle Servos die gleiche  Sie kann im Bereich  von 18 37 bis 29 2 ms eingestellt werden  Die Grundeinstellung nach dem Einschalten liegt bei 20 ms    Durch Justieren dieser Zyklusdauer k  nnen die Bewegungssequenzen auch im Nachhinein noch  leicht in ihrer Ablaufgeschwindigkeit ver  ndert werden  beispielsweise um sie genau an das Tempo  eines Musikst  ckes anzupassen     7 7 1 1 Register TuneFine    Mit diesem Register ist die Dauer des Servopulszyklus in Schritten von 0 50 us stimmbar  Die Grund   einstellung des Registers nach dem Einschalten erzeugt einen 20 ms langen Zyklus  Der zugeh  rige  Registerwert ist 1619  0x0653   Der Wert 0x000 entspricht einer Verringerung um 0 8095 ms  Der  Wert OxOFFF entspricht einer Erh  hung um 1 239 ms    Da die Zyklusl  nge von der Genauigkeit des Taktgebers auf der SandboxS 2 abh  ngig ist  wird eine  Zykluszeit von exakt 20 ms im allgemeinen nicht mit dem Standardwert  sondern bei einem leicht  abweichenden Wert f  r TuneFine erreicht    Bit  Ox85F7     unsigned 11 downto 8     0x85F6 unsigned 7 downto 0     Tabelle 7 17  Register  TuneFine  Wertebereich
17.     PASS     mit gr  nem Punkt  erkennbar  Im rechts in Abb  6 8 gezeigten Fenster ist dies zu sehen    Falls es zu Problemen kommt  ist das Downloadkabel oder der Parallel Port die h  u gste Ursache   Ob das Kabel von ispVM System erkannt wird  kann mit  Men       Options     Cable and I O Port  Setup       gepr  ft werden  Es   ffnet sich ein Fenster  siehe Abb  6 9  in dem mittels des Buttons    Auto       SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    78    6 FPGA LATTICE XP LFXP3K           1 LSC ispYM   System   New Scan Configuration Setup     FLASH Erase Progra      N                      Abbildung 6 5  Die egScan   Chain wurde von ispVM er   kannt  Der Baustein LFXP3C  ist das FPGA auf der Sand   boxS 2  Es ist der einzige Bau   stein in der Scan Chain              Device Information       E NL      9      C  hsserobchipv2 jed          Abbildung 6 6  Hauptfenster  von ispVM unmittelbar nach  Start des Programmes     Abbildung 6 7   Dialogfenster zum Eintra   gen der Kon gurationsdatei  und Infofenster als Reak   tion auf das Schlie  en des  Dialogfensters        SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    6 3 FPGA KONFIGURATION 79       Abbildung 6 8  Der  Downloadvorgang dauert  ca  20 bis 40 Sekunden  und schlie  t  hoffentlich   korrekt  also mit dem RT  Kennzeichen    PASS    ab                 Cable and 1 0 Port Setup x     Lattice                z    Abbildung 6 9  Kabeltest in ispVM System           SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2M
18.     er  sein  Wird gegen diese Regel versto  en  kommt es zu internen   berl  ufen der Arithmetikeinheiten      unde niertes Verhalten ist die Folge  Um die gew  nschte Drehrichtung des Servos einzustellen  kann  der Parameter Reverse im Register ModeIrqMask  siehe Abschnitt 7 5 3 1 dienen  In Kombination mit  der Linearisierungstabelle ist es m  glich  praktisch aus jedem Modellbauservo ein Servo zu machen   dass sich zum einen bei steigenden Winkelwerten in mathematisch positiver Drehrichtung bewegt   also entgegen dem Uhrzeigersinn  und dass zum anderen eine genaue und direkte Einstellung des  gew  nschten Winkels erlaubt     Bit 7 6 5 4 3 2 1 0         1     unsigned 11 downto 8     Adr unsigned 7 downto 0              Tabelle 7 9  Register  Phi2PwmTable 0   16   Adr 0x8000 0x40 Tableldx 2ns  ng ist die Servonum   mer  0 bis 23   TableIdx kann Werte zwischen 0 und 16 annehmen  Der Initialisierungswert nach dem  Einschalten ist unbestimmt  Les  und schreibbar                                                                          Adr AVR    Ende Wortzahl Beschreibung Power On Wert  0x8000  2ng   Ox803F 32 Phi2PwmTable 0  Servo ng 51  0x8040  2ng   0x807F 32 Phi2PwmTable 1  Servo ng 362  0x8080 2n 5   Ox80BF 32 Phi2PwmTable 2  Servo ng 628  0x80C0  2ns   Ox80FF 32 Phi2PwmTable 3  Servo ns 887  0x8100  2ng   Ox813F 32 Phi2PwmTable 4  Servo ng 1158  0x8140 2ns   0x817F 32 Phi2PwmTable 5  Servo ns 1425  0x8180  2ng   Ox81BF 32 Phi2PwmTable 6  Servo ns 1708  0x81CO0  2ng   Ox8
19.     proxy function for whole initialization  Init         for            switch on servo LED 0 after 1008  Timer   RC GetGlobalTimer     if  Timer  gt  5000      RC_SetLedBrightness  0  255            return 0     9 8 37 RC SetlnterruptO    void RC SetInterruptO  uintl6 t Interrupts     Beschreibung    Schreibt die Interrupt Maske f  r Interrupt 0 in den Robotics Chip   Uber diese Funktion k  nnen die Interrupts f  r Paniktaste  CORDIC      aktiviert werden        Parameter   Bedeutung  Interrupts Interrupt Maske von Interrupt 0  Die Interrupt Mask Bits nden sich in den in  den Abschnitten 7 5 3 1  7 13 1 1 und 7 22 beschrieben                    R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    Bevor diese Funktion verwendet werden kann  m  ssen SL2_Init    und RC Init    aufgerufen  werden        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    202 9 SOFTWARE FUNKTIONSBIBLIOTHEK       Beispiel  Einschalten der Interrupts f  r CORDIC und Paniktaste     int main  void      uint8 t i   0       proxy function for whole initialization  Init          copy the linearisation table into the RoboticsChip  RC SetGlobalServoAttributesTable     gTable        activate all servos  for  i20  i  RC NUMBER OF SERVOS    i                    RC_SetServoPhiDirect  1  1609       RC SetGlobalServoMode  RC_SERVO_MODE_PHI_DIRECT                enable cordic interrupt  RC SetInterruptO0  RC INTTERRUPT MASK CORDIC          RC INTTERRUPT MASK PANIC                        f
20.     www atmel com dyn   resources prod documents DOC1493 PDF zur Verf  gung  Die L  sungsstrategie f  r die   ses Problem l  sst sich aus Sicht der Software folgenderma  en zusammenfassen     To do a 16 bit write  the high byte must be written before the low byte  For a 16 bit read   the low byte must be read before the high byte     Bei einem 16 Bit Schreibzugriff wird also zuerst das h  herwertige Byte  das Byte mit der h  heren  Adresse  geschrieben  dann erst das niederwertige Byte  also jenes mit der niedrigeren Adresse  Um   gekehrt wird bei einem Lesezugriff das niederwertige Byte  jenes mit der niedrigeren Adresse  vor  dem h  herwertigen Byte  dem mit der h  heren Adresse  gelesen    Zwischen den beiden Zugriffen auf Low Byte und High Byte darf keine Interrupt  Verarbeitung erfol   gen  Im Zuge solcher Interrupt Routinen k  nnte das tempor  re Register zur Speicherung des High Byte  ver  ndert werden  In Folge w  rde beim Schreiben oder Lesen des Low Byte dieses ver  nderte High  Bytes   bernommen werden  Daher sollte vor Zugriffen auf 16 Bit breite Register das Interrupt Flag  des Prozessors gesetzt werden  um Interrupts g  nzlich zu unterbinden  Nachdem beide 8 Bit Zugriffe  fertiggestellt sind  k  nnen Interrupts wieder freigegeben werden    Das Low Byte steht an einer geraden Adresse  A 0  hat den Wert   0    das zugeh  rige High Byte  be ndet sich an der folgenden Adresse  die also stets ungerade ist  A 0      1        Die meisten Parameterregister des HSSE Robo
21.    3690     54  399   3685   0  278   3709     40  387   3651     51  362   3690     51  362   3690    191  362   3690    119  279   3680     10  299   3673     11  314   3633     62  382   3662     76  396   3672   1  269   3673                       560   3903   559   3866   628   3953   628   3953   628   3953   630   3961   564   3994   544   3951   660   39515  562   3973   643   3921   628   3953   628   3953   628   3953   545   3931   569   3948   Su  3903   661   3898   657   3944   533   3946     783   3903   828   3866   887   3953   887   3953   887   3953   887   3961   844   3994   824   3957   926   3951   843   3973   922   3921   887   3953   887   3953   887   3953   822   3931   843   3948   842   3903   944   3898   901   3944   797   3946                                                                                                                                               1082  1364  1653  1942  2242  3903  0 RC_SERVO_REVERSE_ON  1101  1377  1663  1962  2273  3866  0 RC_SERVO_REVERSE_ON  1158  1425  1708  1996  2306  3953  0 RC_SERVO_REVERSE_ON  1158  1425  1708  1996  2306  3953  0 RC_SERVO_REVERSE_ON  1158  1425  1708  1996  2306  3953  0 RC_SERVO_REVERSE_ON  1159  1426  1708  1998  2305  3961  0 RC_SERVO_REVERSE_ON  1125  1406  1690  2000  2307  3994  0 RC_SERVO_REVERSE_ON  1094  1362  1657  1967  2291  3957  0 RC_SERVO_REVERSE_ON  1208  1449  1740  2026  2331  3951  0 RC_SERVO_REVERSE_ON  1131  1411  1722  2007  2313  3973  0 RC_SERVO_REVERSE_ON
22.    Anmerkung    e Es wird empfohlen  statt dieser Funktion SL2_GetCurrent    zu verwenden  da  SL2_GetCurrent    bei niedrigen Str  men eine h  here Verst  rkung verwendet und so   mit genauere Ergebnisse liefert     e Bevor diese Funktion verwendet werden kann  muss SL2_Init    aufgerufen werden     Beispiel    Siehe Beispiel von 9 4 8 auf Seite 156     9 4 10 SL2 GetCurrentHighAmplification    uintl16 t SL2 GetCurrentHighAmplification      Beschreibung    Diese Funktion misst den gesamten Stromverbrauch der SandboxS 2  mit einer        internen Ver   st  rkung von 200  und gibt diesen in mA zur  ck  Diese Verst  rkung wird an den differentiellen ADC  Eing  ngen des AVR eingestellt     R  ckgabewert       R  ckgabewert   Beschreibung                   Data Aktuell flie  ender Strom in mA   Anmerkung  e Es wird empfohlen  statt dieser Funktion SL2 GetCurrent   zu verwenden  da    512 GetCurrent   bei hohen Str  men eine niedrigere Verst  rkung verwendet und da   her keine   berschreitung des Wertebereichs auftreten kann     e Bevor diese Funktion verwendet werden kann  muss 5 2 Init    aufgerufen werden     Beispiel    Siehe Beispiel von 9 4 8 auf Seite 156     9 4 11 SL2 GetBatteryVoltage    uintl6 t SL2 GetBatteryVoltage         Beschreibung    Diese Funktion misst die Spannung der Akkus und gibt diese in mV zur  ck  So kann im Betrieb  festgestellt werden  ob die Akkus geladen werden sollten        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 4 SANDBOXS2_LIB 159
23.    EE  P       SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    226    PLATINENLAYOUT       BA Platinenfoto mit Aufklebern und Akkuzellen    A              D  a    ww Ar NEHM                             vv 3716       B 5 Foto der Platinenunterseite  si 26  V     EE        7  eg um x Pu  ze       Lr  MAN 521 Lid 111 At    KAAL                              SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    Bo BEST  CKUNGSAUFDRUCK 227       B 6 Best  ckungsaufdruck    NiMh NiCd onlul                  a                    De  N  Mh N  Cd onlul  SERVOL4      San                aan        E         OBER  STERREICH      NiMh NiCd     1       R16                                   SERVO17 SERVOIG SERVOIS                                                       NiMh  NiCd only                    NiMh NiCd only          EECH Ory OCT  oor  EH    SERVO23     SERVO22 SERVO2i  SERVO28 SERVOIG  SERVO18             CC Oo Oo oo Ooo Oo Gg ca Ge oS oS oo    UL       ee             SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX       PLATINENLAYOUT    228       B 7 Aufkleber statt Best  ckungsaufdruck    Alternativ zu einem Best  ckungsdruck ist eine Beschriftung mit Aufklebern m  glich  Die Abbildung    gibt die Position der Aufkleber an     ali m  se     R35 CI             Mag N  Cd only   NiMh or           Nica             ZLOAISS CLOAlaS vLOAISS    GTOAJSS 9107155    LOAJSS    SLONISS G6LOAISS 02601195 LZOAJOS 22001156   ZOAIOS       8           oooomcoomcoo pce 05  00  2200 oo oo
24.    IFNeut Dieses Interrupt Flag wird aktiv  sobald der Servogrundstellungsmodus  Ab   schnitt 7 8  gew  hlt wird  Ausl  send wirkt sich der Tastendruck zum Wechsel in den Servo   grundstellungsmodus aus  Dieser setzt das Interrupt Flag  Ist das zugeh  rige Mask Bit ImNeut  im Register IrgMaskRcRxCtrl  Abschnitt 7 13 1 1  gesetzt  wird auch ein Interrupt auf der Lei   tung INTO des Mikrocontrollers angefordert     Bit 4    IFCord Dieses Interrupt Flag wird aktiv  sobald der CORDIC Prozessor  Abschnitt 7 22   einen Berechnungsauftrag vollst  ndig bearbeitet hat  Ist das zugeh  rige Mask Bit ImCord im  Register IrgMaskRcRxCtrl  Abschnitt 7 13 1 1  gesetzt  wird auch ein Interrupt auf der Leitung  INTO des Mikrocontrollers angefordert     7 3 Servosteuerung    Modellbauservos und spezielle Robotikservos erfreuen sich im Bereich der Embedded Robotics hoher  Beliebtheit  Hierf  r sprechen einige gute Gr  nde     e Sie sind leicht und zu einem relativ geringen Preis erh  ltlich   e es gibt zahlreiche Bauformen und    e ihre Ansteuerung ist weitgehend genormt        Abbildung 7 2  Beispiele f  r Robotik  und Modellbauservos     Servos erf  llen eine einfache Aufgabe  Man sendet auf elektrischem Wege den Befehl    Stelle den  Servoarm  oder Servoscheibe  auf den Winkel 67      und das Servo erledigt dies mit der ihm eigenen  Geschwindigkeit  Kraft und Genauigkeit    Angetrieben wird der Servoarm   blicherweise von einem kleinen Gleichstrommotor  der den Ser   vohebel   ber ein Getrieb
25.    ON         2559          2955     r    2582               2992     r    2598          2598          2598     r    2597             543     2882  3158      Servo  16  2835  3109      Servo  17  2837  3101      Servo  18  2857  3135      Servo  13  2837  3096      Servo  14  2824  3098      Servo  15  2875  3160      default   2875  3160      default   2875  3160      default   2876  3158      Servo  10                                     C EEL    3421     3370     3362     3410     3359     3359     3425     3425     3425     3423        SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    144 8 INVERSE KINEMATIK        16  294  564  844  1125  1406  1690  2000  2307  2611  2891  3181  3455   3727  3994  3994  3994    70 RC SERVO REVERSE           Servo  11    1  311  544  824  1094  1362  1657  1967  2291  2606  2890  3162  3426   3690  3957  3957  3957    74 RC SERVO REVERSE           Servo  12    54  399  660  926  1208  1449  1740  2026  2331  2607  2884  3154  3423   3685  3951  3951  3951   74      SERVO REVERSE           Servo  07    0  278  562  843  1131  1411  1722  2007  2313  2599  2889  3166  3443   3709  3973  3973  3973    53 RC SERVO REVERSE           Servo  08    40  387  643  922  1193  1462  1749  2033  2336  2605  2877  3138  3398   3651  3921  3921  3921   265 RC SERVO REVERSE           Servo  09    51  362  628  887  1158  1425  1708  1996  2306  2598  2875  3160  3425   3690  3953  3953  3953   0      SERVO REVERSE           default    51  362  62
26.    Selbst bei Verwendung von Hochpreisservos weit jenseits der 100     Marke reicht die Aufl  sung des  gew  hlten Bereiches leicht aus     Die Kalibriereinrichtung   Die Kalibriereinrichtung kann leicht selbst angefertigt werden  Hierzu sind die beiden Teile Al und  A2 aus dem Hexapodbausatz Captain Ahab erforderlich  Die Kalibrierrosette druckt man selbst aus   Sie be ndet sich auf der vorletzten Seite diesese Dokuments  Auf ihrer R  ckseite ndet sich eine  Anleitung zum unverzerrten Drucken mit dem Acrobat Reader  Als letztes Bauteil f  r die Kalibrier   einrichtung ben  tigt man noch eine einigerma  en stabile Kartonschachtel  die zumindest A4 Gr    e  haben und 3 5 cm oder h  her sein sollte        Abbildung 7 10  Bau der Winkelkalibriereinrichtung  Links wurde ein Karton mit der Rosette mit Hil   fe eines Allesklebers beklebt  Im rechten Foto ist der Ausschnitt f  r das Servo angebracht worden  Die  bauchige Form des Kartons ist eine Folge der mangelhaften Optik der verwendeten Digitalkamera     Abb  7 10 zeigt die Kartonschachtel mit der aufgeklebten Winkelrosette  Im rechten Foto der Ab        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    100    7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP       bildung ist zu sehen  wie der Ausschnitt f  r das Servo angebracht wird  Es sollte ein minimal   ber den  inneren Rahmen hinausgehender Ausschnitt angebracht werden  Die eigentliche Positionierung des  Servos wird nicht durch diesen Ausschnitt  sondern durch den aufgeklebt
27.    dem alle Servos mit einer Impulsl  nge von 1 5 ms angesteuert werden  Diese Impulsl  nge wir jedoch  nur erreicht  wenn die Werte der beiden Register TuneFine und TuneCoarse die gleichen sind  wie  nach dem Einschalten der SandboxS 2  Auf Grund der Toleranzen der einzelnen Servos wird die me   chanische Mittelstellung des Servos meist auch bei einer Impulsl  nge von 1 5 ms nicht genau erreicht    Je nach Einbauort des Servos  ist es        g auch notwendig  das Servo in eine der Extremstellungen  zu bringen  In den extremen Winkeleinstellungen verf  gen Modellbauservos   blicherweise   ber me   chanische Wegbegrenzungen  so dass die mechanischen Endstellungen durch sanftes und langsames  Verdrehen der Servoscheibe von Hand erreicht werden k  nnen  Der extrem hohe Pulsbreitenbereich   der sich mit dem Servopulgenerator des Robotics Chips erreichen l  sst  f  hrt dazu  dass das Servo  auch auf elektrischem Wege von Anschlag bis Anschlag bewegt werden kann  Allerdings geschieht  dies typischerweise sehr unsanft und sollte besser vermieden werden  Entsprechende Mittel stellt der  Robotics Chip mit den Parametern PhiMin und PhiMax  sowie PhiOffset  siehe Abschnitt 7 6  zur  Verf  gung    Da alle angeschlossenen Servos nach Dr  cken der Taste KeyFpgal praktisch ohne Verz  gerung in  die durch den Servogrundstellungsmodus ausgew  hlte Stellung fahren  ist bei der Auswahl dieses Mo   dus Vorsicht geboten  Bereits eingebaute Servos treffen wom  glich auf einen mechanischen Anschlag
28.    gStrmUSB   NULL   FILE   gStrmUART   NULL                      key states  typedef enum       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    2 6 SERVOKALIBRIERUNG MIT WINKELZEIGER    43          INCREMENT    DECREMENT    SELECT   NO_KEY     KeysState                                     servo rotation states  typedef enum     ROT_NORMAL   ROT_REVERSE     ServoRotationState                                                                                                          ALMA EL AAT AAA ALIAS                    functions    EEN      stream I O wrapper functions                      int strm_uart_putc  char c FILE xs   uart_putc c  return 0     int strm_uart_getc  FILE   int strm usb putc char c FILE xs   uart usb putchar c  return 0     int strm usb getc FILE   5   return  unsigned char uart usb getchar          do all the initialization stuff here  void Init  void        initialize sandboxs2 AVR peripherals  SL2_Init         initialize robotics chip                N        initialize usb  uart usb init         initialize UART  set baud rate to 38400  uart init  UART CALC BAUDRATE  38400            clear all robotics chip LEDs  RC SetLedClearAl11         activate stream I O  gStrmUSB   fdevopen strm usb putc strm usb getc      gStrmUART   fdevopen strm uart putc strm uart getc        enable interrupts  sei         get keys state  KeysState GetKeysState  void             5   return  unsigned char uart_getc           SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANU
29.    m  e EE    Reset Taste   A FPGA  41 25                       END       Abbildung 4 4  Reset Taster fiir den Mikrocontroller und das FPGA     ter ist am Anschluss RESET des Mikrocontrollers angeschlossen und legt den Pin im geschlossenen  Zustand auf Masse  Im offenen Zustand wird ein interner PullUp Widerstand des AVR wirksam  Der  Taster ist parallel hierzu auch an den Reset Pin des FPGAs angeschlossen     4 4 Interrupts    Der HSSE Robotik Chip hat die M  glichkeit    ber die beiden Interrupt Leitungen INTO und INT1 des  AVR Mikrocontrollers einen Interrupt Request anzufordern  Die genaue Beschreibung dieser Funkti   on ndet sich im Abschnitt    External Interrupts    im Datenblatt des Mikrocontrollers    Der Interrupt kann im Mikrocontroller sowohl pegelsensitiv als auch auf die fallende Flanke der  INT Pins ausgel  st werden  Die Interrupts sind dazu geeignet  den Mikrocontroller aus einem Strom   sparmodus  sleep mode  aufzuwecken    Details zur Verwendung der vom HSSE Robotik Chip kommenden Interrupts nden sich im Ab   schnitt 7 2     4 5 External Memory Interface    Das External Memory Interface des AVRs wird auf der SandboxS 2 genutzt  um die Peripherieeinhei   ten des HSSE Robotik Chips in den Speicherbereich des Mikrocontrollers einzublenden  Hierdurch  erscheinen die externen  also im FPGA realisierten Peripherieeinheiten der Mikrocontrollersoftware  in der gleichen Art  wie die interne Peripherie des AVRs  Zugleich l  sst sich auf diese Weise eine hohe  Zugriff
30.   0 4095  Initialwert nach dem Einschalten  0x0653   1619   Les  und schreibbar              7 7 1 2 Register TuneCoarse    Mit diesem Register ist die Dauer des Servopulszyklus in Schritten von 2 5 us stimmbar  Die Grund   einstellung des Registers nach dem Einschalten erzeugt einen 20 ms langen Zyklus  Der zugeh  rige  Registerwert ist 1619  0x0653   In der Minimaleinstellung dieses Parameters  0x0000  wird die Zy   kluszeit um 4 05 ms verk  rzt  Mit der Maximaleinstellung f  r den Paramter TuneCoarse kann die  Zykluszeit um 6 19 ms gedehnt werden  M  glicherweise bereitet diese lange Zykluszeit bei einigen       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 8 SERVOGRUNDSTELLUNGSMODUS    107       Servotypen Probleme bei der Impulsauswertung  In der Praxis sind solche Probleme jedoch mit kei   nem der getesteten Servotypen aufgetreten     Bit  0x85F9 unsigned 11 downto 8   Ox85F8 unsigned 7 downto 0           Tabelle 7 18  Register  TuneCoarse  Wertebereich  0 4095  Initialwert nach dem Einschalten  0x026B   619   Les  und schreibbar     7 8 Servogrundstellungsmodus    Durch Druck der Taste KeyFpgal kann der Servogrundstellungsmodus gew  hlt werden  Erneuter  Druck auf die Taste verl  sst diesen Modus wieder  Im Servogrundstellungsmodus leuchtet die LED  MsgFpgal auf    Der Servogrundstellungsmodus dient dazu  die Servos beispielsweise fiir den korrekten Einbau in  eine Robotermechanik in ihre Mittelstellung zu bringen  Die Servomittelstellung wird eingestellt  in
31.   1193  1462  1749  2033  2336  3921  0 RC_SERVO_REVERSE_ON  1158  1425  1708  1996  2306  3953  0 RC_SERVO_REVERSE_ON  1158  1425  1708  1996  2306  3953  0 RC_SERVO_REVERSE_ON  1158  1425  1708  1996  2306  3953  0 RC_SERVO_REVERSE_ON  1102  1399  1694  2005  2340  3931  0 RC_SERVO_REVERSE_ON  1122  1403  1698  2006  2310  3948  0 RC_SERVO_REVERSE_ON  1134  1419  1699  1994  2279  3903  0 RC_SERVO_REVERSE_ON  1225  1508  1787  2082  2384  3898  0 RC_SERVO_REVERSE_ON  1184  1452  1749  2033  2332  3944  0 RC_SERVO_REVERSE_ON  1065  1344  1641  1954  2256  3946  0 RC_SERVO_REVERSE_ON         r       2543  2837  3096      Servo  14  2552  2824  3098      Servo  15  2598  28155  3160      default  2598  2075      default  2598   2875      default  2597  2876  3158      Servo  10  2611  2891  3181      Servo  11  2606  2890  3162      Servo  12  2607  2884  3154      Servo  07  2599  2889  3166      Servo  08  2605  2877  3138      Servo  09  2598  2875  3160      default  2598  2875      default  2598  2875      default  2573  2867  3140      Servo  04  2600  2878  3154      Servo  05  2545  2818  3089      Servo  06  2680  2924  3181      Servo  01  2625  2892  3158      Servo  02  2548  2844  3130      Servo  03    3160     3160     3160     3160     3359   3359   3425   3425   3425   3423   3455   3426     3423        3443   3398   3425   3425   3425     3413        3416   3359   3424   3410     3409     VAURA                  11 EI EE E         AAA AA AAA AA AAA TIAA AAA AA
32.   2                 21  2 4    Hello World    in der  5                                                 24  241  Popjekberstellen  VE yore vus  amp  ee ee eR               24  242   Prosmmunschmubed s soros soo u a              a 29  24 3 Projekttibersetzen 20 2  22  22  22         2 1      31  244 Programm ausf  hren  2  2         2 2          2     32  243  Programimi dele u q w en zs Rx mo EGER UE           37  246 Zusammenfassung 2 2     2 22 224 a 38       Q cut no  T 38  235 Laufende Lichter   5 24 420 ue ver wa EN E dox                         38  Zl   EReoktererebten   wads Paved oriris           GE          38  2 4 Programmi schreiben 22 2 5  c ue  amp  de komm Rode        wie    38  Zo JPropkt  bersebDH  uc eu oue oboe           QD W                               41  2 5 4 Programm ausf  hren      EEN are au a w a 4          41  254 Programmi testen e ka                          ERR LA        41  Ee EE era aaa UE Y ee d 41  ZI        EE 41  2 6 Servokalibrierung mit Winkelzeiger                            41  26 1 Piojekteisiellen 2                     RS                        41  242 Programmi sohre Den     2 zac sack Sa edadia Dh               42  20 5 STusekbubereelzBH 2                              amp  ded kom                       46  204 Programmi               EN ow  o  om               46  205 Programmi testein 2    i s w lue 2         14      46  266 Zusammenfassung                           ER RA 46                  222525 on en MEER             RULES Um
33.   9 8 ROBOTICSCHIP 195       9 8 28 RC_SetBuzzerVolume       uint8 t RC SetBuzzerVolume   in  uint8 t Volume     Beschreibung    Bestimmt die Lautst  rke des Piezo Summers        Parameter   Bedeutung   Volume Lautst  rke des Piezo Summers  Die Lautst  rke ist in drei Stufen ein   stellbar  mittlere Lautst  rke  RC_BUZZER_VOL_MIDDLE   hohe Lautst  rke   RC  BUZZER  VOL HIGH und ausgeschaltet  RC BUZZER VOL OFF                           R  ckgabewert       R  ckgabewert   Beschreibung  Status RC INVALID  PARAMETER wenn der Funktion ung  ltige Parameter   ber   geben wurden  sonst RC  SUCCESSFUL                                Anmerkung    Bevor diese Funktion verwendet werden kann  m  ssen SL2_Init    und RC Init    aufgerufen  werden     Beispiel    Siehe folgende Funktionen     9 8 29 RC SetBuzzerPhaseHigh    void RC SetBuzzerPhaseHigh   in  uintl6 t PhaseHigh        Beschreibung    Bestimmt die L  nge der High Phase des Piezo Summer Signals  Rechtecksignal   Die Frequenz dieses  Signals kann wie folgt berechnet werden     1   TPhaseHigh   TPhaseLow    125 ns       frect         Parameter   Bedeutung  PhaseHigh   Lange der High Phase des Piezo Summer Signals                    Ruckgabewert    Diese Funktion hat keinen Riickgabewert        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    196    9 SOFTWARE FUNKTIONSBIBLIOTHEK       Anmerkung    Bevor diese Funktion verwendet werden kann  m  ssen SL2_Init    und RC Init    aufgerufen  werden     Beispiel    Siehe folgende F
34.   C 1  rechts   Hierzu wird  dieser einfach herausgezogen  Vorsicht  Quarze sind ersch  tterungsemfpindliche elektromechanische  Bauteile  Keinesfalls fallen lassen        Abbildung C 1  Links  Empf  nger im Lieferzustand  Rechts  Der Quarz wurde entfernt     Nun wird das Geh  use ge  ffnet  Hierzu werden die beiden Schrauben an der Geh  useunterseite  herausgedreht  Abb  C 2  links   Der passende Schraubendreher tr  gt eine Klinge des Typs    Philips  0       Im Anschluss daran  kann der Empf  nger in seine Einzelteile zerlegt werden  Beim Zerlegen gehen  Sie bitte behutsam mit dem Plastikgeh  use um  da dieses bei zu hohem Kraftaufwand leicht Risse  bekommt    Abb C 2 zeigt die Komponenten des zerlegten Empf  ngers    Die Modi kationen werden ausschlie  lich auf der Platine vorgenommen  Geh  use  Quarz und  Schrauben in der Zwischenzeit also sicher verwahren  damit diese nicht verloren gehen    Zuerst muss die 3 polige Stiftleiste des BATT Anschlusses  Abb  C 3  links  ausgel  tet werden    Ein L  tkolben mit guter Heizleistung  Flussmittel  eine Elektronikzange und ein kleiner Schraub   stock mit auf die Backen aufgesetzten Gummi  oder Filzschonern  z B  Kugelgelenkschraubstock des       SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    232    RC EMPF  NGERUMBAU ZUM ANSCHLUSS AN DIE SANDBOXS 2             0682 1       Abbildung    2  Links  Geh  useboden und passender Schraubendreher  Rechts  Einzelteile des zerlegten  Empf  ngers     Herstellers Proxxon  sind die f  r
35.   Danach wird auf die Karte   Include Directories  gewechselt   Abbildung 2 10      e Hexapod Softwarebibliothek   Nun muss dem Kompiler noch mitgeteilt werden  in welchem Ordner er nach den Header Dateien   Dateierweiterung  h  der Hexapod Softwarebibliothek suchen soll  Hierzu werden alle Pfade der  einzelnen Ordner der Bibliothek in die Liste eingetragen  Abbildung 2 11   Der Pfad ist abh  ngig von  der Position der Hexapod Bibliothek auf der Festplatte  Nachfolgend ein Beispiel mit relativer Ver   zeichnisangabe  Bei diesem be ndet sich der 1ib Ordner im selben Verzeichnis wie die Projketdatei       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    2 4    HELLO WORLD    IN DER SANDBOX VERSION 27       Dr ru pa             Dem Dee      m  12492  643   W Ae S ZER     gee ao xE            teer      fm        Imm Dee m    12492  nar  W Ae Aw         gt t mas 0068    bbbbbeb                                  i             Abbildung 2 11  Hexapod Softwarebibliothek Header Dateien hinzuf  gen      Dateierweiterung  aps      lib SandboxS2Lib     lib uart     lib uart_usb     lib RoboticsChip     lib InverseKinematics     lib MemoryCard    Danach wird auf die Karte    Custom Options    gewechselt     e Kompiler Einstellungen   Zum Abschluss wird der WinAVR Kompiler ausgew  hlt  Hierzu muss der Pfad zu den zwei Program   men stimmen  avr gcc und make   Dies m  ssen jedoch nur ver  ndert werden  wenn das AVR Studio  den Pfad falsch ermittelt hat  oder eine andere WinAVR Version v
36.   Data Angles Phi0  lt  IK PHI 0 MIN       Data Angles Phi0  gt  IK PHI 0 MAX       Data Angles Phil  lt  IK PHI  1 MIN       Data Angles Phil    IK PHI 1 MAX       Data Angles Phi2  lt  IK PHI  2 MIN       Data Angles Phi2    IK PHI  2 MAX           move the leg directly to the desired point and return  RC_SetServoPhiDirect  0  Data Angles Phi0            SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    9 9 INVERSE KINEMATIK 205       RC_SetServoPhiDirect  1  Data Angles Phil    RC_SetServoPhiDirect  2  Data Angles Phi2      for         return 0     9 9 3 IK SetLegMovementCoxa                      uint8 t IK SetLegMovementCoxa  in  uint8 t LegNumber    in  int16 t XCoord    in  int16 t YCoord    in  int16 t ZCoord    in  int8 t Position        Beschreibung    Berechnet die inverse Kinematik eines angegebenen Beines im Coxa System und bewegt den Fu     punkt des Beines zu diesem  Kann der angegebene Punkt nicht angefahren werden  so wird das Bein  nicht bewegt        Parameter   Bedeutung  LegNumber   Index des Hexapod Beines  dieser Index entspricht jenem  der auf der Oberseite  des Hexapods eingraviert ist                    XCoord X Koordinate des gew  nschten Fu  punktes   YCoord Y Koordinate des gew  nschten Fu  punktes   ZCoord Z Koordinate des gew  nschten Fu  punktes   Position Da es f  r viele Punkte zwei verschiedene L  sungen f  r y   und y2 gibt muss zu     s  tzlich angegeben werden  welche der beiden L  sungen berechnet werden soll   Wird dieser Paramete
37.   Der JTAG Anschluss wird hierdurch nicht belegt    Das Flash Direct Programming des Flash Kon gurationsspeichers im FPGA wird derzeit auf Grund  eines Problems im FPGA Chip von Lattice  noch  nicht unterst  tzt  Laut Lattice wird eine Mindestfre   quenz des Programmiertaktes von 200 KHz ben  tigt  Bei Verwendung des vorgegebenen Programm   ger  stes ist diese Frequenz aber mittels eines AVR Mikrocontrollers nicht erreichbar        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    81       7 Robotik Peripherie  HSSE Robotics Chip    Der HSSE Robotics Chip V2 stellt dem Mikrocontroller und damit auf Softwareebene Peripherie   komponenten  Abb  7 1  zur Verf  gung  die speziell auf die Anwendung in der Robotik zugeschnitten        NIMh or    on       ee ZZ Leg 2                  2  5               15            Li  xi     Or   gt    bal  Loi  ra  9   e                  22   E  5             3             E  c FE  mex             ER        b   Kino POH d  i  pe                   GF Scents                65  si   ESS  y Servo17           1 Servo12               Abbildung 7 1  Das FPGA vom Typ Lattice XP stellt spezielle Peripherieeinheiten f  r die Robotik und    hnliche Anwendungsbereiche zur Verf  gung  Die zugeh  rigen Bereiche auf der Platine sind hervorgeho   ben    sind     e Erzeugen von PWM Signalen zur Ansteuerung von 24 handels  blichen Modellbauservos     e Ber  cksichtigung von Korrekturwerten bei der Umrechnung von Sollwinkel auf den PWM Wert  zur Servosteuerung 
38.   Diese Funktion hat keinen R  ckgabewert     Anmerkung       e Der Modus RC_SERVO_MODE_NO_ACTION sollte nur verwendet werden  wenn der entspre     chende Servo nicht belastet wird     auch nicht durch das Eigengewicht des Spinnenk  rpers     e Bevor diese Funktion verwendet werden kann  m  ssen SL2_Init    und RC  Init    aufge   rufen werden     Beispiel    Servo 0 in den PwmDirect Modus schalten     int main          uint8 t i      0       proxy function for whole initialization    Init         activate servo  0  RC SetServoMode 0  RC SERVO MODE PWM DIRECT                    move servo  0 to its middle position  RC SetServoPwmDirect  i  2048            1    1           return 0        SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    9 8 ROBOTICSCHIP    175       9 8 5 RC_SetGlobalServoMode    inline void RC_SetGlobalServoMode   in  uint8_t Mode     Beschreibung    Schaltet alle Servos in den angegebenen Modus        Parameter   Bedeutung       Mode Bestimmt den Modus des Servos  Dieser Parameter kann folgende Werte anneh   men   e RC_SERVO_MODE_PWM_DIRECT   PwmDirect Modus  siehe Abschnitt  7 5 auf Seite 92 f  r genauere Erkl  rung    e RC SERVO MODE PHI DIRECT   PhiDirect bzw  PhiSpeed Modi  sie   he Abschnitt 7 5 auf Seite 92 f  r genauere Erkl  rung  oder  e      SERVO MODE NO  ACTION   Servo deakiviert                             R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung                e Der Modus RC_SERVO_MODE_NO_ACTION sollte nur 
39.   Paket  gesendet  Zus  tzlich kann jedoch mit der Funktion uart_flush    ein manuelles Senden  eingeleitet werden  Die gesamte Steuerung des Ger  tes am Bus erfolgt   ber Interrupts  Alle Anfragen  vom Host werden in Interrupt Routinen ausgewertet und bearbeitet  F  r den Anwender entsteht das  Bild einer    normalen    seriellen Schnittstelle     9 7 1 uart usb init    void uart  usb init      Beschreibung    Initialisiert die virtuelle serielle Schnittstelle        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    168 9 SOFTWARE FUNKTIONSBIBLIOTHEK       R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Nach der Initialisierung m  ssen die Interrupts eingeschaltet werden     Beispiel  Initialisierung und Verwendung des USB UART     Va M Ll ul ER EE E WEE                        AAA AA AT KLEE     includes   IL T E ARR ADU EE EE           P EE   include  lt avr interrupt h gt    include  uart usb lib h       never blocking putc  int nb putc char xc      if uart is tx ready     return  1     uart usb  putchar c    return 0            never blocking getc  int nb_getc  char            if uart test hit     return  1     return uart  usb getchar c             do all the initialization stuff here  void Init  void        initialize usb uart  uart usb init         enable interrupts  sei              program entry point  int main  void        echar          initialize system  Init           SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 7 USB UA
40.   T  u     TATUO                      NiMhor _  __       Nica                                             DuJENJOVH                                            m    ebd     Del                       MSG FPGA1        MSG FPGAG     8                     OVLF                I  tuo POIN   UHNIN    NiMh or    NiCd only                                 iuo POIN  o um                    R18 LIC R19          ECH 2207  ECH CH csi ccocoocc coco 2207  cc DENM              LLANOS OOMES GOMES            LOMeS    9OMES GOMES  yoMes BOSS COMES Jade OMS  CT     i9         SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    B 8 LAYOUT ToP LAYER 229       B 8 Layout Top Layer          SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    230    PLATINENLAYOUT       B 9 Layout Bottom Layer       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    231          RC Empf  ngerumbau zum Anschluss an die  SandboxS 2    Prinzipiell kann so gut wie jeder RC Empf  nger so umgebaut werden  dass das PPM Signal der De   modulationsstufe am Ausgang zur Verf  gung steht  Als Beispiel ist die Modi kation eine preisg  nsti   gen AM Empf  ngers der Marke Acoms Techniplus beschrieben  Der Umbau von Empf  ngern anderer  Fabrikate erfolgt sinngem      erfordert aber unter Umst  nden weitergehende Modi kationen als nach   folgend dargestellt     Der unmodi zierte Empf  nger ist links in Abb  C 1 zu sehen  Um die Modi kationen durchf  hren  zu k  nnen  muss zun  chst einmal der Schwingquarz entfernt werden  Abb
41.   bersetzt  Das Potentiometer dient also als Winkelsensor  Dieser  Spannungswert wird von der Servoelektronik gemessen    Damit schlie  t sich im Servo ein Regelkreis der in Abb  7 5 zu sehen ist    Modellbau  und Robotikservos werden in gro  en St  ckzahlen unter enormem Preisdruck herge   stellt  Verst  ndlicherweise lassen sich konkurrenzf  hige Preise nur erreichen  wenn die Fertigungsto   leranzen der einzelnen Komponenten nicht unrealistisch eng gew  hlt werden  Daher ist die Genau   igkeit der Zuordnung von Pulsdauer und damit dem Sollwinkel und dem tats  chlich resultierenden  Servohebelwinkel stark von der Qualit  t der einzelnen Teile und ihrer Abstimmung aufeinander ab   h  ngig  Ungenauigkeiten schleichen sich insbesondere an folgenden Stellen in das System    Servo     ein     e Mechanisches Spiel zwischen Hebelarm und Potentiometerachse   e Fertigungsgenauigkeit des Potentiometers     e Abnutzung oder Alterung des Potentiometers     Messungenauigkeit bei der Bestimmung der Spannung  welche das Potentiometer vorgibt   e Messungenauigkeit bei der Bestimmung der Impulsdauer  Sollwinkel      e Nichtlineares Verhalten der Regelelektronik        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    90 7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP            Ist Winkel    Servoscheibe    eg   Getriebe  elektrische Verbindung    Mechanische Verbindung  wane ease nn  gt      S             Soll Winkel       Energieversorgung      Abbildung 7 5  Regelkreis in einem Modellbauser
42.   damit kein Interrupt Request ausgel  st wird  Um festzustellen  ob eine Interrupt   Anforderung vorliegt  werden alle Interrupt Flag Register best  ndig zyklisch ausgelesen und die darin  enthaltenen Interrupt Flags ausgewertet     7 2 1 Interrupt Flag Register       Adr AVR  Interrupt Flag Register  0x9C00 Bereit f  r neue Servo Bewegungssequenz  Servos 0 7  0x9C01   Bereit f  r neue Servo Bewegungssequenz  Servos 8 15  0x9C02   Bereit f  r neue Servo Bewegungssequenz  Servos 16 23  0x9C03 IRQ Flags f  r PS 2  RC Rx  Grundstellung    Paniktaste und CORDIC                            Tabelle 7 1  Addressraum der Interrupt Flag Register  Diese Register haben eine Datenwortbreite von 8  Bit  so dass der Mikrocontroller das gesamte Register mit einem einfachen Zugriff lesen kann  Die Register  sind nur les   aber nicht schreibbar     7 2 1 1 Register ServoSeqEmpty70       Bit  0x9C00 IFS7 IFS6 IFSS IFS4 IFS3 IFS2 IFS1 IFSO       Tabelle 7 2  Register  ServoSeqEmpty70  Im Initialisierungszustand nach dem Einschalten und nach Reset  sind alle Interrupt Flags inaktiv  Wert 0    Nur lesbar  Durch das Auslesen des Registers werden alle  Interrupt Flags im Register gel  scht     Bit 0     IFSO Interrupt Flag Servosequencer 0  Dieses Flag wird gesetzt  Wert 1    wenn der zuvor  vom Mikrocontroller geschriebene Servosequenzauftrag  bestehend aus den Werten fiir Phi   Start  DeltaPhi und NrOfDeltas  vom Servosequencer abgeholt wurde  Ist das Interrupt Mask   Bit ImSqe im Register ModeIr
43.   im Roboter  Spezielle Roboterservos sind teilweise so drehmomentstark  dass die Robotermechanik  hierbei besch  digt werden kann  Auch Verletzungen durch die Servobewegung sind bei sehr kr  ftigen  Servos nicht ausgeschlossen    Beim   bergang in den Servogrundstellungsmodus wird das zugeh  rige Interrupt Flag IFNeut  im Register IrqFlagsOthers  siehe Abschnitt 7 2 1 4 gesetzt  Ein Interrupt wird auf der Leitung  INTO nur dann ausgel  st  wenn das Interrupt Mask Bit ImNeut in Register IrqMaskRcRxCtrl  Ab   schnitt 7 13 1 1 gesetzt ist  Wert 1      7 9 Servopaniktaste    Druck auf die Taste KeyFpgaO deaktiviert die Impulserzeugung aller angeschlossenen Servos  Der  Effekt ist der gleiche  wie wenn das Bit Active des Registers ModelrqMask aller Servos deaktiviert       SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    108    7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP       w  rde  Die Deaktivierung kann nur durch Druck auf die Taste Reset oder Aus  und Einschalten wieder  r  ckg  ngig gemacht werden    Beim Dr  cken der Servopaniktaste wird das zugeh  rige Interrupt Flag IFPnk im Register IrqFlags   Others  siehe Abschnitt 7 2 1 4 gesetzt  Ein Interrupt wird auf der Leitung INTO nur dann ausge   l  st  wenn das Interrupt Mask Bit ImPnk in Register IrgMaskRcRxCtrl  Abschnitt 7 13 1 1 gesetzt ist   Wert 1     Diese Taste hat noch eine Zweitbelegung  die zum Aufruf des Bootloaders im AVR Mikrocontroller  dient  Eine Beschreibung ndet sich in Abschnitt 4 7 1  In dieser Zweitbed
44.   installiert sein und    e der Treiber f  r die den Bootloader auf der SandboxS 2 muss installiert sein     Das Programm    Flip     das kostenlos von der WWW Seite der Firma Atmel  www atmel com   heruntergeladen werden kann  kommuniziert mit dem Bootloader auf der SandboxS 2  Es   bermittelt  dem Bootloader  der vom AVR ausgef  hrt wird Daten und Befehle  die dieser interpretiert und aus   f  hrt  Auf diese Weise kann der Programmspeicher des AVR mit einem Programm gef  llt werden  da  der AVR dazu in der Lage ist  seinen eigenen Programmspeicher zu beschreiben  Gleiches gilt auch f  r  den EEPROM Speicher  der meist f  r Parameter verwendet wird  Auch dieser kann vom Bootloader  aus mit Daten versorgt werden    Die Schritte zur Vorbereitung eines PC sind folgende         Das Programm    Flip    wird in Form eines Dateiarchivs    zip  von Atmel zur Verf  gung ge   stellt  Dieses Archiv wird zun  chst in einem tempor  ren Verzeichnis entpackt     b  Nun wird die Datei setup exe in diesem Verzeichnis ausgef  hrt und der Installer des Pro   gramms    Flip    beginnt mit seiner Arbeit     c  Nach abgeschlossener Installation verbindet man die     noch ausgeschaltete     SandboxS 2 an  deren USB Buchse mittels USB Kabel mit einem USB Port des PCs     d  Beim Einschalten der Sandbox wird der Bootloader entsprechend der Beschreibung im nach   folgenden Abschnitt 4 7 1 aktiviert     e  Windows reagiert automatisch mit dem Wizard f  r die Installation neuer Hardware auf  das neue u
45.   lt im montierten  Zustand das Kabel in den Schneidklemmverbindern fest  Hierzu ist es mit zwei Snap In Haken ver   sehen  die eine Demontage so gut wie unm  glich machen  Diese Haken werden einfach abgebrochen   wie es Abb  7 27 zeigt  Allerdings taugt der B  gel dann nt  rlich zur Endmontage nichts mehr  Statt  des B  gels einen Schraubenzieher oder   hnlich ungeeignetes Ger  t zu verwenden hie  e dennoch am  falschen Platz sparen  Der komplette Stecker kostet ohnehin nur wenige Cent        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 17 SONY PLAYSTATION 2 GAME PAD CONTROLLER 119          Abbildung 7 27  Herstellung des Montagewerkzeugs f  r Einzeladern durch Abbrechen der Snap In   Haken     Nun k  nnen die einzelnen Adern des Kabels eine nach der anderen in die Schneidklemmverbinder  eingedr  ckt werden  Abb  7 29 zeigt einen Zwischenschritt  Die Adern des Kabels werden einzeln in    Abbildung 7 28  Einzeladern werden in den eigentlich f  r Flachbandkabel gedachten Stecker eingelegt   Jede Ader wird in den zugeh  rigen Schneidkamm eingedr  ckt  wobei ein Teil eines weiteren Steckers  behilflich ist        sq       einen Wannenstecker eingelegt  der vom Hersteller urspr  nglich f  r Flachbandkabel gedacht ist  Dies  geht mit einem einfachen Trick recht leicht  wozu zwei solche Stecker ben  tigt werden  Einer der  beiden dient lediglich als Werkzeug beim Einlegen der einzelnen Adern w  hrend der andere seiner ur   spr  nglich zugedachten Aufgabe als Steckverbind
46.   so dass meist keine Ader f  r ihn vorhanden ist  Der Kontakt mit der Nummer 3 dient zur  Stromversorgung der Vibrationsmotoren im Game Pad Controller  Diese werden f  r Robotikanwendun   gen nicht ben  tigt  Bei drahtlosen Ger  ten werden die Vibrarionsmotoren von Batterien im Handteil ver   sorgt  Daher kann diese Ader entfallen  Das Signal auf Kontakt Nummer 9 wird von der Schnittstelle des  Robotics Chip nicht benutzt  Auch auf diese Ader kann also auf Wunsch verzichtet werden  Alle anderen  Kontakte sind f  r die Funktion des Game Pad Controllers unbedingt notwendig     Herstellern einheitlich mit der Vorgabe von Sony gehalten  Leider nden sich aber auch vollkom   men andere Belegeungen  Es ist also unbedingt n  tig  mit einem Multimeter oder einem einfachen  A Durchgangspr  fer nachzumessen     Flachbandkabelsteckverbinder f  r Einzeladern   Bevor die Einzeladern in den Stecker eingepresst oder besser nur eingedr  ckt werden k  nnen  wird ein  spezielles Werkzeug f  r diesen Zweck hergestellt  Dieses Werkzeug ist eigentlich eines der drei Teile  eines Steckers f  r Flachbandkabel  n  mlich der Kabelf  hrungsb  gel  der auf das Unterteil des Steckers   das mit den Steckkontakten  aufgedr  ckt wird  Dieser Kabelf  hrungsb  gel enth  lt halbkreisf  rmige  Hohlkehlen  welche die Einzeladern in die richtige Position f  r die aus dem Unterteil herausstehenden  Schneidklemmverbinder bringen    Dieses    Werkzeug    ist eigentlich nur f  r den einmaligen Gebrauch gedacht und h
47.   uft und der Baudrate Generator diesen Takt verwendet  ergeben sich Synchronisationsfeh   ler  Diese lassen eine   bertragung nur mehr mit starken Fehlern zu  Dadurch wird die Auswahl auf  folgende Baudraten beschr  nkt  2400  4800  9600  19200  38400    Zum Anschluss des Moduls an den Erweiterungsstecker  Abschnitt 5 6  der SandboxS 2 kann bei   spielsweise ein speziell angefertigtes   Flachband kabel dienen  dessen Verbindungen nach Tabelle 5 1  angelegt wurden  Bei der Herstellung des Kabels ist die gleiche Technik hilfreich  die auch beim An   schluss des Playstation GamePad Kabels verwendet wird  siehe Abschnitt 7 17 1         SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    5 7 ANSCHLUSS EINES BLUETOOTH RS323 MODULS            Serial port was open  COM 1  19200  No Parity  One Stopbit    Infomation     gt     Device Setting    Connection out     m    Connection  in     Connection Wizard       Abbildung 5 16  Kon guration des Bluetooth Serial Moduls Parani ESD100 des Herstellers SENA unter  Verwendung von dessen Kon gurationsprogramm ParaniWIN  Das Modul ist   ber das ESD StarterKit    von SENA an eine serielle Schnittstelle des PC angeschlossen                                               Pin   At90USB1286 7   Parani ESD 100   Pin  2  3V3 VDD 6  3 AVR_RXDI TXD 2  4 AVR  TXDI RXD 3     AVR  ADC2 RTS 4   7           EXT PIN CTS 5   9  GND DSR 9   10 GND GND 12       Tabelle 5 1  Verbinden des Erweiterungssteckers des AVR Mikrocontrollers auf der SandboxS 2 mit dem 
48.  0 oder SL2  KEY 1  State De niert ob darauf gewartet werden soll  dass der Taster gedr  ckt wird                 SL2_KEY_PRESSED  oder losgelassen wird  512 KEY NOT  PRESSED            R  ckgabewert       R  ckgabewert    Beschreibung       SL2 INVALID PARAMETER    Mindestens einer der angegebenen Parameter ist nicht g  ltig           SL2 SUCCESSFUL       Die Funktion wurde erfolgreich ausgef  hrt          Anmerkung    Bevor diese Funktion verwendet werden kann  muss 5 2 Init    aufgerufen werden        SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    154    9 SOFTWARE FUNKTIONSBIBLIOTHEK       Beispiel  Es wird so lange gewartet  bis Key 1 gedr  ckt wird  Sobald die Taste gedr  ckt wurde  wird LED 1  eingeschaltet     int main               uint8 t State   SL2 KEY NOT PRESSED                   function that has to b xecuted in every appli     cation to initialize the interface with the FPGA  SL2 Init                               State   512 AvrWaitOnKey SL2 KEY 0  512 KEY PRESSED            SL2 AvrSetMsgLed  SL2 MSG LED 1  SL2 MSG LED STATUS ON                        1    1           return 0     9 4 5 SL2_ExtAvrSetPinMode    void SL2 ExtAvrSetPinMode  in  uint8 t Data        Beschreibung      ber diese Funktion kann ausgew  hlt werden  ob Pin D6 als Eingang oder als Ausgang verwendet  werden soll  Pin D6 ist am Erweiterungsstecker des AVR angeschlossen und wird von der SandboxS 2  selbst nicht verwendet        Parameter   Bedeutung   Data De niert ob Pin D6 als Ei
49.  Bei IK_KNEE_DOWN liegt der Fu  punkt h  her als das    Kniegelenk                             R  ckgabewert    Der R  ckgabewert vom Typ IK InverseKinematicsReturn ist eine Struktur  welche die be   rechneten Punkte beeinhaltet sowie Informationen ob die Berechnung erfolgreich war  Eine Berech   nung ist dann nicht erfolgreich  wenn   ber die Parameter XCoord  YCoord und ZCoord ein Punkt  angegeben wird  der von der Beinmechanik nicht erreicht werden kann   Der Aufbau der Struktur      InverseKinematicsReturn ist in Abschnitt 9 11 auf Seite 216    genauer erkl  rt        R  ckgabewert    Beschreibung            FAILED    Der Punkt kann mit den gegebenen L  ngen der Beine nicht erreicht wer   den  die R  ckgabewerte der Winkel sind ung  ltig und d  rfen nicht ange   fahren werden           IK SUCCESSFUL       Alle Winkel wurden erfolgreich berechnet           Anmerkung    e Auch wenn die Berechnung eines Winkels erfolgreich war  darf dieser Winkel nicht ohne wei  A  teres eingestellt werden  So k  nnte eine Berechnung z B  einen Winkel von 60   f  r den Coxa   Servo  H  ft Servo  ergeben  der maximale Winkel f  r dieses Servo ist allerdings durch die  Mechanik auf 45   beschr  nkt   Bevor ein berechneter Winkel angefahren wird muss   berpr  ft werden  ob dieser Winkel  ohne  die Mechanik zu besch  digen  angefahren werden kann        SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    204    9 SOFTWARE FUNKTIONSBIBLIOTHEK       e Bevor diese Funktion verwendet werden kan
50.  Bitte achten A  Sie darauf  dass dieses Kabel nicht auf Zug beansprucht und keinesfalls geknickt wird     4 2 Taktversorgung    Der Mikrocontroller kann bei 3 3 V Versorgungsspannung maximal mit der Taktfrequenz 8 MHz be   trieben werden  Ein Takt dieser Frequenz steht   ber einen Chip internen RC Oszillator zur Verf  gung   Jedoch ist dessen Genauigkeit f  r den Betrieb des integrierten USB Peripherals nicht ausreichend  Aus  diesem Grund wurde ein Quarzresonator in Verbindung mit der AVR eigenen Oszillatorschaltung zur  Erzeugung eines ausreichend frequenzgenauen Taktes vorgesehen  Abb  4 3        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    56 4 MIKROCONTROLLER ATMEL AVR AT90USB1286 7       Abbildung 4 2  Anschluss des Atmel JTAG ICE Mk  II an die SandboxS 2  Das andere Ende des USB   Kabels  welches das Bild am oberen Rand verl  sst   wird selbstverst  ndlich an den PC angeschlossen           AVR    Abbildung 4 3  Quarzresonator zur Frequenzstabilisierung am Mikrocontroller                             SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    4 3           57       Das FPGA wird durch den Takt des Mikrocontrollers ebenfalls versorgt  Dieser legt den  auch  internen  Takt auf dem Pin CLKO  sofern die entsprechende Fuse des AVR programmiert ist  siehe  Abschnitt 4 6   Dies sollte selbstverst  ndlich stets der Fall sein     4 3 Reset    Am Mikrocontroller gibt es die M  glichkeit  einen Reset mittels eines Tasters zu erzwingen  Der Tas        Reset Pin 
51.  Bluetooth Serial Modul Parani ESD 100  Die Steckernummerierung des Bluetooth Moduls folgt nicht der  Konvention bei der Nummerierung von Stiftwannen und muss daher dem Datenblatt entnommen werden    Verbindung 5 7 9 werden nur f  r Hardware Flusskontrolle ben  tigt  und k  nnen weggelassen werden     falls sie nicht verwendet wird        SVN 408  PFAFF  SEPTEMBER 20  2007       SBXS2MANUAL TEX    74       6 FPGA Lattice XP LFXP3K    Das verwendete FPGA geh  rt zur FPGA Familie Lattice XP  die in einem sogenannten Handbook  genau beschrieben wird  http   www  latticesemi com products fpga xp   Die Lek   t  re dieses Handbuchs ist jedoch nur dann wichtig  wenn ein eigener Chipentwurf auf dem FPGA  implementiert werden soll  Wird das FPGA in seiner Rolle als HSSE Robotics Chip verwendet  dann  gen  gt die vorliegende Beschreibung     6 1 Taktversorgung    Das FPGA wird vom Taktgenerator des Mikrocontrollers mitversorgt  Daher arbeiten FPGA und Mi   krocontroller taktsynchron bei einer Taktfrequenz von 8 MHz     Der Mikrocontroller gibt den Takt f  r das FPGA auf dem Pin CLKO jedoch nur dann aus  wenn die  entsprechende Fuse des AVRs programmiert ist  Dies ist insbesondere bei fabrikneuen Mikrocontrol   lerchips nicht der Fall  Auf der SandboxS 2 wird diese Fuse jedoch unmittelbar nach der Fertigung  korrekt programmiert  N  heres zur Einstellung der Fuses ndet sich im Abschnitt 4 6     6 2 Reset    Die Resetleitung des FPGAs ist an den gleichen Taster angeschlossen wie die Rese
52.  Captain Ahab     einen Fortschritt verzeichnen  Die enge Zusammenarbeit des Studiengangs mit der Firma trotec aus  Wels auf dem Gebiet der Lasertechnik  erm  glicht es nun  einen Lasercutter zum Ausschneiden der  Roboterbauteile einzusetzen  Die erreichbare Genauigkeit liegt im 1 100 mm Bereich    Das Hexapod Projekt der Studieng  nge HSSE und ESD w  re ohne die enge Zusammenarbeit von  Studierenden und Professoren in dieser Form nicht denkbar  Unter anderem schl  gt sich diese Zu   sammenarbeit in diesem mittlerweile zu stattlichem Umfang gewachsenen Handbuch nieder  wie die  Zusammensetzung des Autorenteams erkennen l  sst    Ein Dank an dieser Stelle den industriellen Sponsoren des Projektes  technosert Wartberg  tro   tec Wels  Atmel Heilbronn  Hitec Robotics Bretten  Aigner Balsa Gr  nburg und MSC Wien     Hagenberg im September 2007       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007       Inhaltsverzeichnis  1   berblick 11                one    us AQ ra ea eae RE W    S ee 12  2 Erste Schritte 14  2 1 SystemvorSussetzHtBeD  o s e e aie w Q QQ E xo e e W wO xo ee Q w W 14  2 2 Entwicklungsumgebung                                             14  22 1 WI  ANE installieren    cu A                            W pus      a           15  2 2 2 Atmel AVR Studio installieren                          17  2 3  Ger  felreiber installieren   scs a  s u na un an 19  2 3 1 JTAG ICE Mk II Treiber installieren                       19  2 3 2 SandboxS 2 Treiber installieren 2     
53.  FLASH Buffer Information    T89C51CCO1  Signature B tes     E E  e J2 KB  dar  Dey ish Fr  Har ye  Tas       F Blank Ched Bootloader Yer       CAN       Program        File  seys    7  W verify  ewe ee       Level     Level t     Levelz  Abbildung 4 7  Das Haupt   25        fenster der Programmierappli   kation Atmel    Flip     Version                        Ist der Bootloader im Mikrocontroller aktiv  kann eine Kommunikation mit dem PC aufgebaut  werden  wo das Programm    Flip    mit Hilfe eines Treibers die Gegenstelle bildet  Die abgebildeten       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    4 7 UPDATE DER SOFTWARE DES AVR MIKROCONTROLLERS    61       Screenshots des Programms    Flip    beziehen sich auf die Version 3 1 1  Abbildung 4 7 zeigt das Haupt   fenster von    Flip    unmittelbar nach dem Start des Programmes    Nun wird    Flip    f  r die Verbindung mit der SandboxS 2 kon guriert  Hierzu muss vor allem im  Men   Device   Select    der richtige Mikrocontroller eingestellt werden  In unserem Fall ist dies der  AT9OUSB 1287     Di Atmel Flip  ioj x   Fie Buffer Device Settings Help    PE Lahn En         Operations Flow     FLASH Buffer Information f AT9DUSB1287                      Signature Bytes bs  he bz B  Sie 120KB     M Erase      Sr Device Boot 19 00 po    Checksum OxFF               Bootloader Ver   1 0 1    Reset Before Loading ZE    NW Program HEX File     Ee AIMEE       Abbildung 4 8  Der richtige             Mikrocontroller ist eingestellt
54.  Grund des kapazitiven Charakters des Piezosummers notwendig  Die erzeugte Lautst  rke       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 16 ERWEITERUNGSSTECKPLATZ    115       h  ngt bei einem Piezosummer von der angelegten Spannung zwischen den beiden Anschl  ssen ab  da  sich das Piezokristall entsprechend dieser Spannung verformt  Eine Form  nderung wird stets durch  eine Spannungs  nderung bewirkt  Wird ein Anschluss auf einem festen Pegel gehalten und der an   dere   ndert sich von Low Pegel zum High Pegel  dann ist der Unterschied in der Kristallverformung  geringer  als wenn sich beide Anschl  sse zugleich auf ihren jeweils entgegengesetzten Wert   ndern    Der Summer wird mit einem Rechtecksignal angesteuert und kann in seiner Tonh  he und in drei  Stufen in seiner Lautst  rke eingestellt werden  In geringem Ma  e ist auch die Klangfarbe beeinfluss   bar  da ein asymmetrisches Rechtecksignal mit unterschiedlicher High  und Low Dauer eingestellt  werden kann     7 15 0 7 Register BuzzCtrl    Bit 7  0  85          Ox85FE                                Tabelle 7 26  Register  BuzzCtrl  Les  und schreibbar     Bits 1 bis 0     Volume 00 Aus Dies ist auch der Initialisierungswert   01 Mittlere Lautst  rke  10 oder 11 Volle Lautst  rke    7 15 0 8 Register BuzzPhaseDurationLow    Dieses Register enth  lt eine vorzeichenlose 16 Bit Zahl  Diese Zahl gibt an  wie lange die Low Phase  des Rechtecksignales dauert  welches an den Piezosummer angelegt wird  Die Dauer e
55.  Helligkeit      PS 2 Mausschnittstelle        Schnittstelle f  r einen kabelgebundenen oder einen drahtlosen Sony Playstation 2 Game   Pad Controller        Programmierbare Ausl  sung von IRQs als Reaktion auf bestimmte Ereignisse      Tastenkombination startet AVR Bootloader nach Reset        CORDIC Koprozessor  beispielsweise zur Berechnung der inversen Kinematik    e USB Interface      USB 2 0 Full Speed Function        Bootloader f  r AVR Mikrocontroller erm  glicht Update und Basisfunktionalit  t zum De   bugging wenn auf JTAG ICE Mk II verzichtet werden soll      MIDI Schnittstellenemulation   ber USB m  glich    USB Kommunikation nach CDC Protokoll  Communication Device Class  ist Bestandteil  der SW Bibliothek  e SD Card Slot      FAT Dateisystem auf SD Karte wird von SW Bibliothek unterst  tzt    e Energieversorgung        Akkubetrieb aus f  nf handels  blichen und leicht austauschbaren NiMh Zellen der Gr    e  AA    Bei Sonderbest  ckung auch Zellen in Gr  De AAA verwendbar    Integrierte Entladeschaltung zur Vermeidung des Memory Effekts      Verpolungsschutz    Messung der Gesamtstromaufnahme und der Akkuspannung durch den Mikrocontroller    e Erweiterungsm  glichkeiten        Anschlussm  glichkeit an das SensOrchestra System    Erweiterungsm  glichkeiten durch Steckverbinder    Komplette Dokumentation und frei zug  ngliche Schaltungsunterlagen erm  glichen eigene  Projekte    Bluetooth zur seriellen Daten  bertragung       SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS
56.  SBXS2MANUAL TEX    128 7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP                   Bit 7 6 5 4 3 2 1 0  Adr 1 unsigned 1 downto  6   Adr unsigned  7 downto  14        Tabelle 7 41  Register  Eingabewerte von x und y des CORDIC Algorithmus  Zirkularer Vektormodus    Schreib  und lesbar        Bit 7 6 5 4 3 2 1 0  Adr 1 unsigned 1 downto  6   Adr unsigned  7 downto  14              Tabelle 7 42  Register  Ausgabewerte von x und z CORDIC  Zirkularer Vektormodus   Schreib  und les   bar     Linearer Vektormodus  e Der Eingangwert von z sollte in diesem Modus immer    sein und y muss immer kleiner bzw   gleich gross sein wie        e Die Genauigkeit der Berechnung betr  gt 18 36 Bit     Die Datenformate in diesem Modus sind in den Abbildungen 7 46  7 47 und 7 48 dargestellt     Hyperbolischer Rotationsmodus  Dieser Modus wird nicht unterst  tzt     Hyperbolischer Vektormodus  e Die Genauigkeit der Berechnung der Wurzelfunktion betr  gt 15 94 Bit     e Die Berechnung des Arkustangens Hyperbolicus wird nicht unterst  tzt     e F  r die Berechnung der Wurzelfunktion von a muss z   a  1 und y   a     1 gew  hlt werden   wobei sich a innerhalb des Wertebereichs 0 03     1 be nden muss     e Der Eingangwert von 2 sollte in diesem Modus immer 0 sein     Die Datenformate in diesem Modus sind in den Abbildungen 7 49 und 7 50 dargestellt        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 22 CORDIC KOPROZESSOR 129       Bit         1                    unsigned 15 downto 8   unsi
57.  SL2 ExtAvrSetPinValue  in  uint8 t Data        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    156    9 SOFTWARE FUNKTIONSBIBLIOTHEK       Beschreibung    Erm  glicht das Schreiben von Daten auf Pin D6        Parameter   Bedeutung             Wert eine logische 0    Data Wird der Parameter auf SL2_EXT_PIN_ON gesetzt  so wird eine logische 1  an den Ausgang gelegt  3 3V   bei SL2_EXT_PIN_OFF sowie jedem anderen     0V                  R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Um diese Funktion verwenden zu k  nnen  muss der Pin mittels 5 2 ExtAvrSetPinMode      als Ausgang de niert werden        e Bevor diese Funktion verwendet werden kann  muss 5 2 Init    aufgerufen werden     Beispiel    Pin D6 zuerst auf OV und nach einem Tastendruck auf 3 3V schalten     int main               uint8 t State SL2 KEY NOT PRESSE         function that has to b             xecut    D        ed in every appli       cation to initialize the interface with the FPGA    SL2 Init             ExtAvrSetPinValue  SL          t                   NO MOM       E 2   te   SL2 AvrWaitOnKey  5  _ExtAvrSetPinValue  SL2_          2_KEY       _ExtAvrSetPinMode  SL2_EXT_PIN_OUTPUT     EXT_PI    N_OFF    0  SL2_KEY_PRESSED                              EXT_PI          while  1           return 0     9 4 8 SL2_GetCurrent    uintl6_t SL2_GetCurrent       Beschreibung    N_ON      Diese Funktion misst den gesamten Stromverbrauch der SandboxS 2 und gibt diesen in mA zur  ck   D
58.  TO USE RC SERVO REVERSE OFF    rot   ROT NORMAL        else      fprintf  gStrmUSB   Rotation  reverse n     RC_SetServoRotation  SERVO_TO_USE  RC_SERVO_REVERSE_ON     rot   ROT_REVERSE         break                                                                                default   break        apply new PWM value  RC SetServoPwmDirect  SERVO TO USE pwm                 never return  loop forever  for            SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    46    2 ERSTE SCHRITTE       return 0          2 6 2 3 Bemerkungen    Die enum Typen dienen zur Gliederung der einzelnen Zust  nde  Dadurch wird die Fehlersuche  erleichtert  und der Code ist lesbarer     Auf der SandboxS 2 be nden sich mehrere Taster  diese sind reale Taster  Das bedeutet  sie Prellen  beim Dr  cken und Loslassen  Daher wird mit der Wartefunktion _delay_ms    die Zeitspanne  in  der St  rsignale auftreten k  nnen  abgewartet     Der    und    Post x der Variable pwm stellt eine Abk  rzung des Ausdrucks pwm   pwm   1  bzw  pwm   pwm   1 der Programmiersprache dar     2 6 3 Projekt   bersetzen    Die Vorgehensweise ist dabei gleich wie in Abschnitt 2 4 3     2 6 4 Programm ausf  hren    Die Vorgehensweise ist dabei gleich wie in Abschnitt 2 4 4     2 6 5 Programm testen    Nach dem Starten des Programms  und dr  cken der Taste Key_Avr0  sollte ein Begr    ungstext  ausgegeben werden  Es wird nun ein Servo an den SERVOO Anschluss angeh  ngt  Danach kann die  Position des Servos mit den Tasten v
59.  Verfeinerung eines mittels  Tabelle fest programmierten Ablaufs  mit anderen Worten  Durch Probieren  An Kurvengang  war beispielsweise urspr  nglich nicht zu denken  Nun wurden stattdessen von Insekten abge   schaut  w  hrend die Bewegungssteuerung auf die Prinzipien der Industrierobotik zur  ckgriff   allen voran die inverse Kinematik           x    Die urspr  ngliche Steuerungselektronik war ein speziell f  r den Zweck der Servosteuerung um   gebautes und erweitertes Evaluierungsboard f  r den Chipentwurf  die Sandbox  Die Steuerung  wurde daher auch als reiner Chipentwurf in einem FPGA des Herstellers Xilinx verwirklicht   Diesem reinen Hardwareansatz fehlte es naturgem     an der Flexibilit  t des Softwareanteils   Der enorme Vorteil der extrem genauen zeitlichen Steuerung gegen  ber den M  glichkeiten  eines Systems auf Basis eines Mikrocontrollers war andererseits offensichtlich  Als Konse   quenz hieraus wurde die SandboxS entwickelt  Hier wurde ein ALtera FPGA mit einem AVR   Mikrocontroller gekoppelt  Damit war die Steuerung nun ein Hardware Software Co Design     Die CNC Fr  se der FH in Hagenberg erm  glichte nicht nur die genaue Fertigung eines einzelnen  Prototypen  sondern mit ihrer Hilfe w  re sogar die Auflage einer Kleinstserie m  glich  Die Steue   rungselektronik SandboxS war von vornherein nach den Gesichtspunkten einer m  glichen Serienpro   duktion konstruiert  Der Gedanke  den Hexapodroboter als Botschafter in Schulen zu schicken  um die  Kooperation 
60.  Zeitschritte gesteuert  Der Increment  Decrementwinkel ver  ndert den derzeitigen Win   kel im Zeitabstand von ca  20 ms  mittels TuneFine und TuneCoarse einstellbar   Soll ein  Winkel eingestellt und gehalten werden  so wird der Incrementwinkel 0 angegeben  Mit  dieser Einstellung steht quasi ein dritter Modus     PhiDirect     zur Verf  gung     Bit 1     Reverse Die PWM Impulsl  nge wird so umgerechnet  dass sich ein umgekehrter Drehsinn  des Servos ergibt  Dieser Parameter wirkt in allen Modi auf die entweder vom Mikrocontrol   ler direkt geschriebene Impulsl  nge oder auf diejenige Impulsl  nge  welche intern im Modus  PhiSpeed ermittelt wurde     Bit 0     Active Ist dieses Bit gesetzt  so wird ein Servoimpuls ausgegeben  andernfalls wird kein Im   puls ausgegeben  Je nach Bauart  werden die meisten Servos bei fehlendem Impuls das gleiche  Verhalten zeigen  wie bei fehlender Energieversorgung     7 5 4 Pulsdauer    Die Pulsdauer kann vom Mikrocontroller aus im Register PwmLen eingestellt werden  Der derzeit  ablaufende Pulszyklus bleibt jedoch von einer Neueinstellung unber  hrt  Der neue Wert wird erst  zu Beginn des n  chsten Pulszyklus vom Pulsgenerator verwendet  Dieses Verfahren garantiert  dass  keine Pulse von unerw  nschter L  nge beim   bergang erzeugt werden  Die momentan verwendete  Pulsdauer kann bei Bedarf dem Register CurrentPwm entnommen werden     7 5 4 1 Register PwmLen    Dieses Register steht nur im Modus PwmDirect  Bit 2     Mode in Register Modelrq
61.  auf Seite 211     9 10 3 GetClusterSize    uint8 t GetClusterSize      Beschreibung    Gibt die Clustergr    e zur  ck  welche zuvor durch die Funktion fat cluster data store     ermittelt wurde     R  ckgabewert       R  ckgabewert   Beschreibung  ClusterSize Clustergr  fe                    Anmerkung  e Die SD Karte muss eingelegt und initialisiert sein   e Die Funktion Cat cluster data  store    muss zuvor aufgerufen worden sein     e Bevor diese Funktion verwendet werden kann  muss 5 2 Init    aufgerufen werden     Beispiel    siehe Beispiel in Abschnitt 9 10 4 auf Seite 211        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 10 SD KARTE    211       9 10 4 GetBytesPerSec       uintl6_t GetBytesPerSec          Beschreibung    Gibt die Anzahl der Bytes pro Cluster zur  ck  welche zuvor    fat cluster data store   ermittelt wurde     R  ckgabewert    durch die Funktion       R  ckgabewert   Beschreibung          BytesPerSec Anzahl der Bytes pro Sektor              Anmerkung    e Die SD Karte muss eingelegt und initialisiert sein     e Die Funktion Cat cluster data store    muss zuvor aufgerufen worden sein     e Bevor diese Funktion verwendet werden kann  muss 5 2 Init    aufgerufen werden     Beispiel    Ermittelt die Clustergr    e sowie die Anzahl der Bytes pro Cluster der eingelegten SD Karte und sen   det diese   ber die USB Schnittstelle an den PC     int main            uint8_t Temp 0   uint8_t ClusterSize   0   uintl6_t BytesPerSec   0       function tha
62.  datribuled under the GNU GPL Licerae     4  Debugger  26  s Gerbuted under fe GNU GL License    Insight    datrbuted under the 04        License   VR is datributed under the Ga  C  License      H you accept the terms of the agreement  dck I Agree to Continue  You must accept the  agreement to metal WinAVR  20070828     Lee Lull emm         WinAVR 20070525 Setup    Choose Components  Choose which features of WINAVR 20070525 you want te install    WinAVR 20070525 Setup       Anat alin  Pease wat wide WAAR 20070525 6 beng installed          Exvact  awr Lon    bass    Check the components you want to install and uncheck the components you don t want to  install  Cick Install to start the installation           Select components to metal  LES   9  Add Directories to PATH  Recorded    S  Install Programmers               Compleling the WinAVR 20070525  Setup Wizard         Wind  20070525 has been installed on your computer     kk Finish to dose this ward     Abbildung 2 1  Schrittweises Installieren des WinAVR Kompilers        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    2 2 ENTWICKLUNGSUMGEBUNG EINRICHTEN 17       2 2 2 Atmel AVR Studio installieren    Die Entwicklungsumgebung be ndet sich ebenfalls auf der Begleit CD im Ordner  AtmelAvrStudio  Die Installation darf erst nach erfolgreicher Installation des WinAVR Pakets  erfolgen  Sie wird durch einen Assistenten begleitet  Wichtig ist dabei  dass der Jungo USB Treiber  auch ausgew  hlt wird  Eine bebilderte Installation
63.  den Indizes    bis 16 geordnet  Der nutzbare Bereich geht  offenbar nur bis zum Wert f  r den Index 14  Danach wird dieser Wert einfach nur wiederholt  dh h     jeder Winkel in diesem Bereich wird zur Ausgabe des maximal gemessenen Wertes f  r PwmLen von  3898 f  hren        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    102 7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP       7 7 Servo Sequencer    Der Servo Sequencer bewegt ein Servo im Modus PhiSpeed  Bit 2     Mode in Register ModelrqMask  hat den Wert 1  automatisch mit gleichf  rmiger Geschwindigkeit  Die Bewegung erfolgt  ausgehend  von einem einstellbaren Startwinkel  mit einer bestimmten Geschwindigkeit   ber eine bestimmte Dau   er  Die drei Parameter Startwinkel  PhiStart   Geschwindigkeit  DeltaPhi  und Dauer  NrOfDeltas   k  nnen f  r jedes Servo einzeln angegeben werden     Sequenzauftrag  Die Bewegungssequenz wird nicht unmittelbar von den drei Registern PhiStart  DeltaPhi und NrOf   Deltas gesteuert  Vielmehr kann   ber diesen Parametersatz die auf die derzeit im Ablauf be ndliche  Bewegungssequenz folgende Sequenz bestimmt werden    ber die Register wird quasi eine Bewe   gungssequenz in Auftrag gegeben  Dieser Auftrag wird aber erst nach vollst  ndiger Abarbeitung der  momentan ablaufenden Sequenz bearbeitet    Der Status der momentan ablaufenden Sequenz l  sst sich f  r jedes der Servos   ber die Register  CurrentPhi  und CurrentPwm   CurrentDeltaPhi und DeltasToGo abfragen    Eine neue Bewegungssequenz b
64.  der FH O   Hagenberg  Einfache Designs werden bereits im 3  Semester entworfen und in der Pra   xis erprobt  Die Methoden  die f  r den Entwurf des HSSE Robotics Chip ben  tigt werden  vermittelt  das Studium im 4  Semester  Im 5  Semester rundet das Design einer 16 Bit CPU und eines Signal   verarbeitungssystems  Audio  Kommunikationstechnik  das Thema f  r die Bachelor Ausbildung ab    Der aufbauende Master Studiengang Embedded Systems Design  ESD  f  hrt diesen Ausbildungs   zweig mit den zukunftsweisenden Themen System On Chip Design und Advanced Veri cation wei   ter     7 1 Peripheriekomponenten aus Sicht des Mikrocontrollers    Die nachfolgenden Abschnitte zeigen die F  higkeiten der einzelnen Peripheriekomponenten auf  wel   che das FPGA dem Mikrocontroller zur Verf  gung stellt  Diese Darstellung   hnelt den Erl  uterungen  der Peripheriekomponenten aus dem Datenblatt des     9005  1286 7  Timer  SPI  USART  ADC         Die Gesamtheit aus Atmel AVR und FPGA erscheint der Software tats  chlich wie ein AVR  der  Robotik Peripheriekomponenten besitzt  Aus Sicht der Software be ndet man sich also nach Studium  der Dokumentation dieser Peripheriekomponenten nach wie vor auf gewohntem Terrain  Leider gibt  es jedoch eine Einschr  nkung  Der AVR Simulator und der Debugger JTAG ICE  II  wissen von den  neu hinzugewonnenen F  higkeiten wenig bis nichts  Hierzu m  sste man die Robotik Peripherie auch  in deren Entwicklungssoftware nachbilden    In Hinsicht auf das Echtzeitver
65.  der eingelesen werden soll  Kann folgende Werte  annehmen  51 2        0 oder SL2 KEY 1                                        R  ckgabewert  R  ckgabewert Beschreibung  SL2_KEY_NOT_PRESSED Taste ist nicht gedr  ckt   SL2_KEY_PRESSED Taste ist gedr  ckt   SL2 INVALID PARAMETER   Parameter Number ist nicht g  ltig           Anmerkung    Bevor diese Funktion verwendet werden kann  muss SL2_Init    aufgerufen werden     Beispiel    Wenn Key 1 gedr  ckt ist  wird die AVR LED 1 eingeschaltet  ansonsten bleibt sie dunkel        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 4 SANDBOXS2_LIB    153       int main               uint8_t State   SL2_KEY_NOT_PRESSED                      function that has to be executed in every appli          cation to initialize the interface with the FPGA    SL2 Init       while 1           State   SL2 AvrGetKey  SL2 KEY 1         if  State    SL2 KEY       _PRESSED           SL2_AvrSetMsgLed              SL2  MSG LED 1  SL2 MSG LED STATUS ON                 else     SL2_AvrSetMsgLed           SL2  MSG LED 1  SL2 MSG LED STATUS OFF                    return 0     9 4 4 SL2_AvrWaitOnKey          uint8 t SL2 AvrWaitOnKey   in  uint8 t Number     Beschreibung    Blockiert so lange die Abarbeitung              in  uint8 t State     des Programmes  bis ein Taster gedr  ckt oder losgelassen wird        Parameter   Bedeutung                   Number Gibt den Index des Tasters an  auf den gewartet werden soll  Kann folgende Werte  annehmen  51 2 KEY 
66.  diesen Schritt ausreichenden Hilfsmittel  Zuerst spannen Sie die Pla   tine     daher die Gummi  oder Filzschoner     in den Schraubstock  Bitte keine Gewalt anwenden   da dies zur mechanischen Zerst  rung der Leiterplatte f  hren w  rde  Dann tragen Sie ein Flussmittel  ausreichend dosiert auf die drei L  tpads der Stiftleiste auf  Anschlie  end wird L  tpad f  r L  tpad mit  dem L  tkolben erw  rmt und die einzelnen Stifte werden     wieder ohne Gewaltanwendung     mit  einer Zange herausgezogen  Abb  C 3  rechts   Die Zange k  hlt den Stift und damit die L  tstelle stark  ab  Daher sollte man den Stift erst greifen  wenn das Lot fl  ssig geworden ist und dann unmittelbar  herausziehen        Abbildung C 3  Links  Stiftleise des BATT Anschlusses  Rechts  Stift f  r Stift wird die Stiftleise ausge   l  tet     Nachdem die Stifte entl  tet sind  wird mit einer Entl  tsaugpumpe das restliche Altlot aus den Bau   teill  chern entfernt  In Abb  C 4 ist das gew  nschte Ergebnis zu sehen    An die Stelle wo sich die Stiftleiste befand  wird nun ein handels  bliches Servokabel angel  tet   Abb  C 5   Hierbei die Farben der einzelnen Adern nicht vertauschen  Schwarz an GND  au  en   rot  an die Versorgungsspannung  Mitte   wei   an den freien Anschluss  Die Farbkodierung des Signalan        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    233          Abbildung C 4  Links  Die BATT Stiftleiste ist vollst  ndig entfernt  Rechts  Das Altlot wurde ebenfalls  entfernt     schlusse
67.  e                    SAUER  ZEEE    1024   0 988       xs A     3          aee   Us 512   0 732 ms  0   0 476 ms      512   1024   1536   2048   2560   3072   3584   4095 gt  256   768 1280 1792 2304 2816 3328 3840  Bogenma    rad 1024    O 28 65    57 30  85 94  114 59  143 24  171 89  200 54  229 181      14 32   42 97  71 62  100 27  128 92 157 56  186 21  214 90   Winkel in Grad  1             Abbildung 7 9  Linearisierungseinheit mit einstellbaren St  tzstellen Phi2PwmTable 0  bis  Phi2PwmTable 16   Die St  tzstellen lassen sich entlang der strichlierten Linien verschieben  in   dem entsprechende Werte zwischen 0 und 4095 f  r jede der St  tzstellen eingetragen werden  Die  Steigung der Kurve muss an jedem Punkt gr    er oder gleich 0 sein  Folgewerte der Tabelle m  ssen also  stets gr    er oder gleich ihrem Vorg  ngern sein  Werte  die zwischen den St  tzstellen liegen  werden  mittels linearer Interpolation errechnet  Insgesamt ergibt sich eine Umrechnungsfunktion  wie sie im Bild  als Lininenzug dargestellt ist        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    98 7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP       7 6 0 1 Registerfeld Phi2PwmTable 0   Phi2PwmTable 16     Die 17 Register Phi2PwmTable 0  bis Phi2PwmTable 16  enthalten die Werte der Funktionstabelle   welche zur Korrektur der Servokennlinie dient  Jeder Wert stellt eine vorzeichenlose 12 Bit breite  Bin  rzahl dar  H  here Tabelleneintr  ge m  ssen gegen  ber niedrigeren Eintr  gen gleich oder gr
68.  ead    46  3 Energieversorgung 48  34  Akkuzellen  22222222525 ok nern eS ET back 49  4 2  JEE         i he de        aee ES Lap Oe Tac de a o 49       SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX          6 INHALTSVERZEICHNIS         Kuba  22220 0242 424544   cT 49  34 Eim Ausschalter 22       2  2         2    245224    50  3 9                   lt   s esra eaii Soo Rm dad Meh Rex a      51  3 6 Verpolungsschutzschaltung                                 52  3 7 Spannungsrepelung     2456s co Roe xo y oe x o ER WR      52   3 7 1   Spannungsversorgung der Elektronikkomponenten                52   3 7 2 Spannungsversorgung RC Empf  nger                       53   3 7 3 Spannungsversorgung PS 2 Buchse                        53   3 7 4  Spannungsversorgung des ADCs im Mikrocontroller               53   4 Mikrocontroller Atmel AVR AT90USB1286 7 55  41 Emulation mit dem                                                55  4 2       corn EM s Ra He OS ee Pw      aed PR Ra Gawd ed 55  Mio                   ee he                   eB te                 Ee 57  Aa  INES    Q 2 ee eo A ee          4 57  4 5 External Memory Interface    os oa coca oea eee Roe e    RR Rs 57  46 Einstellung der Fuses des                                     57  47 Update der Software des AVR Mikrocontrollers                      58  4 7 1 USB Bootlodder    lt a oa bos ee 02 45 00 RR REGRESO S 58   4 7 2  Software Update mittels Atmel AVR Studio und JTAG ICE               61   4 8 Atmel AVR Studio und W
69.  gStrmUSB   Hello  World  Nn     fprintf gStrmUART   Hello  World  Nn                  never return  loop forever  for       return 0     2 4 2 3 Bemerkungen    Die gesamte Hexapod Softwarebibliothek ist in einzelne Module aufgeteilt  Jedes Modul ist einer  bestimmten Aufgabe zugeordnet  Alle Dateien eines Moduls be nden sich in dessen Ordner  z B   lib uart    Um die Funktionen eines Moduls zu verwenden  bedarf es drei Schritten  Erstens   inkludieren der Header Datei  z B   include  uart h    damit die Funktionen ben  tzt werden  k  nnen  Zweitens  initialisieren des Moduls  z B  uart_init   dazu muss die jeweilige Initialisie   rungsfunktion aufgerufen werden  Im dritten Schritt muss dem Kompiler noch mitgeteilt werden  dass  das Modul im aktuellen Projekt verwendet wird  Hierzu werden dem Projekt alle Dateien des Moduls  hinzugef  gt  Um Funktionen einzelnen Modulen zuordnen zu k  nnen  besitzt jede Funktionen einen  eindeutigen Pr   x  z B  uart_   Die in diesem Beispiel verwendeten Module sind folgende        SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    2 4    HELLO WORLD    IN DER SANDBOX VERSION    31             Modul Pr   x  uart uart  uart_usb uart usb    SandboxS2Lib SL2_    Da einige Module  nterrupts verwenden m  ssen diese aktiviert werden     Die beiden Variablen gStrmUSB und gStrmUART zeigen auf Strukturen die jeweils ein  Ein Ausgabe Ger  t repr  sentieren  Dadurch k  nnen mit den selben Funktionen unterschiedliche  Datenstr  me gelesen oder gesc
70.  im  EEPROM abgelegt werden  Siehe dazu     avr libc    Manual Kapitel    EEPROM handling        9 8 20 RC SetServoTuneFine    inline void RC SetServoTuneFine  in        16 t Steps        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    188    9 SOFTWARE FUNKTIONSBIBLIOTHEK       Beschreibung    Erm  glicht die Ver  nderung der Pulswiederholungszeit der PWM Signale  siehe Abschnitt 7 5 5 auf  Seite 96 f  r eine genauere Beschreibung                        Parameter   Bedeutung  Steps Anzahl der 0 375 us Zyklen  Die L  nge des Pulswiederholungszyklus ist von  diesem Wert abh  ngig   R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Diese Funktion ist bei der Programmierung von Laufmustern nicht erforderlich    e Bevor diese Funktion verwendet werden kann  m  ssen SL2_Tnit    und      Init    aufge   rufen werden     Beispiel    siehe Beispiel der Funktion      SetServoTuneCoarse       9 8 24 RC SetServoTuneCoarse    inline void RC SetServoTuneCoarse  in  intl16 t Steps     Beschreibung    Erm  glicht die Ver  nderung der Pulswiederholungszeit der PWM Signale  siehe Abschnitt 7 5 5 auf  Seite 96 f  r eine genauere Beschreibung                        Parameter   Bedeutung  Steps Anzahl der 2 625 us Zyklen  Die L  nge des Pulswiederholungszyklus ist von  diesem Wert abh  ngig   R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Diese Funktion ist bei der Programmierung von Laufmustern nicht erforderlich    e Bevor diese Funk
71.  include  lt stdio h gt      include  lt avr interrupt h gt    include  uart h    include  uart_usb_lib h        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 5 SCHNITTSTELLEN UND DATENSTR  ME  USB UND              161       V EE EE EE EU EE EE ESL LUE AE E     global variables definitions   Wa UT PE E EE EE EVE ED DEDE ERE DE LR ET AALS    global pointers to stream objects   FILE   gStrmUSB    FILE   gStrmUART                 AERE        AERE AT AAA LTD SAA AID IAAI                                                          ZZ functions    LEIA    LUUA LUUAL UUL 2 TIAL ADELA IAAL AIA EEN      stream I O wrapper functions                   int strm uart putc char c FILE  5   uart putc c  return 0      int strm_uart_getc  FILE xs   return  unsigned char uart  getc       int strm usb putc char c FILE   5   uart usb putchar c  return 0     int strm usb getc FILE   5   return  unsigned char uart  usb getchar             do all the initialization stuff here  void Init  void         initialize usb   uart usb init         initialize uart  uart init  UART CALC BAUDRATE  38400            create stream and attatch getc putc functions  gStrmUSB   fdevopen strm usb putc strm usb             gStrmUART   fdevopen strm uart putoc strm uart  getc        enable interrupts  sei              program entry point  int main  void       char       ine i   char str 128        initialize system  Init         all functions work with gStrmUSB and gStrmUART    print message to both devices  fpri
72.  kann die  Option    Erase Device Before Programming    deaktiviert werden  Ist dies der Fall  kann eine weitere  HEX Datei in den Flash Speicher des AVR geladen werden  ohne die bereits dort vorhandene Datei zu  l  schen  Allerdings sollte gew  hrleistet sein  dass die beiden Dateien keine   berlappenden Speicher   bereiche verwenden    Ist eine der Dateien der Bootloader und die zweite ein Applikationsprogramm  so ist dies norma   lerweise nicht der Fall  da der Bootloader am oberen Ende des Speichers angesiedelt ist  8 KByte   so  dass die unteren 120 kByte f  r das Applikationsprogramm zur Verf  gung stehen    Vor der Programmierung der ersten Datei  z B  des Bootloaders sollte allerdings der Flash Speicher  des AVR explizit vom AVR Programmer aus gel  scht werden  Button   EraseDevice         4 8 Atmel AVR Studio und WinAvr    Der eingesetzte Mikrocontroller AT90USB12806 7 ben  tigt das Atmel AVR Studio in einer Version  nicht   lter als 4 13  http    www atmel com dyn products tools  card asp tool  id 2725  und die Compiler Debugger Suite WinAvr  http    winavr sourceforge net    nicht   lter als Version 20070525        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    4 8 ATMEL        STUDIO UND WINAVR 63         JTAGICE            Abbildung 4 10  Der    AVR Program   mer     welcher aus dem AVR Studio her   aus gestartet werden kann  Der Baustein  AT9OUSB 1287 ist eingestellt und die Da   tei TryI rq  hex ist ausgew  hlt           SVN 408  PFAFF  SEPTEMBER 20  200
73.  mm   Steon   I            und die Verbindung wurde auf             genommen             Ist die SandboxS 2 mittels USB Kabel      den PC angeschlossen und eingeschaltet  so kann  mit dem Men  entrag Settings     Communication     USB die Verbindung zum Bootloader im AVR   Mikrocontroller aufgenommen werden  Bevor die Verbindung hergestellt wird  erscheint ein Fenster   desen Button    Open    angeklickt werden muss  Es sollte kein JTAG ICE Mk II gleichzeitig mit dem  USB Kabel an der SandboxS 2 angeschlossen sein  Das Ergebnis der letzten beiden Schritte schl  gt  sich entsprechend Abbildung 4 8 im Screenshot nieder    Nun kann eine Programmdatei f  r den Flash Speicher des Mikrocontrollers mit dem Men  punkt  File     Load HEX File    ausgew  hlt und geladen werden  Um diese in den Mikrocontroller zu   ber   tragen  kann beispielsweise der Button Run links unten im Fenster angeklickt werden  In der Abbil   dung 4 9 wurde dies f  r die Datei TryIrq hex getan    Das Programm be ndet sich nun bereits im Flash Speicher des Mikrocontrollers  Ausgef  hrt wird  vom AVR aber nach wie vor der Bootloader  der sich ja ebenfalls im Speicher be ndet  Will man das  eigene soeben geladene Programm ausf  hren  gibt es zwei M  glichkeiten  Anklicken des Button Start  Application oder  besser  Aus  und Einschalten der SandboxS 2       Flip    eignet sich neben der Programmierung des Flash Speichers im Mikrocontroller auch zur  Programmierung des EEPROM Speichers  Hierzu wird der Button Selec
74.  negativen N Kanal MOSFET  Akku   Source Drain Polung  spannungspol beachten                     VBAT              ar  LOAD F   II  e Spannungsabfall                         111 bei korrekt gepolter       Akkuspannung   a  Prinzip  b  Realisierung    Abbildung 3 6  Verpolungsschutz f  r hohe Str  me auf Basis eines Leistungs MOSFETS  Links die Prin   zipschaltung  rechts ein Ausschnitt aus dem Schaltplan der SandboxS 2     einer Diode einen Leistungs MOSFET mit niedrigem Drain Source Widerstand    Der Stromfluss durch Drain und Source geschieht im Normalbetrieb in Richtung der internen Frei   laufdiode  Das Gate des Transistors ist mit der positiven Akkuspannung verbunden  Bei falscher Po   lung ist die Spannung Vgs negativ  wodurch der Transistor sperrt  Auch die Freilaufdiode leitet nicht   Die Spannung  welche am Durchlasswiderstand des MOSFET abf  llt  ist erheblich kleiner als bei  einer Diode  Die Verlustleistung sinkt hierdurch ebenfalls    Eingesetzt wird der MOSFET Si4378DY von Vishay Siliconix  Im Geh  use 508 wird ein Durch   lasswiderstand von 2 7 mQ erreicht  Bei einem Strom von Ips   10   ergibt sich daher ein Span   nungsabfall von 27 mV und ein Leistungsumsatz von 270 mW  Dieser Strom wird aber nur in Extrem   f  llen und auch dann nur kurzzeitig erreicht    A Erst hinter dem Verpolungsschutz d  rfen Kondensatoren mit Polung zwecks zus  tzlicher Span   nungsgl  ttung angeschlossen werden     3 7 Spannungsregelung    3 7 1 Spannungsversorgung der Elektronikkomp
75.  sowohl am Wert 0 in NrOfCordicToDo als auch  am Wert des Interrupt Flags IFCord  siehe Abschnitt 7 2 1 4  erkennbar  Dieses Interrupt Flag wird  gesetzt  sobald der Wert von NrOfCordicToDo von 1 nach 0   bergeht    Das Interrupt Flag IFCord kann dar  ber hinaus auch einen Interrupt Request auf der Leitung  INTO ausl  sen  um dem Mikrocontroller die Fertigstellung des Auftrages mitzuteilen  Ein Inter   rupt wird vom Interrupt Flag ausgel  st  wenn das Bit ImCord im Register IrqMaskRcRxCtrl  Ab   schnitt 7 13 1 1  den Wert 1 tr  gt  Hat es den Wert 0  so wird die Ausl  sung eines Interrupt   Requests unterbunden        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    126 7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP       Ein  und Ausgabewerte des CORDIC Algorithmus                Version Rotationsmodus Vektormodus   di   sign z    Zn  gt  0   di      sign x y    Un  gt  0      C K cir  z cos z     ysin 2  x C Kri   y          zirkular Y QR Keir y cos z   z sin z  Y QR 0  D D  I I       0 z C z   arctan     sin a   cos a  arctan a   Va    b2  AL       a  jb a jb    A B  x    x x    x  H S H 5  linear R R  inear b y az D 0  I I  7 o 0 7          Tz A  Ic Ku   z cosh z     y sinh z  x      KV     y          hyperbolisch    js Knyp y cosh z   z sinh z  y    0         E C 0      z   artanh z  sinh a   cosh a  artanh a   va      b              Tabelle 7 37  Verschiedene Modi und Koordinatensysteme  K REUZGRUBER  2007    Die Berechnungen weisen je nach dem gew  hlten Koordinatensyst
76. 00 initialisiert  Am Anfang des  RAM Bereichs kann eine Copyright Message ausgelesen werden    Um gegen  ber zuk  nftigen Ver  nderungen im Funktionsumfang des HSSE Robotics Chip flexibel  zu sein  wird dringend empfohlen  den Softwareentwurf keinesfalls auf die vollst  ndige Verf  gbarkeit  der 2kByte RAM zu st  tzen        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    124    7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP       7 22 CORDIC Koprozessor    In der Robotik spielen trigonometrische Funktionen eine wichtige Rolle etwa bei der Transformation  von Koordinatensystemen oder der Berechnung der inversen Kinematik eines Roboters    Zur Berechnung der Werte trigonometrischer Funktionen gibt es unterschiedliche Methoden  die al   le auf einer schrittweisen Ann  herung an den gesuchten Funktionswert beruhen  Jeder Schritt verbes   sert die Genauigkeit der L  sung  Innerhalb eines solchen Schrittes sind zwar ebenfalls mathematische  Berechnungen notwendig  diese sind aber relativ einfacher Natur  meist handelt es sich um Additionen  und Multiplikationen    Die bekannten Methoden unterscheiden sich stark im Aufwand der f  r jeden Rechenschritt not   wendig ist und auch in der Anzahl der Schritte  die zur Erreichung einer gew  nschten Genauigkeit  erforderlich sind  Beide Eigenschaften zusammen entscheiden   ber die Eignung einer Berechnungs   methode zur Umsetzung in Hardware oder auch Software  Die bekannteste Methode zur Berechnung  von Funktionen wie cos a oder arctan y 
77. 007    6 3 FPGA KONFIGURATION    77       Nun beginnt das Kopieren der Dateien  das kurze Zeit darauf mit einem weiteren Infofenster unter   brochen wird  Nach einem Klick auf Met  erscheint ein Auswahlfenster wie in Abb  6 3  Nachdem  die Optionen wie in der Abbildung erkennbar umgestellt wurden  wird der Driver mit Klick auf         stall installiert  Nat  rlich fragt der Installer nochmals nach  ob man sich auch ganz sicher ist  Mit  Klick auf    Close    wird das Fenster wieder geschlossen und der Installer fragt nach  ob er den Rechner  nun neu starten darf um die Installation abzuschlie  en  Bevor ispVM System verwendet wird  sollte  man diesen Neustart unbedingt durchf  hren     Download der Konfiguration mit ispVM System  Die nachfolgende Beschreibung wurde f  r ispVM System in der Version 16 4 1 erstellt  Die Versions   nummern dieses Programms schreiten rasch voran  so dass es unm  glich ist  bei jeder neuen Version  auch die Beschreibung zu renovieren  Sollte die Beschreibung nicht mehr zur aktuellen Version pas   sen  sind wir f  r einen Hinweis dankbar  http    forum hexapod at     Nach Starten von ispVM System ist das Hauptfenster  Abb  6 4 zu sehen      f  LSC ispYM   System   Chain configuration     D  xi  Fie Edi View Project ispTools Options Window Help    D    eso  Y EG EB rr SE EZ   KR                      bh  gt  ER       7 Chain configuration      index   Devicelit   FileName IR Lenglh  Operation L         Add New Device by selecting Edit  amp dd New Dev
78. 08  PFAFF  SEPTEMBER 20  2007    55       4 Mikrocontroller Atmel AVR AT90USB1286 7    Der Mikrocontroller Atmel AVR AT90USB1286 7 wird in einem sehr ausf  hrlichen Datenblatt be   schrieben  dass von der WWW Seite der Firma Atmel geladen werden kann  http    www atmel   com dyn resources prod  documents doc7593 pdf      4 1 Emulation mit dem JTAG ICE Mk Il    Zur Emulation kann der Atmel JTAG ICE II verwendet werden  der   ltere JTAG ICE kann f  r den  eingesetzten Mikrocontroller nicht benutzt werden   Um diesen Emulator verwenden zu k  nnen  wird  ein Zugriff auf den JTAG Port ben  tigt  der entsprechend Abb  4 1 auf eine 10 polige Stiftwanne    m   AVR               fo o                                    Abbildung 4 1  Der JTAG Port des        ist auf einer 10 poligen Stiftwanne zug  nglich     gef  hrt ist    Der JTAG Port ist beim AT90USB1286 7 nicht konform zum JTAG Standard SOCIETY  1993   ausgef  hrt  da die verwendeten Anschlusspins eine Zweitfunktion besitzen  F  r die Anwendung auf  einem mobilen Roboter ist diese Zweitfunktion unter Umst  nden interessant  da hier die Eing  nge  ADC4 ADC7 des A D Umsetzers verf  gbar sind  Die Anschlusswanne f  r den JTAG ICE    erf  llt  also unter Umst  nden eine Zweitfunktion zum Anschluss von Sensoren     4 1 0 1 Anschluss des JTAG ICE Mk      an die SandboxS 2    Im Bild4 2 ist der Anschluss des          ICE Mk II an die SandboxS2 dargestellt   Achtung  Das Folienflachbandkabel des JTAG ICE Mk II ist leider sehr emp ndlich 
79. 1 2 Inverse Kinematik    Mit der inversen Kinematik lassen sich die Winkel bei gegebenem Endpunkt berechnen  Abbildung  8 2   Es wird also vom Endpunkt zur  ck zum Ursprung gerechnet  In entgegengesetzter Richtung zur  Vorw  rtskinematik        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    134 8 INVERSE KINEMATIK       Am Beispiel des Hexapod bedeutet das  dass der Fu  punkt bekannt ist  jedoch nicht die Servowinkel   Die Berechnung ist etwas komplexer wie die der Vorw  rtskinematik  Da oft mehrere Winkelkombina   tionen zu dem selben Punkt f  hren        INVERSE KINEMATICS         T    Handle             Abbildung 8 2  Inverse Kinematik  der Endpunkt ist bekannt  die Winkel werden berechnet     8 2 Inverse Kinematik des Hexapods    In dieser Implementierung f  r die Mechanik des Hexapods    Captain Ahab  werden die Winkel durch  folgende Gleichungen bestimmt                  arctan  2   8 1   x  Lp       cos Po   y sin Yo            8 2   Up   y cos  o      x sin Yo   8 3   2 2 2 2  pa               8 4   2a1aa  r   c  p   gt              8 5   C2  V1                arctan 53   8 6   D  2 ag   sin y2   p     arctan             arctan  8 7   Lp a     ag   cos q     In diesem Kapitel werden anstatt der deutschen Begriffe fiir die einzelnen Elemente eines Beins die  in der Robotik und Insektenkunde gebr  uchlicheren  lateinischen Begriffe verwendet        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    8 3 HEXAPOD KALIBRIERUNG 135       e Coxa  H  fte bzw  oberste
80. 150                             a          OE ok e he 151   942 SL2_AvrSetMseled   ek ee ee ee ee         151   94  SLA ett ees 2    cote um sm ee ae GR EUROS ee eee 152   9 4 4 SL2 AvrWaitOnKey                                153   9 4 5 SL2 ExtAvrSetPinMode                              154   9 4 6 512_                                                         155   9407 52 Keen ale  A d s u q 2 ooo 552592      155   215 SOLI GEC          uuu xo      S Rodeo eremum ee New 156   9 49 SL2 GetCurrentLowAmpli cation                        157  9 4 10 SL2 GetCurrentHighAmpli cation                        158  94 1 SLZ GetBaiiery Voltage  lt   oe 22  00 20 x EROR n X Ro Qa 158  9 4 12 SL2_ExtAvrGetAdcValue                             159   9 5 Schnittstellen und Datenstr  me  USB und UART                     160  ODE ic                                                           162         warnt inito ee mo my E RE                         US 162   902 uat amt doubl   speed  sss s saves        oe m o eos 164               o ee na ee ee        164   96A       pus  eh E ARERR                     165        MEGA 2       L   e toba           meon                    bec        ko      165  966 WAS pK          ae Roy Am be QS E Q a 166   QOO did ge de Tull 22220202 soo    9  REX REG SS 166   97 USB UART L22uuoauce uoce       552           Rees                            ES 167  9 7 1 Wart usb init a not w s o RR      s 167   772 qat usb        225 22 54 NEE ale 169   SONS                    
81. 1FF 32 Phi2PwmTable 7  Servo ng 1996  0x8200  2ng   0x823F 32 Phi2PwmTable 8  Servo ns 2306  0x8240  2ng   0x827F 32 Phi2PwmTable 9  Servo ns 2598  0x82804 2ng   0x82BF 32 Phi2PwmTable 10  Servo ng 2875  0x82C0  2ng   Ox82FF 32 Phi2PwmTable 11  Servo ne 3160  0x8300  2ng   0x833F 32 Phi2PwmTable 12  Servo ng 3425  0x8340 2n 5   0x837F 32 Phi2PwmTable 13  Servo ng 3690  0x8380  2ng   Ox83BF 32 Phi2PwmTable 14  Servo ng 3953  0x83C0  2ns   Ox83FF 32 Phi2PwmTable 15  Servo ng 3953  0x8400  2ng   Ox843F 32 Phi2PwmTable 16  Servo ng 3953             Tabelle 7 10  Addressraum f  r die Eintr  ge der Linearisierungstabelle  ng ist die Servonummer  0 bis  23      Die St  tzstellen sollten f  r jedes Servo einzeln mittels Messung bestimmt werden  Nur so wird eine  hohe Genauigkeit erreicht  Man kommt jedoch schon durch Messung eines einzelnen Servoexem   plars  dessen Werte der Einfachheit halber f  r alle Servos dieser Bauart eingesetzt werden  auf eine  erhebliche Verbesserung der Genauigkeit        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 6 SERVOLINEARISIERUNG UND  KALIBRIERUNG 99       7 6 1 Vorgehensweise f  r die Servokalibrierung    In Abschnitt 7 3 wurde bereits erl  utert  warum k  ufliche  also reale  Servos nicht die Eigenschaften  eines idealen Servos erreichen  F  r die Robotik w  re es w  nschenswert  das Servo direkt   ber einen  Wunschwinkel im Bogenmaf  also beispielsweise 7 2 steuern zu k  nnen  Der Winkel sollte dann  vorzeigerichtig  also gegen den Uh
82. 2048   200   10 24   gt  11 LEDs  0   10   Data   RC GetServoCurrentPhi  0        skip decimals behind the comma  Data   Data  gt  gt  4       calc the LED to switch on  LedIdx   Data   200   RC SetLedBrightness LedIdx  255         return 0        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 8 ROBOTICSCHIP    185       9 8 13 RC_SetServoRotation    inline void RC_SetServoRotation  in  uint8_t ServoNumber    in  RC_ServoReverse Reverse        Beschreibung    Schaltet die Drehrichtung eines bestimmten Servos um        Parameter Bedeutung       ServoNumber   Nummer des Servos  dessen Modus ver  ndert werden soll  Die Nummerierung  der Servos istin Abb  7 1 auf Seite 81 ersichtlich        Reverse Umkehr der Drehrichtung  Kann entweder auf RC_SERVO_REVERS   oder RC_SERVO_REVERSE_OFF gesetzt werden           Lj    _ ON                   R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Bevor diese Funktion verwendet werden kann  m  ssen 512 Init    und RC  Init    aufge     rufen werden     Beispiel    Die Drehrichtung von Servo 0   ndern wenn AVR Key 0 gedr  ckt wird     int main           proxy function for whole initialization  Init          move servo number 0 to angle 2000  RC_SetGlobalServoMode  RC_SERVO_MODE_PHI_DIRECT    RC_SetServoPhiDirect  0  2000                  while  1        set inverse bit only when key 0 is pressed  if  SL2_AvrGetKey  0     SL2_KEY_NOT_PRESSED                             RC SetServoRotation 0  RC SERVO REVERSE 
83. 2MANUAL TEX    14       2 Erste Schritte    Dieses Kapitel stellt unter den Kapiteln dieses Handbuchs insofern eine Ausnahme dar  als es den  Charakter eines Tutorials aufweist  Es f  hrt an Hand von Beispielen in die Programmierung des AVR   Mikrocontrollers auf der SandboxS 2 ein    Zu Beginn wird auf die Einrichtung der Entwicklungsumgebung und der Hardware eingegangen   Danach soll ein m  glichst einfaches Programm f  r den AVR Mikrocontroller  das eine der LEDs auf  der Sandbox steuert  erstellt werden  Ebenfalls wird das Erstellen eines neuen Projekts veranschau   licht  Das darauf folgende Beispiel soll einen ersten Einblick in die Steuerung mit dem Robotics Chips  geben  Der Hexapod darf erst nach diesem Kapitels zusammengebaut werden  Da jeder einzelne Ser   vomotor kalibriert werden muss     2 1 Systemvoraussetzungen    e Handels  blicher Computer oder Notebook mit USB Schnittstelle  Eine serielle parallele  Schnittstelle wird ebenfalls empfohlen     Microsoft Betriebssystem der Version Windows 2000 oder Windows XP wird vorausgesetzt   Microsoft Windows Vista kann noch nicht verwendet werden  da die Unterst  tzung einzelner  Programme fehlt  Die Entwicklung auf Unix Linux Systemen ist ebenfalls m  glich  wird in  diesem Dokument aber nicht behandelt     e Atmel Entwicklungsumgebung AVR Studio ab Version 4 13  Be ndet sich auf der beigelegten  CD  im Ordner AtmelAvrStudio  Die aktuelle Version kann auch unter http   www   atmel com avrstudio bezogen werden     e WinA
84. 30 334    Walther  J  S   A Uni ed Algorithm for Elementary Functions  In AFIPS 1971  Atlantic City  USA   Proc  Spring Joint Computer Conf  1971  379 385       SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    236       Index    External Memory Interface  57  Fuse  57   Haftungsausschluss  2  JTAG ICE  58    Legende  2  Linearisierung  91    Modellbauservo  87  Nutzungsbedingungen  2     Raumkoordinate  91  Regelkreis  89  Robotikservo  87  89    Servo  87  Servokennlinie  91  Servostecker  92    Zeichenlegende  2       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    e x     x au T             20 Q     OT A   i t  Oo Q           lt         i d    iD o  be So u   x                  QN  A  42          ec   Q Flee   CE ELE                                                                                           2        9v    Hitec HS 3xx                                            mmm                         1 gt                                                                                                                      vk       Ausdrucken der Winkelkalibrierschablone   Die umseitige Winkelkalibrierschablone muss unverzerrt ausgedruckt werden  Im Acrobat Reader  wird hierzu die Seite mit der Winkelschablone aufgeschlagen und mit den Einstellungen    Current  page    f  r den Parameter    Print Range   und   None    f  r den Parameter    Page Handling    ausgdruckt   Ein Beispiel f  r diese Einstellungen ist im nachfolgenden Screenshot zu sehen           audith
85. 6C0 2ns  ng ist die Servonummer   0 bis 23   Nur lesbar     7 5 5 Pulswiederholungszyklus    Die Dauer des Zyklus   in welchem der Puls wiederholt wird  kann mittels der Parameter TuneFine und  TuneCoarse eingestellt werden  Standardeinstellung nach dem Einschalten der SandboxS 2 ist 20 ms   Die Einstellbarkeit der Zyklusl  nge steht im Zusammenhang mit der Abstimmungsfunktionen f  r  die Geschwindigkeit  mit der Bewegungssequenzen vom Servo Sequencer ausgef  hrt werden  Daher  werden die Register f  r diese beiden Parameter im Abschnitt 7 7 1 besprochen     7 6 Servolinearisierung und  kalibrierung    F  r Robotikanwendungen ist die ungenaue und nichtlineare Zuordnung von Pulsl  nge zu Servostell   winkel handels  blicher Servos sehr st  rend  Um sie auszugleichen  enth  lt der HSSE Robotics Chip  eine Linearisierungseinheit  welche die nichtlineare Kennlinie eines Servos mit Hilfe von St  tzstellen  und zwischen diesen St  tzstellen mittels linearer Interpolation ausgleicht    Die Funktionsweise dieser Einheit ist in Abb  7 9 dargestellt  In die Linearisierungseinheit wird ein  Zahlenwert im Bereich von 0 bis 4095 eingegeben  der im Parametersatz des Servos als CurrentPhi   also momentaner Winkel bezeichnet wird  Allerdings handelt es sich hierbei nur um den gew  nschten  Winkel  nicht um den Winkel  der tats  chlich vom Servo eingenommen wird    Die Linearisierungseinheit berechnet anschlie  end auf der Basis der St  tzstellen Phi2PwmTable 0   bis Phi2PwmTable 16  mittels 
86. 7  9 8 19 RC SetGlobalServoAttributesTable                         187  9820      SetServoTumePme  gt s esr   u a s OS RR oy Romo 187  9521 RC SetServoluneC ees  eu Ls eu kem      wo o wow y W 188  0922 RC OGePsDaH 2 2  mag 99    NU Qul            694  EA ES 189  0 86 23 RC SetRxControl    lt  se c sew o   ooo k a s RR ehe 190  98521 RC        a co ee oe s es Reo      oq os 505  475  0 00   191  9 8 25 RC GetGamePadButtons                             192  9 8 26 RC GetGamePadJoys  ckData                           193  9 8 27 RC GetGamePadD    t                2  2 2252           194  9 8 28 RC_SetBuzzerVolume                               195  95829 RC SetBuzzerPhasebhsgh  lt  os u D ee ee Q W 195  9 8 30      SetBuzzerPhaseLoW      224 99 a      en G QUN 3 196  9 8 31 RC_SetCordicCalculationArguments                       197  9 8 32      5                                                                       198  9 8 33 RC                                                                198  9 8 34 RC GetCordicCalculationResult                 lees 199  9 8 35 RC_GetRoboticsChipVersion                           200  9 8 36 RC GetOlobalTud  t               2                200  98 27 RC                  201   99 Inverse K  nemalik                  ws    w Ba oso   Xo S QU QU        ee W 202            JE DUE ans oco et S Rue o AE    E AAS vr pg does 202   9 9 2      CalculateInverseKinematicsCoxa                       203   993      SetLesMovementCoxa   sco x e w RR Rx omo    
87. 7 SBXS2MANUAL TEX    64       5 On Chip Peripherie des Atmel AVR AT90USB1286 7    Der Mikrocontroller Atmel AVR AT9OUSB1286 7 weist eine reichhaltige Auswahl von Peripherie   einheiten auf  die auch zu einem Gro  teil auf der SandboxS 2 verwendet werden  Abb  5 1   In die     o0  Servo  Servo2 Servo   Se opd Servo5   Servos Servo  Servos Servos Em           11  CX I  epp I        et               rien Een Dn tex  P lcs ii iss is     557  en  j                Sec    4 NIMh or   71 d NiMh or d A         ucion                             od       rm j      07 E                     KeyFpga1    ied     i        en  ne      605    48     HSSE    HAGENBERG            E 4    io    ww  4 E      2       E a         F ri          Sr E me reo SE n    isi    Lu                           Wr    CFS OF    CFS CSS GEE   Cte EGE SS KS KS ESS 6 5         Servoi  5        15 Servo15 5        14 5        13           12                Abbildung 5 1  Der Mikrocontroller Atmel AVR und seine Peripherieeinheiten sind hervorgehoben   sem Kapitel werden diese Peripherieeinheiten im Einzelnen vorgestellt  Weitergehende Informationen    nden sich im Datenblatt des Mikrocontrollers  http    www atmel com dyn resources   prod_documents doc7593 pdf  und in den zahlreichen Application Notes der Firma Atmel     5 1 USB Function Controller    Der Mikrocontroller verf  gt   ber eine eingebaute USB Schnittstelle nach USB Standard 2 0 f  r den  Function Betrieb im Modus Full Speed  Die USB Buchse vom Typ B ist   
88. 8  887  1158  1425  1708  1996  2306  2598  2875  3160  3425   3690  3953  3953  3953   0      SERVO REVERSE           default    51  362  628  887  1158  1425  1708  1996  2306  2598  2875  3160  3425   3690  3953  3953  3953   0      SERVO REVERSE           default    19  279  545  822  1102  1399  1694  2005  2340  2573  2867  3140  3413   3680  3931  3931  3931   115 RC SERVO REVERSE           Servo  04    10  299  569  843  1122  1403  1698  2006  2310  2600  2878  3154  3416   3673  3948  3948  3948   56      SERVO REVERSE           Servo  05    11  314  579  842  1134  1419  1699  1994  2279  2545  2818  3089  3359   3633  3903  3903  3903    76 RC SERVO REVERSE           Servo  06    62  382  661  944  1225  1508  1787  2082  2384  2680  2924  3181  3424   3662  3898  3898  3898   107 RC SERVO REVERSE           Servo  01    76  396  657  901  1184  1452  1749  2033  2332  2625  2892  3158  3410   3672  3944  3944  3944    18 RC SERVO REVERSE           Servo  02    1  269  533  797  1065  1344  1641  1954  2256  2548  2844  3130  3409   3673  3946  3946  3946   146 RC SERVO REVERSE ON    Servo  03                                                                                                             d G  i ou d   d e d oe d o d OO oe d o ou Au d oe 1                            H         AA AAA AAAI ALD AA AAA ATLA UAA AA AAA AA LDA TA AAA ALD AAA ALA                 IAAT AL        GG     functions    2                              LAL E TAAL TAMPA 7 ALATA A ILI ATL
89. 9       R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung   Bevor diese Funktion verwendet werden kann  m  ssen SL2_Init    und RC Init    aufgerufen  werden und der CORDIC Interrupt muss aktiviert sein    Beispiel    Siehe Beispiele in Abschnitt 9 8 34 auf Seite 199     9 8 34 RC_GetCordicCalculationResult    uintl6_t RC GetCordicCalculationResult    in  uint8_1   in  uint8_1    Register   NumberOfCalculation           Beschreibung    Liest das Ergebnis einer CORDIC Berechnung aus dem RoboticsChip        Parameter Bedeutung   Register Auswahl des Registers aus dem gelesen werden soll  kann die Werte   x   X    y    Y     z    oder    Z  annehmen    NumberOfCalculation   Index der Berechnung in der Queue                       R  ckgabewert       R  ckgabewert   Beschreibung  Result Ergebnis der CORDIC Berechnung                    Anmerkung    Bevor diese Funktion verwendet werden kann  m  ssen SL2_Init    und RC Init    aufgerufen  werden und der CORDIC Interrupt muss aktiviert sein     Beispiel    Berechnet den Arcustangens von        int main  void      uintl16 t Result   0        initialize all modules  Init       while  1           SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    200 9 SOFTWARE FUNKTIONSBIBLIOTHEK          calculate atan pi  by using the CORDIC algorithm      in this mode  the CORDIC algorithm calculates atan y x   so      y will be set to pi and x will be set to 1      for a higher precision of the argument  both values are mul
90. 90USB1286 7       5 3 2 Spannungsmessung    Der ADC des AVRs wird neben der Strommessung auch zur Messung der Akkuspannung herange   zogen  Die entsprechende Schaltung ist in Abb  5 11 zu sehen  Die Spannung wird   ber einen Span                       zum ADC Eingang  SH ADC3 des AVR      Abbildung 5 11  Schaltung zur Aufbereitung der Span   eb nung f  r die Messung durch den ADC des AVR     nungsteiler auf den Messbereich des ADCs im AVR herabgeteilt  da dieser nur von 0 3 3 V geht  die  Akkuspannung jedoch unmittelbar nach dem Aufladen knapp   ber 7 V liegen kann  Das Messprinzip  des ADC im Mikrocontroller erfordert einen geringen Ausgangswiderstand der Quelle  Diese wird  jedoch nur kurzzeitig belastet  Daher kann ein Kondensator zur Stabilisierung herangezogen werden    Da die Akkuspannung im laufenden Betrieb gemessen wird  ergibt sich die M  glichkeit  die Entla   dekurve der Akkus aufzuzeichnen und den Zusammenhang zum dem entnommenen Strom festzuhal   ten     5 4 Taster    Am Mikrocontroller sind zwei Tasten laut Abb  5 12 zur Ausl  sung beliebiger Aktionen angeschlos                        i e a        e   m         on    L   A     KeyAvro BR  vi KezAvr                                           m  L3    E                           Abbildung 5 12  Universell einsetzbare Taster am AVR     sen  Die Tasten sind   ber einen Serienwiderstand als Schutzschaltung angeschlossen  so dass ein Tas   tendruck auch bei fehlerhafter Programmierung des AVRs keine Zerst  rung des Ba
91. A APES LIA FOE ALIN LUAT AU ALL                                        IIT IIA DEEL  FILE   gStrmUSB   NULL   FILE    gStrmUART   NULL                                                                                         TAT ATA EE AE EE LAAT          TLE AT TES  f f fubctions    ZE E E EIE AA AAAS AT                  stream I O wrapper functions                   int strm_uart_putc  char c FILE  s   uart_putc c  return 0     int strm_uart_getc  FILE xs   return  unsigned char uart_getc       int strm usb putc char c FILE xs   uart usb putchar c  return 0     int strm usb getc FILE    5   return  unsigned char uart usb getchar              SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    30    2 ERSTE SCHRITTE         do all the initialization stuff here  void Init  void            initialize sandboxs2 AVR peripherals  SL2 Init         initialize usb  uart usb init          initialize UART  set baud rate to 38400  uart init  UART CALC BAUDRATE  38400            activate stream I O  gStrmUSB   fdevopen strm usb putc strm usb getc    gStrmUART   fdevopen strm uart putc strm uart                  enable interrupts  sei         program entry point  int main  void            Initialize system  Init          wait on key   SL2 AvrSetMsgLed SL2 MSG LED 0  SL2_MSG_LED_STATUS_ON    512 AvrWaitOnKey SL2 KEY 0  SL2 KEY PRESSED    SL2 AvrSetMsgLed SL2 MSG LED 1  SL2 MSG LED STATUS ON                                                                       print welcome messag  fprintf
92. AL TEX    44 2 ERSTE SCHRITTE         wait until key gets pressed                                           while    SL2_AvrGetKey  SL2 KEY 0     512 KEY NOT PRESSED    amp  amp   SL2 AvrGetKey SL2 KEY 1     SL2 KEY NOT PRESSED        wait some time to debounce key     delay  ms  5        evaluate keys     case 1  both keys pressed  if  SL2 AvrGetKey SL2 KEY 0     SL2 KEY PRESSED    amp  amp   SL2 AvrGetKey SL2 KEY 1     SL2 KEY PRESSED                                         wait until keys get released                                              while  SL2 AvrGetKey  SL2 KEY 0     SL2 KEY PRESSED       SL2 AvrGetKey SL2 KEY 1     SL2 KEY PRESSED        wait some time to debounce key     delay ms  5               return SELECT        case 2        0 pressed  else if SL2 AvrGetKey SL2 KEY 0                      SL2_KEY_PRESSED          wait until key gets released  while SL2 AvrGetKey SL2 KEY 0     SL2 KEY PRESSED      wait some time to debounce key    delay ms  5    return INCREMENT        case 3  keyl pressed  else if SL2 AvrGetKey SL2 KEY 1     SL2 KEY PRESSED                                                             wait until key gets released                                     while  SL2_AvrGetKey  SL2_KEY_1     SL2 KEY PRESSED      wait some time to debounce key  _delay_ms  5         return DECREMENT                 return NO_KEY          program entry point  int main  void        PWM impulse length  uintl6_t pwm   1  lt  lt  11     servo rotation  ServoRotationSta
93. ANUAL TEX    80    6 FPGA LATTICE XP LFXP3K       Detect    das Kabel gesucht werden kann  Ein Test mit abgezogenem Kabel zeigt  dass das fehlende  Kabel mit einer entsprechenden Fehlermeldung quittiert wird  Ist das Kabel angesteckt  passiert bei  Druck auf den Button dagegen  scheinbar  nichts    Daneben gibt es   brigens eine noch        gere Fehlerquelle  Es wurde vergessen  die SandboxS 2  einzuschalten oder deren Akkuzellen sind entladen     6 3 1 2 Embedded Programming  Lattice ispVM Embedded und AVR    Die JTAG Schnittstelle des FPGAs arbeitet mit Logikpegeln und nach einem speziellen seriellen Pro   tokoll  Es ist m  glich  dieses Protokoll in Software nachzubilden und die Programmierung des Flash   Speichers im FPGA von einem Mikrocontroller aus vorzunehmen  Hierzu ist allerdings eine Verbin   dung zwischen dem Mikrocontroller und dem JTAG Port des FPGAs notwendig  Da dieser Port ent   sprechend des vorangegangenen Abschnitts auch an ein Download Kabel angeschlossen werden soll   w  re ein  teurer  Umschalter zwischen der Kabelverbindung und der Verbindung zum Mikrocontrol   ler notwendig  Aus Kostengr  nden wurde hierauf verzichtet  da alternativ auch eine Kabelverbindung    ber den JTAG Port Stecker zum Mikrocontroller hergestellt werden kann    Lattice stellt unter dem Namen ispVM Embedded das Ger  st f  r einen sogenannten JTAG   Sequencer zur Verf  gung  Diese Sammlung von C Programmen kann an die Bed  rfnisse der eige   nen Anwendung angepasst werden  Konkret 
94. AS AP EIS LE      stream I O wrapper functions  int strm uart putc char c FILE   s   uart_putc c  return 0                int strm uart getc FILE   s   return  unsigned char uart getc      int strm usb putc char c FILE  s   uart usb putchar c  return 0    int strm usb getc FILE   5   return  unsigned char  uart_usb_getchar                do all the initialization stuff here  void Init  void         initialize sandboxs2   SL2_Init         initialize robotics chip  BC Init  Js      initialize inverse kinematics  IK Init            initialize usb       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    8 4 INVERSE KINEMATIK TEST    145       uart usb init         initialize uart  uart init  UART CALC BAUDRATI       Gl     38400          clear all LEDs  RC_SetLedClearAll         activate stream I O  gStrmUSB   fdevopen strm usb putc strm usb getc    gStrmUART   fdevopen strm uart putc strm uart getc        enable interrupts  sei         program entry point  int main  void          int8 t i   0       Initialize system  Init          copy the servo attributes table into the RoboticsChip  RC SetGlobalServoAttributesTable P gTable        init position  IK SetLegMovementCoxa  3  140   40  0  IK KNEE UP                    never return  loop forever   for             move leg 3 to  140  40  0   SL2_AvrWaitOnKey  SL2 KEY 0  SL2 KEY PRESSED    for  i  40  i lt  40  1                                  IK_SetLegMovementCoxa  3  140  i  0  IK_KNEE_UP    _delay_ms  20                  move 
95. Abbildung 8 4      Die zuvor gemessenen Werte werden nun von den unten angegebenen idealen Werten abgezogen   Daraus ergeben sich die Offset Werte die f  r die Servo Tabelle ben  tigt werden  Hierbei mu   nat  r   lich auf die richtige Servonummer geachtet werden     Die Offset Werte werden wie folgt berechnet  die zuvor ermittelten Messwerte werden in diesen  Gleichungen als Y Mitte            Min Femur Und P Min Tibia bezeichnet      POffsetCora   Mitte Cora     1609  8 8   POffset Femur     Min Femur     3272  8 9   POffset Tibia   Min Tibia  8 10        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    8 3 HEXAPOD KALIBRIERUNG 137          Abbildung 8 3  Kalibrierung der Coxa Servos        Abbildung 8 4  Kalibrierung der Femur  links  und Tibia  rechts  Servos        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    138    8 INVERSE KINEMATIK       8 3 3 Quellcode    Lv       Workfile z main c    Author    t Christian Raschk amp       2007 08 20    Description  main program  Revision    DEE EE EE EE EE    HH I Y kk e ck            oe o e ob e o e ob e c e oe e oe e oe e e oe e oe e oe e e e S            Date                               E EE PEE EGER E      ET        EE ER               includes  V E A PEU EEUU DERE PUE EAE IDEAE E E E EE                EE PEE E         E              include    include  include  include    include  include  include  include              lt stdio h gt      lt avr interrupt h gt    lt util delay h gt    lt avr pgmspace h gt      S
96. AvrSetMsgLed SL2 MSG LED 0  SL2 MSG LED STATUS ON    SL2 AvrWaitOnKey SL2 KEY 0  SL2 KEY PRESSED                                            print welcome message  printf  gStrmUSB   Running  lights  Nn       En         run  light  run  for           clear all robotics chip LEDs  RC SetLedClearA11       set brightness  RC SetLedBrightness  led  Oxff      delay 160msec    maximum delay time is 32 7625msec    see delay h    delay ms  32      delay ms  32      delay  ms  32               r      delay  ms  32    delay  ms  32    r    if led  gt  11   led   0   else  led         never return  loop forever  for       return 0     2 5 2 3 Bemerkungen    Die Funktionen mit Pr   x      sind Bestandteil des Robot icsChip Moduls  Der Robotics Chip ist  ein eigenes St  ck Hardware  auf der Platine das gr    te Bauteil     Die Funktion  delay ms   kehrt erst nach der angegeben Zeit wieder zur  ck  Dabei gibt es  aber Einschr  nkungen des Wertebereichs  die nicht umgangen werden k  nnen  So ist die maximale       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    2 6 SERVOKALIBRIERUNG MIT WINKELZEIGER 41       Wartezeit auf 32 7625 Millisekunden begrenzt     2 5 3 Projekt   bersetzen    Das fertige Projekt wird nun erstmals   bersetzt  Die Vorgehensweise ist dabei gleich wie in Abschnitt  2 4 3     2 5 4 Programm ausf  hren    Danach kann das Programm ausgef  hrt werden  Die Vorgehensweise ist dabei gleich wie in Abschnitt  2 4 4     2 5 5 Programm testen    Nun wird die Funktion geteste
97. Beschreibung    Sucht die Datei mit dem angegebenen Namen                       Parameter   Bedeutung   File Name   Startadresse des Strings f  r den Dateinamen    Cluster Der Verzeichnis Cluster in dem gesucht werden soll  Dieser Parameter gibt die  Adresse des ersten Clusters der Datei zur  ck wenn diese gefunden wurde    Size Enth  lt die Gr    e der Datei  sofern diese gefunden wurde    Dir Attrib   Attribute des Verzeichnisses    Buffer Zwischenspeicher                   SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 10 SD KARTE 213                               R  ckgabewert  R  ckgabewert Beschreibung  SUCCESSFUL Die Datei wurde gefunden   FILE_NOT_FOUND   Die Datei wurde nicht gefunden   FAILED Mindestens einer der angegebenen Parameter ist ung  ltig oder die SD   Karte wurde nicht korrekt initialisiert   Anmerkung    e Die SD Karte muss eingelegt und initialisiert sein   e Wird der Parameter Cluster auf 0 gesetzt  so wird im Root Directory gesucht     e Bevor diese Funktion verwendet werden kann  muss SL2_Init    aufgerufen werden     Beispiel    siehe Beispiel in Abschnitt 9 10 7 auf Seite 214     9 10 6 fat_read_file       void fat read file   in  uinti16 t Cluster    out  uint8 t   Buffer    in  uint32 t BlockCount              Beschreibung    Liest Daten aus einer Datei        Parameter   Bedeutung   Cluster Erster Cluster der Datei    Buffer Gelesene Daten  Buffer ist ein eindimensionales Array  8 bit Datentyp   welches  mindestens so grof ist wie die A
98. E6   0x87E7 1   ReRxChannel 8   Ox87E8   0  87  9 1   ReRxChannel 9   Ox87EA   Ox87EB 1   ReRxChannel 10   Ox87EC   0x87ED 1   ReRxChannel 11   Ox87EE   0x87EF 1   ReRxChannel 12   Ox87FO   0  87  1 1   ReRxStatus  Ox87F2   Ox87F3 1   Ps2X  Ox87F4   0  87  5 1   Ps2Y  Ox87F6   0x87F7 1   Ps2Buttons  0  87  8   0x87FB 2   Version  Ox87FC   0x87FD 1   reserviert  Ox87FE   Ox87FF 1   GlobalTimer  16 Bit Register     AVR kann schreiben und lesen  0x8800   0x8801 1   NrOfCordicToDo  0x8802   0x8807 3   reserviert  0x8808  2nc   0  8809  2     3    Ein  und Ausgabewert 2 CORDIC Block Nr  nc  Ox880A 2nc   0x880B  2nc 31   Ein  und Ausgabewert y CORDIC Block Nr  nc  0x880C 2nc   0x880D  2nc 31   Ein  und Ausgabewert z CORDIC Block Nr  nc  0x880E 2nc   0  880    2     3    CoordSystem und Mode CORDIC Block Nr  nc  0x8900   Ox8BFF 384   reserviert  16 Bit Bereich     reserviert  0x8C00   Ox8FFF 512   reserviert  8 Bit RAM Bereich            kann schreiben und lesen  0x9000   Ox97FF 2048   RAM  2kByte  16 Bit Bereich     reserviert  0x9800   Ox9BFF 512   reserviert  8 Bit Register            kann nur lesen  0x9C00 1   IrqFlagServo70  0  9  01 1   IrqFlagServo158             SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    132    7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP                            Adr AVR    Ende Words   Beschreibung  0x9C02 1   IrqFlagServo2316  0x9C03 1   IrqFlagsOthers   0x9C04   Ox9FFF 1020   reserviert                      SBXS2MANUAL TEX    SVN 408  PFAFF  S
99. EPTEMBER 20  2007    133       8 Inverse Kinematik    Dieses Kapitel gibt einen kurzen   berblick   ber die Berechnung der inversen Kinematik des Hexa   pods  Die Kinematik  gr   kinema  Bewegung  ist ein Teilgebiet der Mechanik  Sie besch  ftigt sich  mit der Berechnung von Punkten und K  rpern im Raum     Um die inverse Kinematik mit dem Hexapod zu verwenden  mu   dieser zuvor kalibriert werden   Programmbeispiele be nden sich am Ende des Kapitels     8 1 Allgemeines    Nachfolgend wird kurz auf die Funktion der inversen Kinematik eingegangen  Detaillierte Grund   lagen der inversen Kinematik nden sich in Lehrb  chern zur  Industrie  Robotik  wie z B  SPONG   HUTCHINSON und VIDYASAGAR  2005   CRAIG  2004     8 1 1 Vorw  rtskinematik    Bei der Vorw  rtskinematik sind die Winkel der einzelnen Gelenke bekannt  jedoch nicht der Endpunkt   Abbildung 8 1   Am Beispiel des Hexapod bedeutet das  dass die Winkel aller Servomotoren bereits  gegeben sind und die Position des Fu  punktes berechnet wird    Jedes Segment des Beins wird durch einen Vektor dargestellt  Diese Vektoren werden nun aneinander  geh  ngt  Femur an Coxa und Tibia an Femur  Der Winkel zwischen den Vektoren ist gleich den Win   keln der Servomotoren  Hat man alle Winkel und L  ngen der Vektoren kann der Fu  punkt berechnet  werden        FORWARD KINEMATICS  A  Z 55 Z      ex         D          Start Joint                Abbildung 8 1  Vorw  rtskinematik  alle Winkel sind bekannt  der Endpunkt wird berechnet     8 
100. FTWARE FUNKTIONSBIBLIOTHEK       Funktionalit  t   Methoden     Funktionalit  t     Funktionalit  t     Funktionalit  t     Funktionalit  t     Funktionalit  t     Leuchtdioden des Robotics Chips  RC_SetLedBrightness  RC_SetLedClearAll    Servos des Robotics Chips  RC_SetServoMode  RC_SetGlobalServoMode  RC_SetServoRotation   RC SetServoAttributesTable   RC SetServoAttributesTable P   RC SetServoAttributesTable E   RC SetGlobalServoAttributesTable  RC SetGlobalServoAttributesTable P  RC SetGlobalServoAttributesTable E  RC SetServoPwmbDirect   RC GetServoCurrentPwm   RC SetServoPhiSpeed   RC SetServoPhiDirect   RC GetServoDeltasToGo   RC GetServoCurrentDeltaPhi   RC GetServoCurrentPhi   RC SetServoTuneFine   RC SetServoTuneCoarse    Eingabeger  te  Sony Playstation2 Gamepad        RC_GetPs2Data   RC_SetRxControl   RC_GetRxControl   RC_GetRxData   RC_GetGamePadButtons   RC GetGamePadJoystickData   RC GetGamePadData    Buzzer  Summer   RC_SetBuzzerVolume  RC_SetBuzzerPhaseHigh  RC_SetBuzzerPhaseLow    CORDIC  Winkelprozessor   RC_SetCordicCalculationArguments  RC_SetCordicCalculationS tart  RC_CordicWaitOnResult  RC_GetCordicCalculationResult    Hilfsfunktionen  RC_GetRoboticsChip Version  RC_GetGlobalTimer   RC SetInterruptO       SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    9 1   BERSICHT DER SCHNITTSTELLEN 149       Modul  InverseKinematics   Funktionalit  t  Initialisierung   Methoden  IK Init   Funktionalit  t  Berechnung der inversen Kinematik eines Spinnenbein
101. Festplatte erzeugt  Als n  chstes muss die Hexapod Soft   warebibliothek von der CD auf den Computer kopiert werden  Dazu wird der Ordner 1ib im  HexapodFirmware Verzeichnis auf die Festplatte kopiert  Dieser beinhaltet den gesamten Quell        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    26    2 ERSTE SCHRITTE       code der Bibliothek     e Dateien hinzuf  gen         n  o         9  Ser       Abbildung 2 9  Hinzuf  gen bereits existierender Dateien     Im n  chsten Schritt m  ssen alle Dateien der verwendeten Hexapod Software Bibliotheken hinzu   gef  gt werden  Hierzu  Rechtsklick auf die Projektwurzel im linken Fenster und Befehl    Add existing  File s        ausw  hlen  Abbildung 2 9   Im nun erscheinenden Dialog werden alle ben  tigten Dateien  ausgew  hlt  Dieser Vorgang muss solange durchgef  hrt werden  bis alle Dateien der folgenden Ordner  und Unterordner im Projekt eingebunden sind    lib SandboxS2Lib   lib uart   lib uart usb   lib RoboticsChip   lib InverseKinematics   lib MemoryCard           e Grundeinstellungen   Danach sind die Projekt Einstellungen anzupassen  Der ben  tigte Dialog be ndet sich unter dem  Men  punkt    Project  gt Con guration Options     Hier wird unter    Frequency    der Takt des Mikro   controllers auf    8000000     8MHz  eingestellt  Mit der Einstellung    Optimization    l  sst sich die  Optimierung des Kompilers einschalten  Diese Option sollte jedoch nur bei fertigen Programmen  vor  der Auslieferung  eingestellt werden
102. Flags f  hren  Da die  Servos von der Software im Mikrocontroller aus als Gruppe betrachtet werden  deren Mitglieder alle  zum gleichen Zeitpunkt mit neuen Bewegungssequenzen beauftragt werden  reicht es aus  wenn nur  das Interrupt Flag eines einzigen Servo Sequencers die Interruptleitung INT1 ansteuert  Dies kann  leicht erreicht werden  indem nur f  r ein Servo aus der Gruppe das Interrupt Mask Bit gesetzt wird   Allerdings sollte hierbei beachtet werden  dass die Verarbeitung der Sequenzauftr  ge an die Servo       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 7 SERVO SEQUENCER    103       nicht parallel  sondern nacheinander in der Reihenfolge aufsteigender Servonummern erfolgt  Daher  muss stets das Interrupt Mask Bit des Servo Sequencers f  r das Servo mit der h  chsten Nummer ak   tiviert werden  Sonst besteht die Gefahr  dass die Sequenzauftr  ge noch nicht f  r alle Servos abgeholt  wurden  Auftr  ge  f  r die dies der Fall ist  w  rden bei Aufgabe von neuen Sequenzauftr  gen also    berschrieben     Ablauf der Sequenz  Als Eingangswert der Linearisierungseinheit steuert der Wert in CurrentPhi  indirekt mit die Ausga   be des Pulses an das Servo  Mit jedem neuen Servopulszyklus wird der Wert in CurrentPhi um den  In  Decrementwinkel CurrentDeltaPhi erh  ht  oder bei negativem CurrentDeltaPhi verringert   Der  Servopulszyklus wird durch den Pulsgenerator erzeugt  Die Dauer eines Zyklus kann   ber die Werte  in den Registern TuneFine und TuneCoarse  siehe A
103. HSSE ROBOTICS CHIP       7 23 Adressraum im   berblick    Tabelle 7 51    berblick   ber den Registeraddressraum  ng ist die Servo  und nz  die LED Nummer  je   weils von 0 bis 23   Der jeweils verf  gbare Adressbereich ist nicht f  r 24  sondern bis zu 32 Servos bzw   EDs reserviert                                                                                                                                      Adr AVR    Ende Words   Beschreibung  16 Bit Register     AVR kann schreiben und lesen   0x8000  2ng   Ox803F 32   PhiZPwmTable 0  Servo ng  0x8040  2ng   Ox807F 32   Phi2PwmTable 1  Servo ng  0x8080  2ng   Ox80BF 32   Phi2PwmTable 2  Servo ng  0x80C0  2ns   Ox80FF 32   Phi2PwmTable 3  Servo ng  0x8100  2ng   Ox813F 32   Phi2PwmTable 4  Servo ng  0x8140  2ng   Ox817F 32   Phi2PwmTable 5  Servo ng  0x8180  2ng   Ox81BF 32   Phi2PwmTable 6  Servo ng  0x81C0 2ng   Ox81FF 32   Phi2PwmTable 7  Servo ng  0x8200  2ng   Ox823F 32   Phi2PwmTable 8  Servo ng  0x8240  2ng   Ox827F 32   Phi2PwmTable 9  Servo ng  0x8280  2ng   Ox82BF 32   Phi2PwmTable 10  Servo ng  0x82C0  2ns   Ox82FF 32   Phi2PwmTable 11  Servo ng  0x8300  2ng   0x833F 32   Phi2PwmTable 12  Servo ng  0x8340  2ng   Ox837F 32   Phi2PwmTable 13  Servo ng  0x8380  2ng   0x83BF 32   Phi2PwmTable 14  Servo ng  0x83C0  2ns   Ox83FF 32   Phi2PwmTable 15  Servo ng  0x8400  2ng   Ox843F 32   Phi2PwmTable 16  Servo ng  0x8440  2ng   Ox847F 32   ServoMode IRQ Mask Servo ng  0x8480  2ng   Ox84BF 32   PwmLen PhiStart Servo 
104. HSSE SandboxS 2   Handbuch  f     Markus Pfaff  Michael Kreuzgruber  Christian Raschko   Michael Bogner  Armin Brandl    OBER  STERREICH 2  Auflage      20  September 2007  SVN  408                HSSE SandboxS 2  Handbuch                Nutzungsbedingungen Die Konstruktion der    SandboxS 2     alle Abbildungen  Konstruktionszeichnungen  Fotos und der Text dieser  Beschreibung stehen unter dem Copyright der jeweiligen Autoren  Ihre weltweite Nutzung zu nichtkommerziellen Zwecken innerhalb der  Ausbildung  in Schulen und   hnlichen Ausbildungsst  tten ebenso wie im Ausbildungsbereich von Firmen  und im Privatbereich wird bis auf   auch in Einzelf  llen m  glichen  Widerruf gestattet  Bei solcher Nutzung ist an einer  z B  f  r Zuschauer einer Veranstaltung gut sichtbaren  Stelle auf den Ursprung der   SandboxS 2    hinzuweisen  Im Einzelnen besteht dieser Hinweis aus dem Logo der FH O    dem Schriftzug     HSSE    als Hinweis auf den Studiengang Hardware Software Systems Engineering und dem Schriftzug    WWW SANDBOX AT     Unter   h  lt der Nutzer  Schule  Firma  Privatperson  WWW Seiten  so ist ein Link auf www   sandbox  at dort vorzusehen  Eine kommerzielle  Nutzung ist nur mit schriftlicher Genehmigung und Lizenz der Autoren statthaft     Haftungsausschluss Bitte lesen Sie die am Rand mit A gekennzeichneten Textteile besonders aufmerksam und beherzigen Sie die darin  enthaltenen Warnungen  Bitte beachten Sie  dass die Ausf  hrung s  mtlicher Anweisungen in dieser Anleitun
105. LEDs again  RC SetLedClearAl1       while  1                 RC_GetGamePadJoystickData  RC_GAME_PAD_LEFT_JOY   amp Data            RC SetLedBrightness  0  Data X    RC SetLedBrightness  1  Data Y            SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    194    9 SOFTWARE FUNKTIONSBIBLIOTHEK            return 0     9 8 27 RC_GetGamePadData    void RC GetGamePadData   out  RC GamePadData xData     Beschreibung    Liest die aktuelle Stellung der Joysticks und die Tasten des Sony Playstation 2 Gamepad aus dem          RoboticsChip   Parameter   Bedeutung  Data Beinhaltet die Stellung beider Joysticks und den Status der Tasten  Der Aufbau             dieser Struktur ist in Abschnitt 9 11 auf Seite 216 erkl  rt        R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    Bevor diese Funktion verwendet werden kann  m  ssen 5 2 Init    und RC Init    aufgerufen    werden     Beispiel    Die Bewegungen der Joysticks an den Servo LEDs 0     3 anzeigen     int main            RC_GamePadData GameData       proxy function for whole initialization    Init         clear all LEDs again  SetLedClearAll       while  1        RC  GetGamePadData   amp GameData       RC SetLedBrightness    RC SetLedBrightness    RC SetLedBrightness    RC SetLedBrightness           return 0    0  GameData JoystickLeft X    1  GameData JoystickLeft Y    2  GameData JoystickRight X    3  GameData JoystickRight Y                        SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007  
106. Mask tr  gt den  Wert 0  zur Verf  gung    Das Register enth  lt eine vorzeichenlose 12 Bit Zahl  0 4095   Diese Zahl wird mit PwmLenDirect  bezeichnet  PwmLenDirect gibt die L  nge des PWM Impulses  welcher an das Servo geschickt wird  unmittelbar an  Sie betr  gt 0 476 ms PwmLenDirect 500 ns  Da der Wertebereich von PwmLenDirect  zwischen    und 4095 liegt  ist die Impulsdauer im Bereich von 0 476 2 523 ms einstellbar     Adr 1 unsigned 11 downto 8           Tabelle 7 7  Register  PwmLen  Wertebereich  0   4095  Adr 0x8480 2ns  ng ist die Servonummer  0 bis  23   Der Initialisierungswert nach dem Einschalten ist f  r alle Servos 0x0800  2048   was einer Pulsl  nge  von 1 5 ms  ungef  hr Hebelmittelstellung  entspricht  Les  und schreibbar        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    96    7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP       7 5 4 2 Register CurrentPwm    Aus diesem Register kann die Dauer des derzeit tats  chlich erzeugten PWM Pulses entnommen wer   den  Dieses Register enth  lt eine vorzeichenlose 12 Bit Zahl  welche das gleiche Format verwendet  wie beim Register PwmLen    Die L  nge des PWM Impulses wird unabh  ngig von der Einstellung des Parameters ServoReverse  aus dem Register ModeIrqMask jedes Servos f  r die nicht drehrichtungsumgekehrte Servoeinstellung  angegeben                       Bit 7 6 5 4 3 2 1 0  Adr 1     unsigned 11 downto 8   Adr unsigned 7 downto 0           Tabelle 7 8  Register  CurrentPwm  Wertebereich  0   4095  Adr 0x8
107. Modul wird an die serielle Schnittstelle des AVR Mikrocontrollers ange   schlossen  die auf dem Erweiterungssteckverbinder nach Abschnitt 5 6 zur Verf  gung steht  Auch  die Spannungsversorgung des Moduls mit 3 3 kann aus diesem Steckverbinder bezogen werden    Nach Kon guration des Moduls und Verbindungsaufnahme mit dem Bluetooth System des PCs  steht eine drahtlose serielle Schnittstelle  z B  COMAO  zur Verf  gung  die auf der PC Seite als Ein   und Ausgabeport f  r Daten verwendet werden kann  Diese Daten werden in der gleichen Art zur  SandboxS 2   bermittelt  wie dies durch ein serielles Kabel geschieht     Bluetooth Serial Modul Parani ESD 100 von SENA   Zum Anschluss kommen die Module unterschiedlicher Hersteller in Frage  Als Beispiel wird hier das  Modul ESD 100 des Hersteller SENA  http    www sena com products industrial_  bluetooth oem bluetooth serial parani esd   herangezogen  das zu einem Preis  von ca  50     innerhalb Europas erh  ltlich ist  Ein Foto des Moduls ist in Abbildung 5 15 zu sehen     Abbildung 5 15  Das Bluetooth Serial Modul Parani  ESD 100 der Firma SENA        Damit das Modul verwendet werden kann  muss es zun  chst entsprechend kon guriert werden   Hierzu werden vom Hersteller ein Starterkit  ESD Startkerkit  zum Anschluss des Moduls an den PC  und ein        gurationsprogramm namens ParaniWIN geliefert  In Abbildung 5 16 sind Kon gurati   onseinstellungen zu sehen  die sich in der Praxis bew  hrt haben  Da der AVR mit einem Takt von  8MHz l
108. OFF                       else            RC SetServoRotation 0  RC SERVO REVERSE  ON                             return 0        SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    186 9 SOFTWARE FUNKTIONSBIBLIOTHEK       9 8 14 RC_SetServoAttributesTable    void RC SetServoAttributesTable  in  uint8 t ServoNumber    in  RC ServoAttributes  ServoAttr     Beschreibung    Setzt die angegebenen Attribute f  r das angegebene Servo        Parameter Bedeutung   ServoNumber   Nummer des Servos  dessen Attribute ver  ndert werden  Die Nummerierung  der Servos ist in Abb  7 1 auf Seite 81 ersichtlich    ServoAttr Datensatz der alle Eigenschaften eines Servos beinhaltet  siehe Abschnitt  9 11                        R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Bevor diese Funktion verwendet werden kann  m  ssen SL2  Init    und RC  Init    aufge   rufen werden        e Statt dieser Funktion sollte RC SetGlobalServoAttributesTable  da es keinen Sinn  macht nur einzelne Servos zu kalibrieren     9 8 15 RC SetServoAttributesTable P    Gleiche Funktion wie RC SetServoAttributesTable    die Tabelle muss jedoch im Pro   grammspeicher abgelegt werden  Siehe dazu     avr libc    Manual Kapitel    Program Space Utilities      9 8 16 RC SetServoAttributesTable E    Gleiche Funktion wie RC  SetServoAttributesTable    die Tabelle muss jedoch im EE   PROM abgelegt werden  Siehe dazu    avr libc    Manual Kapitel    EEPROM handling        9 8 17 RC SetGlobalServoA
109. OTHEK       Anmerkung    e Um sinnvolle Ergebnisse zu erhalten  m  ssen die in Abschnitt 7 22 beschriebenen Zahlenfor   mate und Konvergenzbedingungen beachtet werden     e Bei Verwendung des hyperbolischen Koordinatensystems ist die Verwendung des Rotationsmo   dus nicht m  glich  vgl  Abschnitt 7 22      e Mittels dieser Funktion werden die Parameter nur in den daf  r vorgesehenen Speicherbereich  des RoboticsChips kopiert  die Berechnung wird dadurch noch nicht gestartet     e Bevor diese Funktion verwendet werden kann  m  ssen SL2_Init    und RC  Init    aufge   rufen werden und der CORDIC Interrupt muss aktiviert sein     Beispiel    Siehe Beispiele in Abschnitt 9 8 34 auf Seite 199     9 8 32 RC SetCordicCalculationStart    void RC SetCordicCalculationStart          Beschreibung    Startet die CORDIC Berechnungen jener Werte  die zuvor mittels RC SetCordicCalculation   Arguments    in die Queue geschrieben wurden        R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung   Bevor diese Funktion verwendet werden kann  m  ssen SL2 Init    und RC Init    aufgerufen  werden und der CORDIC Interrupt muss aktiviert sein    Beispiel    Siehe Beispiele in Abschnitt 9 8 34 auf Seite 199     9 8 33 RC CordicWaitOnResult    void RC CordicWaitOnResult       Beschreibung    Wartet so lange  bis der CORDIC Interrupt vom RoboticsChip ausgel  st wird und somit das Ergebnis  verf  gbar ist        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 8 ROBOTICSCHIP 19
110. P wee Ew eed a 92  132                2                                     DEOR Rea a                  92  Ts Diahrichtunasumkehp 222222224525 59                                   94  To                       e UR oe         ee      ae 95  7 5 5  Pulswiederholungszyklu amp       oo 2s soe m a a sa 9 y o er 96  7 6 Servolinearisierung und  kalibrierung                           96  7 6 1   Vorgehensweise f  r die Servokalibrierung                     99  37 c no        2 2 2 2  2  22  2                             102  7 7 1  Geschwindigkeitsabsttmmung                           106  7 8  Servogrundstellungsmodus AN o ea ee daa eS ede ea          107  T9 ere    a aw al ae Eee      ba          EG Sai Gad a           107  7 10 LED mit Helligkeitsstevermmg  2 2              2     4        108  ZE rn RD Mr ew a ea 109  TE VASE 22 250      EE             Cue    Be                                erue d 109  2 13 FCOSEmplanaerdeeoder 2 202      Mange     ote pO          d      be      110  7 131  RC Empf  ngeranschuss 2   2    22 RR 110  7 14 Petersen A a e e sa ss k EE      a                              113  7 15 Piezosummer mit                                                     114  7 16 Brweiterungssteckplatz      lt o o ss cs e is es au sr an        wo      115  7 17 Sony Playstation 2 Game Pad Controller                         116  PIZI Adapterkabel une m na pep OR x BONS           OR dedo        117  7 18 Globale Timer uunc deo e aom come m                                dd 
111. PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    172    9 SOFTWARE FUNKTIONSBIBLIOTHEK       R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Muss vor allen anderen Funktionen des Moduls aufgerufen werden     9 8 2 RC_SetLedBrightness    uint8 t RC SetLedBrightness  in  uint8  1    LedNumber   Brightness            in  uint8      Beschreibung    Ver  ndert die Helligkeit einer bestimmten Servo LED    sich am Rand der Platine be ndende LED   neben den Steckern f  r die Servos                           Parameter   Bedeutung  LedNumber   Nummer der LED  deren Helligkeit ver  ndert werden soll  Die Nummerierung  der LEDs ist in Abb  7 1 auf Seite 81 ersichtlich   Brightness   Bestimmt die Helligkeit einer bestimmten Servo LED  0   ausgeschaltet  255    maximale Helligkeit    R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Da der nichtlineare Zusammenhang zwischen der Pulsl  nge der PWM und der Helligkeit der  Leuchtdiode nicht vom RoboticsChip kompensiert wird  ist die unterschiedliche Helligkeit nicht  bei allen Stufen zu erkennen     e Bevor diese Funktion verwendet werden kann  m  ssen 5 2 Init    und RC Init    aufge   rufen werden     Beispiel    Alle LEDs mit maximaler Helligkeit einschalten     int main            uint8_t i      0       proxy function for whole initialization    Init           for  1   0  1  lt  RC_NUMBER_OF_LEDS  1                        SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    9 8 ROBOTIC
112. Projekt   bersetzen   e Programm ausf  hren  e Programm testen   e Zusammenfassung    e Aufgaben    2 4 1 Projekt erstellen    Ein Projekt im AVR Studio beinhaltet verschiedenste Einstellungen  Darunter Einstellungen f  r Mi   krocontroller  Debugger  Frequenz  Projektverzeichnisse und verwendete Dateien  Um ein neuen Pro   jekt zu erstellen gibt es zwei unterschiedliche M  glichkeiten  Entweder verwendet man ein bereits  vorhandenes Projekt und kopieren dieses  oder man erstellt ein neues leeres Projekt und passt alle  Einstellungen an  Beide L  sungen werden nachfolgend gezeigt     2 4 1 1 Projekt mit Vorlage erstellen    Der einfachste Weg ein neues Projekt zu beginnen  ist eine bereits fertig angepasste Projektdatei zu  kopieren  Die hierf  r ben  tigten Dateien be nden sich auf der CD im Ordner HexapodFirmware   Es m  ssen die Ordner Template und 1ib in ein lokales Verzeichnis kopiert werden  Beide Ord   ner m  ssen in der selben Verzeichnishierarchie verbleiben  Der Ordner 1ib enth  lt die Dateien der  Softwarebibliothek  mit denen Programme f  r den Hexapod entwickelt werden k  nnen  Der Ordner     Template    enth  lt eine fertig        gurierte Projektdatei  Hexapod  aps  und ein einfaches Anwen   dungsskelett  main  c   Durch einen Doppelklick auf die Projektdatei wird das Projekt ge  ffnet     2 4 1 2 Projekt ohne Vorlage erstellen    Es werden nun alle n  tigen Schritte erkl  rt um ein komplett neues Projekt einzurichten    Nach dem Start des AVR Studios sollte ei
113. RC SetLedBrightness 0  MouseData DeltaX     RC SetLedBrightness 1  MouseData DeltaY              return 0     9 8 23 RC_SetRxControl    uint8 t RC SetRxControl  out  uint8 t InvertPpm    out  uint8 t NumberOfChannels        Beschreibung    Stellt die Empfangseinheit im RoboticsChip auf den verwendeten Fernsteuerungsempf  nger ein        Parameter Bedeutung   InvertPpm Bietet die M  glichkeit das PPM Signal zu invertiert  Dieser Parame   ter ist n  tig um auch Fernsteuerungen  die ein invertiertes Signal sen   den  verwenden zu k  nnen  M  gliche Werte  RC RX NO INVERT   RC RX INVERT   NumberOfChannels   Anzahl der verwendeten Kan  le                             R  ckgabewert  R  ckgabewert Beschreibung  RC SUCCESSFUL Empfangseinheit im RoboticsChip wurde kon guriert        RC INVALID PARAMETER   Es wurde ein ung  ltiger Parameter   bergeben  die Empfangs   einheit im RoboticsChip wurde nicht        guriert                 Anmerkung    e Bei den mitgelieferten Fernsteuerungen  Acoms Techniplus 40MHz AM 2 2 1 B  muss  InvertPpm auf RC      NO INVERT und NumberOfChannels auf 2 gesetzt werden        e Bevor diese Funktion verwendet werden kann  m  ssen 5 2 Init    und RC  Init    aufge   rufen werden     Beispiel    siehe Beispiele der folgenden Funktion        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 8 ROBOTICSCHIP 191       9 8 24 RC_GetRxData    uintl6_t RC GetRxData  in  uint8 t ChannelNumber     Beschreibung    Liest die Daten von einem Kanal der Fernsteuerung
114. RECT geschalten werden     e Bevor diese Funktion verwendet werden kann  m  ssen 5 2 Init    und RC Init    aufge     rufen werden     Beispiel    Die Positition von Servo 0 wird bei jedem Tastendruck von AVR KEY 0 um 90   ver  ndert     int main              proxy function for whole initialization    Init          clear all LEDs  RC_SetLedClearAll     RC_SetServoMode  0     while  1              RC_SERVO       MODE_PWM_DIRECT                  SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    9 8 ROBOTICSCHIP 177       RC_SetServoPwmDirect  0  0               L2 AvrWaitOnKey  51 2 KEY 0  SL2_KEY_PRESSED    L2 AvrWaitOnKey  51 2 KEY 0  SL2_KEY_NOT_PRESSED                                                      RC_SetServoPwmDirect  0  1609               L2 AvrWaitOnKey  51 2 KEY 0  SL2 KEY PRESSED    L2 AvrWaitOnKey  SL2 KEY 0  SL2 KEY NOT  PRESSED                                                           return 0     9 8 7 RC GetServoCurrentPwm    uintl16 t RC GetServoCurrentPwm   in  uint8 t ServoNumber     Beschreibung    Erm  glicht die mittels      SetServoPwmDirect    eingestellte Pulsl  nge  Length  zu lesen        Parameter Bedeutung  ServoNumber   Nummer des Servos  das bewegt werden soll  Die Nummerierung der Servos  ist in Abb  7 1 auf Seite 81 ersichtlich                    R  ckgabewert       R  ckgabewert   Beschreibung  Length Jene Pulsl  nge  die   ber die Funktion      SetServoPwmDirect    ein   gestellt wurde                    Anmerkung    e Um RC GetSer
115. RT 169         read character       uart usb getchar         print character  uart usb  putchar c        never return  loop forever    for       return 0     9 7 2 uart usb putchar    void uart  usb putchar  in  char data     Beschreibung    Sendet ein Zeichen  f  gt es in den Sendepuffer ein        Parameter   Bedeutung  data Zeichen welches gesendet werden soll                    R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Diese Funktion blockiert wenn der Puffer voll ist  Jedoch nur wenn das Ger  t am Bus h  ngt   Besteht keine Verbindung zwischen PC und Controller  werden die Daten ignoriert  Ansonst  wird die Flusskontrolle schlagend und die Funktion blockiert  wenn die Daten nicht vom Host  abgeholt werden     e Bevor diese Funktion verwendet werden kann  muss uart usb  init    aufgerufen werden     Beispiel    siehe Abschnitt 9 7 1    9 7 3 uart usb getchar    char uart usb getchar      Beschreibung    Empf  ngt ein Zeichen  entfernt es aus dem Empfangspuffer        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    170    9 SOFTWARE FUNKTIONSBIBLIOTHEK       R  ckgabewert       R  ckgabewert   Beschreibung  Data Gibt das empfangene Zeichen zur  ck                    Anmerkung    e Diese Funktion blockiert wenn der Puffer leer ist  Auch wenn keine Verbindung zwischen PC  und Ger  t besteht     e Bevor diese Funktion verwendet werden kann  muss uart usb  init    aufgerufen werden     Beispiel    siehe Abschnitt 9 7 1    9 7 4 uart usb 
116. Register werden an den LEDs 0     5 angezeigt  Dabei ist jeder LED  ein bestimmter Wert f  r DeltasToGo zugeordnet  bei dem die Leuchtdiode eingeschaltet wird    int main           uintl6_t Data   0   uint8 t LedIdx   0       proxy function for whole initialization                clear all LEDs  RC SetLedClearAl11       RC SetServoMode 0  RC SERVO MODE PHI DIRECT                  RC SetServoPhiSpeed 0  0  2    4  1024      time needed for movement  1024 Steps   20 ms   20 5 sec       SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    182    9 SOFTWARE FUNKTIONSBIBLIOTHEK         wait for 20ms to ensure that the command has been      executed by the RoboticsChip  _delay_ms  20      while  1          show the changes in DeltasToGo register      on the first 6 servo LEDs       Data   RC_GetServoDeltasToGo  0        switch on LED 0 when Data        switch on LED 1 when Data     switch on LED 2 when Data   PR sas   LedIdx   Data   200    RC SetLedBrightness  LedIdx        return 0       200    400    255      9 8 11 RC_GetServoCurrentDeltaPhi       inline uintl16_t RC GetServoCurrentDeltaPhi  in  uint8 t ServoNumber        Beschreibung    Liest das Winkelinkrement eines Servos aus dem RoboticsChip        Parameter Bedeutung             ServoNumber   Nummer des Servos  dessen Winkelinkrement gelesen werden soll  Die Num   merierung der Servos ist in Abb  7 1 auf Seite 81 ersichtlich           R  ckgabewert       R  ckgabewert   Beschreibung             DeltaPhi Winkelinkrement d
117. S CHIP       7 14 0 5 Register Ps2Y    Dieses Register gibt Auskunft   ber den Weg  den die Maus seit ihrer letzten Ausgabe in Y Richtung  zur  ckgelegt hat           Bit  0x87F5  0  87  4 YDelta  signed 7 downto 0           YDel  8     3 2 1      e                      Tabelle 7 24  Register  Ps2Y  Nur lesbar     Bit 9     YOVL Ist dieses Bit gesetzt  1   so wurde die Maus in Y Richtung zu schnell und weit be   west  so dass der Weg in Y Richtung nicht mehr in einer 9 Bit breiten Zahl darstellbar ist     Bits 8 bis 0     YDelta Diese 9 Bit breite vorzeichenbehaftete Zahl im Zweierkomplementformat gibt  den seit der letzten Mausbewegung zur  ckgelegten Weg in Y Richtung an  Das Vorzeichen gibt  die Orientierung der Mausbewegung an     7 14 0 6 Register Ps2Buttons    Dieses Register gibt den Zustand der Maustasten wieder        Bit  0x87F7  0x87F6                               Tabelle 7 25  Register  Ps2Buttons  Nur lesbar     Bit 2     ButnL Bei gedr  ckter linker Maustaste steht in diesem Bit der Wert 1  sonst der Wert        Bit 1     ButnR Bei gedr  ckter rechter Maustaste steht in diesem Bit der Wert 1  sonst der Wert        7 15 Piezosummer mit Tongenerator    In Abb  7 22 ist der Anschluss des Piezosummers an das FPGA zu sehen  Der Summer ist   ber einen      Widerstand zur  Strombegrenzung       Abbildung 7 22  Piezosummer zur direkten Ansteuerung   ber das FPGA     Strombegrenzungswiderstand an zwei Ausgangspins des FPGAs angeschlossen  Eine Strombegren   zung ist auf
118. SCHIP    173       RC_SetLedBrightness  i  255         while  1           return 0     9 8 3 RC_SetLedClearAll    void RC_SetLedClearAll      Beschreibung    Schaltet alle Servo LEDs auf dunkel  Die LEDs des AVR werden von dieser Funktion nicht beeinflusst     R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    Bevor diese Funktion verwendet werden kann  m  ssen SL2_Init    und RC Init    aufgerufen  werden     Beispiel  Alle Servo LEDs ausschalten     int main           proxy function for whole initialization  Init        RC_SetLedClearAll     while  1             return 0     9 8 4 RC_SetServoMode    inline void RC_SetServoMode   in  uint8_t ServoNumber    in  uint8 t Mode           SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    174    9 SOFTWARE FUNKTIONSBIBLIOTHEK       Beschreibung    Schaltet ein bestimmtes Servo in den angegebenen Bewegungsmodus        Parameter    Bedeutung       ServoNumber    Nummer des Servos  dessen Modus ver  ndert werden soll  Die Nummerierung  der Servos ist in Abb  7 1 auf Seite 81 ersichtlich        Mode          Bestimmt den Modus des Servos  Dieser Parameter kann folgende Werte an   nehmen   e RC_SERVO_MODE_PWM_DIRECT   PwmDirect Modus  siehe Ab   schnitt 7 5 auf Seite 92 f  r genauere Erkl  rung    e RC_SERVO_MODE_PHI_DIRECT   PhiDirect bzw  PhiSpeed Modi   siehe Abschnitt 7 5 auf Seite 92 f  r genauere Erkl  rung  oder  e RC_SERVO_MODE_NO_ACTION   Servo deakiviert                                R  ckgabewert  
119. SERVO SEQUENCER 105       und die Bewegung des Servos   ber den gew  nschten Winkelbereich wird mit hoher Pr  zision durch   gef  hrt  Negative Zahlen stellen statt eines Winkelinkrements ein Winkeldekrement dar        Bit         1          Adr signed 3 downto  4           signed 9 downto 4              Tabelle 7 13  Register  DeltaPhi  Dieses Register hat nur im Mode PhiSpeed eine Bedeutung   Adr 0x84C0 2ng  ng ist die Servonummer  0 bis 23   Initialisierungswert nach dem Einschalten ist  0x0000  Les  und schreibbar     7 7 0 4 Register CurrentDeltaPhi    Dieses Register enth  lt eine vorzeichenbehaftete Festkommazahl im Zweierkomplementformat 10 4   also mit 10 Vorkommastellen  inkl  Vorzeichen  und 4 Nachkommastellen  Damit ist das Format der  enthaltenen Zahl identisch zum Zahlenformat des Registers DeltaPhi  Das Register CurrentDeltaPhi  wird zu Beginn einer Bewegungssequenz automatisch aus dem Inhalt des Registers DeltaPhi aktuali   siert    Wird auf das Register vom Mikrocontroller geschrieben  kommt es zu unde niertem Verhalten  Das  Register sollte daher ausschlie  lich gelesen werden        Bit  Adr 1         signed 9 downto 4   Adr signed 3 downto  4                    Tabelle 7 14  Register  Current DeltaPhi  Dieses Register hat nur im Mode PhiSpeed eine Bedeutung   Adr 0x8640 2ns  ns ist die Servonummer  0 bis 23   Nur lesbar     7 7 0 5 Register NrOfDeltas    Dieses Register enth  lt eine vorzeichenlose 12 Bit Zahl  Mit dieser Zahl wird die Anzahl der Winkel   
120. TAGICE          Dont sesch   well choose the diver to install  Choose this coton to select the device Gover from a iat  Windows does net guarantee that  the driver you choose wil be the best match for your hardware    amp  This driver is red digitally signed  Have Dok    Tel me wiy over sonna    moorant     lt Back be  gt  Tanod _    Found New Hardware Wizard Found New Hardware Wizard           Please wat while the wizard instalis the software  Completing the Found New    Hardware Wizard    The            has fresha est linc the acttmar for    E  JTAGICE mici EZ STAGICE skili    c e    Setting a system restore port and backing up       fles e  case your syrien meds lo be stored n Se kire    Och Fresh o close the word    Cg    Abbildung 2 3  Installieren des Atmel JTAG ICE Debuggers nach dem Anstecken an die USB Schnitt   stelle        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    2 3 GER  TETREIBER INSTALLIEREN 21       2 3 2 SandboxS 2 Treiber installieren    Der auf der SandboxS 2 verbaute Mikrocontroller besitzt bereits eine USB Unterst  tzung  Um eine  einfache Kommunikation mit dem Computer zu erm  glichen  meldet sie sich als serielle Schnittstelle  beim Betriebssystem an    Bei der Installation wird ebenfalls ein spezieller Ger  tetreiber ben  tigt  Das Betriebssystem erkennt  nach dem Einschalten ein neues Ger  t  und verlangt nach einem Treiber  Dieser be ndet sich auf der  beigelegten CD im Ordner Driver  Die SandboxS 2 sollte zuvor mit voll geladenen Akkuze
121. VR Kompiler ab Version 20070525  Be ndet sich auf der beigelegten CD  im Ordner  WinAVR  Die aktuelle Version kann auch unter http    winavr sourceforge net be   zogen werden     Terminal Programm nach Wahl  In diesem Tutorial wird jedoch HTerm verwendet  Be ndet  sich auf der beigelegten CD  im Ordner HTerm  Die aktuelle Version kann auch unter http      www der hammer info terminal bezogen werden     Da Fehler in neueren Versionen der Programme nicht ausgeschlossen werden k  nnen  wird die  A Installation von der CD empfohlen  Diese Versionen wurden im Zusammenspiel miteinander getestet     2 2 Entwicklungsumgebung einrichten    Um mit der Entwicklung der Firmware beginnen zu k  nnen  muss die Entwicklungsumgebung einge   richtet werden  Sie besteht aus den Programmen WinAVR und AVRStudio  Beide Programme be ndet  sich auf der beigelegten CD  Wichtig ist  dass WinAVR vor dem AVRStudio installiert wird  Die Instal   lation der Software wird im nachfolgenden Abschnitt ausf  hrlich erkl  rt        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    2 2 ENTWICKLUNGSUMGEBUNG EINRICHTEN 15       2 2 1 WinAVR installieren    Die Installation von WinAVR gestaltet sich sehr einfach  Man folgt den Anweisungen des Assistenten  um die Installation abzuschlie  en  Eine bebilderte Installationsanleitung ist in Abbildung 2 1 darge   stellt  Die Software be ndet sich im Ordner WinAVR auf der beigelegten CD     WinAVR beinhaltet alle Programme um C und C    eingeschr  nkt  Anwendung auf d
122. _MODE_PWM_DIRECT   RC_SERVO_MODE_PHI_SPEED   RC_SERVO_MODE_PHI_DIRECT    RC_ServoMode                                   typedef enum          RC_SERVO_REVERSE_ON   RC_SERVO_REVERSE_OFF    RC_ServoReverse                          Um bei   nderungen an der Hardware  z B  bei Verwendung eines anderen Hexapods  m  glichst  wenig   nderungen in der Software durchf  hren zu m  ssen  sind alle hardwarespezi schen Werte in  einer einzigen Datenstruktur abgelegt  Diese Struktur beinhaltet die Linearisierungswerte aller Servos        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 11 STRUKTUREN UND BENUTZERDEFINIERTE TYPDEKLARATIONEN 217       den Offset Winkel durch die Servoscheibe und das Reverse Bit  die Drehrichtung ist nicht bei allen  Servomodellen gleich      typedef struct          uint16_t LinTable RC NUMBER OF SERVO LIN    intl16 t PhiOffset   RC ServoReverse Rotation      RC ServoAttributes                 PS 2 Maus    Die Struktur RC  Ps2Data enth  lt Daten   ber die Position und Tastenzust  nde der Maus  Eine ge   naue Beschreibung der einzelnen Registerwerte be ndet sich in Abschnitt 7 14 auf Seite 113     typedef struct      uint8 t DeltaX   uint8 t DeltaY   uint8 t Buttons      RC Ps2Data     Sony PlayStation 2 Gamepad    Die X  und Y Koordinaten des Sony PlayStation 2 Gamepads sind in der Struktur  RC GamePadJoystickData zusammengefasst  Genauere Informationen   ber die Register f  r  die Koordinaten nden sich in Abschnitt 7 16 auf Seite 115     typedef struct
123. andboxS2_lib h    RoboticsChip h    gart h     uart usb lib h     WII EERREPRMPBB M ADA ASL AAA AAPA AAA A AAA A DAA AA AAA REA A                       global variables definitions  FEM CMM MB BEIM TIAL AA ADEA PATA ALAA AAT ALAA AAAS ALA ALATA                          AT EASE    FILE    gStrmUSB   NULL   FILE    gStrmUART   NULL                      Key states  typedef enum            INCREM       NT        DECREM                   SELECT           NO  KEY     lt     NT     KeysState       servo attribute table  remains in flash memory  RC ServoAttributes gTable RC NUMBER OF SERVOS  PROGMEM             36                    385  652  918  1183  1453  1745  2038  2338  2608  2882  3158  3421           3686  3952  3952  3952  0 RC_SERVO_REVERSE_ON      Servo  16       1     277  543  799  1081  1363  1661  1965  2263  2559  2835  3109  3370        3641  3908  3908  3908  0 RC_SERVO_REVERSE_ON      Servo  17      12        315  568  822  1100  1378  1652  1941  2255  2555  2837  3101  3362        3619  3882  3882  3882  0      SERVO REVERSE           Servo  18      14        255  511  798  1075  1354  1643  2008  2242  2582  2857  3135  3410                                3670  4059  4059  4059  0 RC SERVO REVERSE           Servo  13       SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    8 3 HEXAPOD KALIBRIERUNG    139       D  I      19  282   3629     13  292   3608     51  362   3690    151  362   3690     51  362   3690     51  361   3689     16  294   3727   dy 311
124. artitions         Prepare SandboxX removable media 5    Edit partitions                   wet                    we   Abbildung 5 8  Auf die SandboxS 2 ab     gestimmte Partitionierung                   Format SBXMEDIA OC   Prepare SandboxX removable media     i  Format partitions             Abbildung 5 9  Formatierung der zuvor erstellten Partition       SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    5 3 STROMAUFNAHME UND AKKUSPANNUNG    69       5 2 0 2 Formatierung der SD Card unter Linux    Unter Linux gestaltet sich die Formatierung etwas einfacher  Um ein Dateisystem vom Typ FAT16  auf der SD Karte zu erstellen  wird zun  chst mit dem Linux Befehl fdisk eine Partition vom Typ 6   FAT16  auf der Karte eingerichtet  Danach wird diese Partition mit mkdosfs formatiert    Wer kein Linux installiert hat und dies m  glicherweise auch nicht m  chte  kann hierzu eine so   genannte Live CD verwenden  Gut eignet sich beispielsweise Knoppix  http    www knoppix   org    das kostenlos zum Download verf  gbar ist  Die aktuelle Ubuntu Linux Distribution ist eben   falls als Live CD verwendbar     5 3 Stromaufnahme und Akkuspannung    Zur Strom  und Spannungsmessung wird der ADC des AVR Mikrocontrollers verwendet  Dieser be   sitzt neben der Messung von Spannungen gegen  ber dem Bezugspotential GND auch M  glichkeiten  um differentielle Messungen mit einstellbarer Verst  rkung um den Faktor 1  10 oder 200 durchzuf  h   ren     5 3 1 Strommessung    Der ADC des Mikrocontrolle
125. atz verbunden    In der aktuellen Version des HSSE Robotics Chips steht auf dem Erweiterungssteckplatz eine An   schlussm  glichkeit f  r einen Game Pad Controller  wie er f  r die Sony Playstation 2 verwendet wird  zur Verf  gung     7 17 Sony Playstation 2 Game Pad Controller    Mittels eines einfachen Adapterkabels kann am Erweiterungssteckplatz  siehe Abschnitt 7 16  ein  handels  blicher Game Pad Controller f  r die Sony Playstation 2 angeschlossen werden  Es kommen    Abbildung 7 24  Beispiel f  r einen kabellosen Game Pad Controller  Ganz links ist auch dessen Ge     genstelle zu sehen der in einem Steckverbinder untergebracht ist  Es handelt sich nicht blo   um einen  Empf  nger  die Funkverbindung ist vielmehr bidirektional     sowohl kabelgebundene als auch drahtlos  wireless  arbeitende Ger  te  wie beispielsweise das Ger  t in  Abb  7 24 in Frage  In beiden F  llen k  nnen die Modi digital als auch analog verwendet werden  Zwi   schen diesen wird mittels eines Knopfes mit der Bezeichunng    analog    auf dem Game Pad Controller       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 17 SONY PLAYSTATION 2 GAME PAD CONTROLLER    117       umgeschaltet  Der Modus analog bietet neben den Funktionen der im Game Pad Controller eingebau   ten Tasten zus  tzlich die Ausschl  ge der beiden Joysticks in Form einer 8 Bit breiten Bin  rzahl an   Au  erdem wird auch der Druck auf den Joystick wie ein Tastendruck   bermittelt  Insgesamt stehen  16 Tasten und zwei Joystick
126. auf einem von au  en zug  nglichen Anschluss  zur Verf  gung  sondern muss mit dem Oszilloskop im Empf  nger aufgesp  rt werden  Als Beispiel ist  in Abb  7 20 das Oszilloskopbild f  r den Empfang eines 3 Kanal Senders zu sehen  Meist ist einer der       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 13 RC EMPF  NGERDECODER    111          Tek     JL H Trig d M Pos  3 360ms CURSOR               4  Quelle  CH1  Delta  1 S60ms  641 0Hz  Cursor 1  d i  40 00 us  Abbildung 7 20  Oszilloskopbild mit dem PPM Signal     Cursor 2      i i 1 520  am Ausgang der Demodulationsstufe eines Fernsteuer  i   is         CH1 1 00V M 1 00ms          2 32V  empf  ngers bei Empfang eines 3 Kanal Sender 6 Ju 05 2124 204 027He    drei f  r die Stromversorgung verwendeten Pins frei und kann mit diesem Signal belegt werden  Al   ternativ wird an Stelle des Stromversorgungssteckers ein Servokabel direkt innerhalb des Empf  ngers  angel  tet und aus dem Empf  nger herausgef  hrt  was etwas Gewicht spart und kosteng  nstiger ist   Eine Umbauanleitung f  r einen handels  blichen Empf  nger enth  lt Anhang C   Der Impulsausgang des Empf  ngers wird   ber einen Serienwiderstand zur Pegelanpassung auf  einen FPGA Eingang gegeben  Die eventuell notwendige Pegelanpassung wird bei zu hohem Ein   gangspegel von der Schutzdiode im FPGA vorgenommen     7 13 1 1 Register IrqMaskRcRxCtrl    Dieses Register gibt Einstellungen f  r die Auswertung des PPM Impulszugs eines RC Empf  ngers  an                   
127. auf ergibt  Um die LEDs auszuschalten  oder andere Helligkeitswerte einzustellen  muss dieser Parameter m  glichst fr  hzeitig im Program   mablauf eingestellt werden     7 10 0 3 Register LedBrightness                         Bit 7 6 5  4 3 2 1 0         1 CRM  ASCII Zeichen 7 downto 0   Adr LedBrightness  unsigned 7 downto 0        Tabelle 7 19  Register  LedBrightness  Adr 0x8540 2n   nr ist die LED Nummer  0 bis 23   Les  und  schreibbar     Bits 15 bis 8     CRM Nach dem Einschalten ist hier ein ASCII Zeichen lesbar  Die Zeichen aller 24  LEDs hintereinander gestellt ergeben die Copyright Message  CRM  f  r den HSSE Robotics   Chip     Bits 7 bis 0     LedBrightness Vorzeichenlose 8 Bit Zahl  Die Einstellung 0 bringt die LED zum Ver   l  schen  Die Einstellungen 1 bis 255 f  hren zu steigender Helligkeit der LED     7 11 Status LED    Neben den 24 in der Helligkeit steuerbaren LEDs sind zwei LEDs zur Anzeige von Statusinforma   tionen am FPGA angeschlossen  Abb  7 17   Der HSSE Robotics Chip gibt auf diesen LED folgende                               Abbildung 7 17  Status LED am FPGA     Informationen aus     LEDI6  MsgFpga0 Leuchtet nach Druck auf die Servopaniktaste  KeyFpga0   Damit wird angezeigt   dass derzeit kein Servoimpuls ausgegeben wird  siehe Abschnitt 7 9      LEDI7  MsgFpgal Leuchter im Servogrundstellungsmodus  siehe Abschnitt 7 8      7 12 Taster    Am FPGA sind zwei Tasten laut Abb  7 18 angeschlossen  Der HSSE Robotics Chip belegt diese mit  folgenden F
128. bedeutet dies  dass Anpassungen f  r den eingesetzten  C Compiler und vor allem f  r den verwendeten Mikrocontroller und dessen Schnittstellen gemacht  werden m  ssen  Endergebnis dieser Modi kationen ist eine Firmware f  r einen Mikrocontroller  wel   che die Programmierung in der gleichen Weise erledigt  wie das PC basierte Programm ispVM Sys   tem  das im vorigen Abschnitt besprochen wurde    Diese Art der Programmierung wurde bislang noch nicht f  r die SandboxS 2 umgesetzt  da ein  Programmierkabel in Verbindung mit ispVM System nur unwesentlich teurer  aber ungleich flexibler  verwendbar ist     6 3 1 3 Flash Direct Programming  Lattice CPU Embedded und AVR    Alternativ zur Programmierung des FPGAs   ber die JTAG Schnittstelle steht der sogenannte  ispCon g Port des FPGAs zur Verf  gung  Auch hierf  r stellt Lattice ein Programmger  st f  r einen  Mikrocontroller zur Verf  gung  das sich CPU Embedded nennt  Ein Vorteil dieser L  sung liegt im  erheblich kleineren Aufwand f  r die Mikrocontrollersoftware  Die Anpassung des Ger  stes an die  konkreten Verh  ltnisse erfordert   hnliche Schritte wie bei der im vorigen Abschnitt besprochenen  L  sung    Das Design der SandboxS 2 sieht bereits alle notwendigen Verbindungen zwischen AVR und FPGA  f  r diese Art der Programmierung vor  Die entsprechenden Leitungen werden doppelt genutzt  F  r  das External Memory Interface des AVR Mikrocontrollers und zugleich f  r die Programmierung des  FPGAs   ber die ispCon g Schnittstelle
129. beeintr  chtigt     x Tipp Hinweis  dessen Beachtung meist Vorteile bringen wird        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007       Vorwort    Als ein schwarzer Hexapodroboter in Hagenberg im Sommer 2003 im Rahmen eines einsemestrigen  Studienprojektes des Jahrgangs 2001 von HSSE seine ersten noch etwas zaghaften Gehversuche un   ternahm  ahnte man noch nichts davon  mit welcher Geschwindigkeit sich diese    Tierchen    quasi wie  von selbst weiterentwickeln w  rden  Denn nach diesem ersten Erfolg wurde die Weiterentwicklung  zun  chst einmal auf Grund der anderweitigen Projekte und Kooperationen mit der Industrie abrupt  gestoppt    Nach einj  hriger Pause fand sich im Herbst 2004 dann aber in einem Jahresstudienprojekt des  HSSE Jahrgangs 2002 wieder eine StudentInnengruppe mit dem Ziel einer Weiterentwicklung des  sechsbeinigen Roboters zusammen  Das Erstlingsmodell aus dem Vorjahr litt an drei Kernproblemen   die von der Gruppe systematisch angegangen wurden     a  Seine Gr    e bedingte leider auch gro  e Probleme mit den Servoantrieben  Die Gelenke waren  nur von geringer Lebensdauer  Die Umkonstruktion in Verbindung mit einer erheblichen Ver   kleinerung f  hrten dann auch zum Roboter    Die wilde 13     Dieser Roboter konnte nun auch auf  der hauseigenen CNC Fr  se gefertigt werden     b            Die urspr  nglich verwendeten Gehmuster waren von den Vorbildern aus der Biologie weit ent   fernt  Sie entstanden haupts  chlich durch immer weiter getriebene
130. ber eine minimale Zusatz        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    5 2 SD CARD 65       beschaltung laut Abb  5 2 an den Mikrocontroller angeschlossen  Die Spannungsversorgung  welche          SS      AVR  USB Buchse TCR dc   NE                         Typ B  Function   amp  s                                     Abbildung 5 2  Anschluss der USB Buchse vom Typ B an den Mikrocontroller     vom USB Host aus   ber das USB Kabel m  glich w  re wird nur vom USB Controller des AVR ge     nutzt     5 2 SD Card    SD Cards ben  tigen eine SPI Schnittstelle mit nur vier Leitungen und er  ffnen neben USB einen  zweiten Weg  um Daten mit der Umgebung auszutauschen  Dar  berhinaus lassen sich auf SD Karten    gro  e Datenmengen ablegen   Der Steckplatz f  r die SD Card  SD Card Slot  ist laut Abb  5 3 an die SPI Schnittstelle des AVR    AVR                                                    1           D 4    Abbildung 5 3  Anschluss des SD Card Slot an die SPI Schnittstelle des AVR  Das zugeh  rige Foto ist  in Abbildung 5 4 zu sehen                 Abbildung 5 4  Foto des Platinenausschnitts zum Schaltplan in Bild 5 3   angeschlossen  Der SD Card Slot verf  gt neben den Anschl  ssen zur Kommunikation mit der Karte  auch zwei Schaltkontakte  welche   e die Anwesenheit einer Karte und    e die Einstellung des Schreibschutzschiebers der Karte anzeigen        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    66    5 ON CHIP PERIPHERIE DES ATMEL AVR AT90USB1286 7      
131. bschnitt 7 7 1  ver  ndert werden  Die dort getrof   fene Einstellung betrifft alle Servos in gleicher Weise    Die Anzahl der Zyklen einer Bewegungssequenz wird dem Register NrOfDeltas entnommen  Hier   durch wird auch die Gesamtdauer der Sequenz bestimmt  Die Relation der verschiedenen Parameter        DeltaPhi       NrOfDeltas                   Servoscheibe    Abbildung 7 15  Eine Bewegungssequenz und ihre Parameter     ist in der Graphik in Abbildung 7 15 verdeutlicht    Rechtzeitig vor Ablauf einer Bewegungssequenz muss die nachfolgende Sequenz    bestellt    werden   Dies kann fr  hestens geschehen  sobald das zu diesem Servo geh  rende Interrupt Flag gesetzt wurde   Wird vom Mikrocontroller keine neue Sequenz angefordert  so bleibt der zuletzt eingestellte Winkel  des Servos erhalten  Eine vom Mikrocontroller geschriebene Bewegungssequenz wird also vom Se   quencer quasi verbraucht  Der Winkel  mit dem die nachfolgende Sequenz beginnt  sollte m  glichst  genau mit dem Winkel   bereinstimmen  der am Ende der momentan ablaufenden Sequenz erreicht  wird  da sonst eine ruckartiger   bergang vom End  auf den Anfangswinkel mit maximaler Servostell   geschwindigkeit erfolgt     Sonderfall  Winkelgeschwindigkeit 0     Pseudomode    PhiDirect      Wird das Register DeltaPhi mit dem Wert 0 beschrieben  entspricht dies der Bewegungsgeschwindig   keit 0  Folgerichtig bewegt sich das Servo dann unmittelbar auf den Startwinkel  PhiStart  und ver   bleibt dort  Das Register NrOfDelta
132. ch  und den CORDIC Modus   Rotate  Vectoring  ausw  hlen  Diese Eingabewerte  werden vom Mikrocontroller aus in einem Regis   terblock abgelegt  der sich aus vier 16 Bit breiten Registern zusammensetzt    Die Zahlenformate der drei Eingabewerte     y und z sind dabei sowohl vom Modus als auch vom  Koordinatensystem abh  ngig und sind in Abschnitt 7 22 1 aufgelistet  Die Rechenvorschrift wird wie  folgt bestimmt        Bit  Adr 1  Adr                               Tabelle 7 35  Register  Koordinatensystem und Modus eines CORDIC Berechnungsauftrages     Bit 2    1     CoordSystem Koordinatensystem der CORDIC Berechnung  Die Zuordnung von Bits  und Koordinatensystem ist in Tabelle 7 36 ersichtlich        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 22 CORDIC KOPROZESSOR    125       Koordinatensystem   CoordSystem       linear 00  zirkular 01  hyperbolisch 10    Tabelle 7 36  Bin  rwerte zur Auswahl des Koordinatensystems    Bit 0     Mode Modus der CORDIC Berechnung  Der Rotationsmodus wird ausgew  hlt  wenn dieses  Bit auf 0 gesetzt wird  bei 1 wird der Vektormodus verwendet     Tabelle 7 37 gibt eine   bersicht  welche Funktionen mit welchem Koordinatensystem bzw  Modus  berechnet werden k  nnen    Im Adressbereich des CORDIC Coprozessor k  nnen bis zu 32 solcher Eingabepakete hintereinan   der abgelegt werden  Es ist m  glich  jede beliebige Anzahl solcher Pakete zwischen 1 und 32 zu einen  Auftrag zusammen zu schn  ren    Ist der Mikrocontroller mit dem Ablegen d
133. ch die geregelte 3 3 V Versorgungsspannung                   Abbildung 5 14  Erweiterungsstecker  10 poliger Wannensteckverbinder  am Mikrocontroller     verf  gbar  Der GND Anschluss ist auf zwei Pins vorhanden  Auf dem Steckverbinder stehen folgende  Anschl  sse des Mikrocontrollers zur Verf  gung     PD2 RXD Port Anschluss PD2 oder Eingang der asynchronen seriellen Schnittstelle des AVRs  PD3 TXD Port Anschluss PD3 oder Ausgang der asynchronen seriellen Schnittstelle des AVRs  PF2 ADC2 Port Anschluss PF2 oder Eingang ADC2 des ADCs im AVR   PD6 TI Port Anschluss PD6 oder Timer Counter Clock Input   1    PF3 ADC3 Port Anschluss PF3 oder Eingang ADC2 des ADCs im AVR  Bitte Vorbelegung mit der  herabgeteilten Akkuspannung beachten  Falls notwendig  k  nnen       R13 und R56 von der  Platine entfernt werden        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    72    5 ON CHIP PERIPHERIE DES ATMEL AVR AT90USB1286 7       Der Pin des Erweiterungssteckers mit der Nr  8 ist nicht angeschlossen und kann daher frei belegt  werden  Hierzu wird er mittels einer Drahtbr  cke  Wire Wrap Draht  mit dem gew  nschten Pin des  AV Rs verbunden     5 7 Anschluss eines Bluetooth RS323 Moduls    An die Erweiterungsschnittstelle ist ein Bluetooth RS232 Modul   auch als Bluetooth Serial Modul  bezeichnet     anschlie  bar  Ein solches Modul erm  glicht die drahtlose Steuerung mittels eines PC   insbesondere mittels eines Laptops mit eingebautem Bluetooth Transceiver    Das Bluetooth Serial 
134. der   berhaupt nur von Sony selbst zu stark   berh  hten Preisen erh  ltlich   Alternativ hierzu kann ein einfaches Adapterkabel leicht selbst konfektioniert werden  Ausgangspunkt  ist ein handls  bliches Verl  ngerungskabel f  r Game Pad Controller  das zu Preisen zwischen 2 und  6     erh  ltlich ist     Ausgangspunkt  Game Pad Verl  ngerungskabel       Abbildung 7 25  Aus einem Game Pad Verl  ngerungskabel entsteht das Adapterkabel f  r die Sand   boxS 2     Dieses Verl  ngerungskabel wird so durchtrennt  das noch etwa 20cm Kabel am Buchsenteil   brig          SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    118 7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP       bleiben  Abb  7 25  links     Nun entfernt man mit einem Messer die Au  enh  lle des Kabels auf einer L  nge von ca  5 cm  mitt   leres und rechtes Bild in Abb  7 25   Hierbei d  rfen die Isolierungen der im Innern liegenden Adern  des Kabels nat  rlich nicht angeschnitten werden  Ausreichend Geduld  etwas Vorsicht und eine ruhige  Hand werden also vorausgesetzt     Farbzuordnung  Wenn man auf die Buchse f  r den Stecker des Game Pad Controllers blickt  schaut dies so aus  wie in  Abb  7 26 zu sehen  Die Nummerierung und die Farbzuordnung der einzelnen Adern sind bei einigen    gr  n       Schneidkamme                Abbildung 7 26  Nummerierung und g  ngige Farbzuordnung der einzelnen Kontakte der Buchse des  Game Pad Verl  ngerungskabels  Der Kontakt mit der Nummer 8 wird vom Game Pad Controller nicht  verwendet
135. der  Kon gurationsdaten     6 3 1 Update der FPGA Konfiguration    Der Flash Speicher des FPGAs kann selbstverst  ndlich mehrfach programmiert werden  wodurch ein  Update des HSSE Robotics Chips m  glich wird  Es ist auch m  glich  ein eigenes Hardwaredesign in  das FPGA einzuspielen  Um Missverst  ndnissen vorzubeugen  nochmals der Hinweis  dass es sich bei  der eingespielten Datei nicht um ein Programm im Sinne von Software  vergleichbar mit einer exe   Datei oder einer hex Datei  handelt  Diese Datei enth  lt vielmehr Informationen  welche unmittelbar  die Schaltung im Innern des FPGAs bestimmen    In den folgenden Abschnitten wird besprochen  welche M  glichkeiten es gibt  um die Kon gurati   onsdatei in das FPGA zu laden     6 3 1 1 Lattice ispVM und JTAG Download Kabel    W  hrend des Entwicklungsprozesses des FPGA Designs steht   blicherweise nur die Kon guration    ber ein spezielles JTAG Download Kabel zur Verf  gung  Sie basiert auf der Verwendung der soge   nannten JTAG Schnittstelle des FPGA Bausteins  Diese Schnittstelle ist f  r vielf  ltige Test  und Pro   grammieraufgaben geeignet  Alle modernen FGPA Bausteine verf  gen   ber eine solche Schnittstelle     ber die sie Kon guriert werden k  nnen    Lieferant der Kon gurationsdaten ist ein PC  Das hierzu notwendige Programm namens ispVM  System kann kostenlos von der WWW Page der Firma Lattice  http    www latticesemi com      Downloads     Software     Top Downloads  ispVM  geladen werden  Hierzu ist eine Regist
136. die tats  chlich vom Fu  punkt eingenommene Raumkoordinate aus  Der Roboter wird sich nur     ungef  hr    wie gew  nscht bewegen    hnlich wie sich ein Betrunkener nur ungef  hr so wie eigentlich  von ihm gew  nscht bewegt    Der HSSE Robotics Chip enth  lt eine Linearisierungseinheit  durch die sich die Ungenauigkeiten  eines Servos in gewissem Rahmen ausgleichen lassen  Insbesondere die bei Billigprodukten ausge   pr  gten Serienschwankungen lassen sich durch diese Funktion in den Griff bekommen        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    92    7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP       7 4 Servo Anschl  sse    Die SandboxS 2 besitzt Anschl  sse f  r 24 Servos  Abbildung 7 7 zeigt den entsprechenden Ausschnitt  des Schaltplans und ein Foto der Steckverbinder f  r die Servostecker    Die Servostecker werden an alle Servoanschl  sse stets so angesteckt  dass sich die Seite auf wel   cher die vergoldeten Crimp Kontakte im Kunststoffgeh  use des Servosteckers sichtbar sind auf der  Oberseite    Best  ckungsseite der Platine  be ndet  Steckt man die Servostecker versehentlich falsch  an  also um 180   verdreht   nehmen die Servos keinen Schaden  funktionieren selbstverst  ndlich aber  nicht    Beim ersten Anstecken eines Servosteckers sind die Crimp Kontakte meist noch etwas zu eng ein   gestellt  Daher muss der Stecker mit erh  hter Kraft und angemessener Vorsicht angesteckt werden    Die Servos werden mit Pegeln nach dem LVCMOS Standard  3 3 V  angesteuer
137. dies nicht der Fall  muss die Drehrichtung durch gleichzeitiges Bet  tigen beider  Tasten ge  ndert werden  Dadurch wird das Bit Reverse im Register ModeIrqMask gesetzt  so  dass der Drehsinn umgekehrt wird  Dies ist beispielsweise f  r Servos des Typs Hitec HS311   HS322HD und HS325HB notwendig     Nun wird PwmLen so lange verringert  bis das Servo am mechanischen Anschlag angelangt  ist oder aber der Wert von PwmLen 0 erreicht hat  Falls das Servo an den mechanischen An   schlag gebracht wurde  wird PwmLen wieder soweit erh  ht  bis das Servo nicht mehr gegen den  Anschlag arbeitet  2 brummt      Als n  chstes wird der Winkelzeiger so aufgesteckt  dass er sich im Bereich des ersten Strahlen   feldes  also ca  4 Uhr  be ndet  In Abb  7 12 ist eine m  gliche Situation nach Abschluss dieses  Schrittes im linken Foto zu sehen        SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    7 6 SERVOLINEARISIERUNG UND  KALIBRIERUNG 101          Abbildung 7 12  Links  Das Servo ist im Uhrzeigersinn an den Anschlag gefahren worden  Dann wurde  der Winkelzeiger so aufgesteckt  dass er sich innerhalb des ersten Strahlenfeldes be ndet  Rechts  Der  Zeiger wurde von der Ausgangsposition zum ersten erreichbaren Strahl gegen den Uhrzeigersinn  matha   matisch positiv  gedreht  Im Beispiel entschied der Zufall f  r die Strahlengruppe mit dem Kreissymbol     e  Aus dieser Position wird PwmLen soweit erh  ht  bis der erste erreichbare Strahl durch durch  die Mitte der kleinen   ffnung im Ze
138. durch einschalten  der Optimierung beheben           usb_standard_request c 335 6  warning   warning with avrgcc  assumes devices descriptors are stored in the lower 64Kbytes of  on chip flash memory  Diese Warnung kann g  nzlich ignoriert werden  Beachten muss man sie nur  wenn man Konstanten  verwendet die gr    er als 64Kbytes sind  z B  Bilder  Audio   Dabei kann es sein  dass die USB   Deskriptor Tabelle ausserhalb der 64Kbyte Grenze  im Flash Speicher  gelegt wird  vom Kompiler   und nicht mehr gelesen werden kann  Zur L  sung des Problems wird auf die Datei conf_usb h  Zeile 149 verwiesen           SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    32 2 ERSTE SCHRITTE          Abbildung 2 13  Projekt   bersetzen     2 4 4 Programm ausf  hren    Um das nun erfolgreich   bersetzte Programm auf der SandboxS 2 auszuf  hren  gibt es zwei M  glich   keiten  Das Programm wird in beiden F  llen auf den Mikrocontroller   bertragen  Da der Mikrocon   troller   ber einen Flash Speicher verf  gt bleibt das Programm auch nach dem Ausschalten erhalten   Bei der ersten Variante wir mit dem Programmier Dialog gearbeitet  bei der Zweiten mit dem Debug   ger    Bevor mit der   bertragung begonnen werden kann  muss die Sandbox mit dem JTAG ICE verbunden  werden  Abbildung 2 14         Abbildung 2 14  SandboxS2 mit angeschlossenem JTAG ICE     2 4 4 1 Verwenden des Programmier Dialogs      ber diesen Dialog lassen sich s  mtliche Einstellungen des Mikrocontroller ver  ndern  Dadurch ka
139. e Zeichenfolge  f  gt sie in den Sendepuffer ein        Parameter   Bedeutung  str Pointer einer Zeichenfolge                    R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Diese Funktion blockiert wenn der Puffer voll ist  Was jedoch nur Auftritt  wenn keine Interrupts  aktiviert sind  oder wenn die Hardware Flusskontrolle verwendet wird und die Gegenstelle nicht  bereit ist     e Bevor diese Funktion verwendet werden kann  muss uart init    aufgerufen werden     Beispiel    siehe Abschnitt 9 6 1    9 6 5 uart getc    char uart getc         SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    166 9 SOFTWARE FUNKTIONSBIBLIOTHEK       Beschreibung    Empf  ngt ein Zeichen  entfernt es aus dem Empfangspuffer     R  ckgabewert       R  ckgabewert   Beschreibung  Data Gibt das empfangene Zeichen zur  ck                    Anmerkung    e Diese Funktion blockiert wenn der Puffer leer ist  Sind keine Interrupts aktiviert k  nnen auch  keine Zeichen empfangen werden  Wird die Flusskontrolle verwendet wird der Gegenstelle mit   geteilt das sie keine Daten mehr senden soll  bis der Puffer wieder leer ist     e Bevor diese Funktion verwendet werden kann  muss uart init    aufgerufen werden     Beispiel    siehe Abschnitt 9 6 1    9 6 6 uart is rx empty    char uart is rx empty       Beschreibung    Pr  ft ob der Empfangspuffer leer ist                       R  ckgabewert   R  ckgabewert   Beschreibung   Data Gibt Null zur  ck wenn der Puffer nicht leer i
140. e displaced corpus system to the coxa system  Coords   IK_GivensTransformation  Coords  2        calculate the inverse kinematics  IK_SetLegMovementCoxa  2  Coords x  Coords y  0  IK_KNEE_UP                     for          return 0     9 10 SD Karte    9 10 1 mmc init    uint8 t mmc init      Beschreibung    Initialisiert die SD Karte     R  ckgabewert       R  ckgabewert   Beschreibung       FAILED Die Initialisierung ist fehlgeschlagen              SUCCESSFUL   Die Funktion wurde erfolgreich ausgef  hrt           Anmerkung  e Die SD Karte muss eingelegt sein     e Bevor diese Funktion verwendet werden kann  muss 5 2 Init    aufgerufen werden     Beispiel    Siehe Beispiele der folgenden Funktionen        SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    210    9 SOFTWARE FUNKTIONSBIBLIOTHEK       9 10 2 fat cluster data store    void fat cluster data store         Beschreibung    Liest Kon gurationsdaten wie Clustergr    e  Anzahl der Bytes pro Cluster      von der SD Karte und  legt diese in einer Datenstruktur ab    Diese Datenstruktur wird nur intern verwendet  die darin enthaltenen Daten k  nnen   ber die Funktio   nen GetClusterSize   und GetBytesPerSec   ausgelesen werden           R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung  e Die SD Karte muss eingelegt und initialisiert sein  mittels mmc  init         e Bevor diese Funktion verwendet werden kann  muss 5 2 Init    aufgerufen werden     Beispiel    siehe Beispiel in Abschnitt 9 10 4
141. e verdrehen kann  Um den Motor mit elektrischer Energie zu versorgen   werden zumindest zwei Anschl  sse gebraucht  Masse  GND  und die positive Versorgungsspannung   typischerweise zwischen 4 und 6 5 V     Der oben angesprochene Befehl f  r den Stellwinkel wird   ber ein drittes Kabel   bertragen  das  ebenfalls das Massekabel als R  ckleitung verwendet  Die Mitteilung des gew  nschten Winkels erfolgt       SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    88    7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP         i      ber die Dauer eines Spannungsimpulses  von mehr als 2 V   Der au  erhalb dieser Zeitdauer anlie   gende Spannungspegel liegt nahe bei       so dass die beiden Spannungen leicht unterscheidbar sind   Die Dauer des Impulses bestimmt unmittelbar die Winkelstellung des Servoarms  In Abbildung 7 3  ist der Zusammenhang graphisch dargestellt  Der HSSE Robotics Chip erzeugt mittels eines vom Mi        Abbildung 7 3  Die Pulsdauer steuert den Servostellwinkel     krocontroller aus parametrisierbaren Pulsgenerators Impulse zur Steuerung von 24 Servos   Abbildung 7 4 zeigt Beispiele von Impulsl  ngen und zugeh  rigen Servohebelwinkeln  Das Ser        tp    12 ms       1     ca  20 ms    m 1 5 ms         L    ca  20 ms    t  141 858                     L    ca  20 ms    Abbildung 7 4  Beispiele f  r die Stellung des Servoarms in Abh  nigkeit von der Impulsdauer     vo im Bild stellt den Servohebel mit gr    er werdender Impulsl  nge im Uhrzeigersinn weiter  Die  Richtu
142. e z entspricht in diesem Modus einem Winkel in Radiant wobei    dem Wert 12868        212   entspricht  Um sicherzustellen  dass die Berechnung konvergiert  muss der Winkel innerhalb  des Bereichs 0     z   212 liegen     e Sowohl das Ergebnis von Sinus und Cosinus weisen eine Verst  rkung von Kecir auf     e Die Genauigkeit von beiden Berechnungen betr  gt 14 54 Bit     Die Datenformate in diesem Modus sind in den Abbildungen 7 39 und 7 40 dargestellt             Bit T  Adr 1 unsigned 3 downto  4   Adr unsigned  5 downto  12              Tabelle 7 39  Register  Eingabewerte von x  y und z des CORDIC Algorithmus  Zirkularer Rotationsmo   dus   Schreib  und lesbar     Bit  Adr 1 signed 1 downto  6     Adr signed  7 downto  14     Tabelle 7 40  Register  Ausgabewerte von x und y des CORDIC Algorithmus  Zirkularer Rotationsmo   dus   Schreib  und lesbar           Zirkularer Vektormodus  e Der Eingangwert von z sollte in diesem Modus immer 0 sein     e Nur das Ergebnis der Wurzelfunktion weist eine Verst  rkung von       auf  Die Berechnung des  Arkustangens hat keine Verst  rkung     e Die Genauigkeit der Berechnung des Arkustangens betr  gt 14 7 Bit  jene der Wurzelfunktion  16 15 Bit     Die Datenformate in diesem Modus sind in den Abbildungen 7 41 und 7 42 dargestellt     Linearer Rotationsmodus  Die Genauigkeit der Berechnung betr  gt 17 19 Bit   Die Datenformate in diesem Modus sind in den Abbildungen 7 43  7 44 und 7 45 dargestellt        SVN 408  PFAFF  SEPTEMBER 20  2007
143. ebereich  0 4095  Adr 0x8D8 2n          ist die Kanalnummer  1 bis 12   Initialwert nach dem Einschalten  0x0000  Nur lesbar     7 13 1 3 Register RcRxStatus    Dieses Register gibt Informationen   ber die derzeitige Empfangslage des Fernsteuerempf  ngers  so  dass beurteilt werden kann  ob der Empfang gest  rt oder aber einwandfrei ist                                Bit 7 6 2 4 3 2 1 0  0  87  1                0x87F0                 RxOk          Tabelle 7 22  Register  RcRxStatus  Der Initialisierungswert nach dem Einschalten ist 0x0000  Nur lesbar     Bit 0     RxOk Dieses Bit tr  gt den Wert     wenn der Empfang des Fernsteuerempf  ngers gest  rt ist   Kann der RC Empf  ngerdecoder das empfangene Signal decodieren  so ist dieses Bit mit dem  Wert 1 versehen  In diesem Fall ist der Empfang mit hoher Wahrscheinlichkeit einwandfrei        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 14 PS 2 MAUSINTERFACE 113       7 14 PS 2 Mausinterface    Am PS 2 Anschluss k  nnen handels  bliche M  use angeschlossen werden  Ger  te neuerer Bauart ar   beiten meist fehlerfrei  w  hrend viele   ltere Ger  te auf Grund von Normabweichungen nicht verwend   bar sind  Ein Ger  t sollte also  vor dem Kauf  an der Schnittstelle getestet werden    Die Maus wird von der SandboxS 2 nur erkannt und verwendet  wenn sie bereits vor dem Einschal   ten der Spannungsversorgung angesteckt wurde    Die PS 2 Buchse ist nach Abb  7 21 am FPGA angeschlossen            Py PE y MGE Men   ER    e fin I
144. eginnt stets erst nach dem vollst  ndigen Ablauf der vorigen Se   quenz  Das Ende einer Sequenz ist am Wert 0 im Register DeltasToGo erkennbar    Zu Beginn einer neuen Sequenz wird  wie in Abb  7 14 zu sehen  der Wert aus PhiStart in das Regis     N  chste Laufende  Sequenz Sequenz    Abbildung 7 14  Registerinitialisierung zu Beginn einer Bewegungssequenz     ter CurrentPhi geladen  Der Wert aus DeltaPhi wird in CurrentPhi geladen und die Anzahl der Servo   pulszyklen in DeltasToGo wird auf den Startwert aus NrOfDeltas gesetzt  Ist dies geschehen  so wird  das Interrupt Flag f  r dieses Servo im Interrupt Flag Register laut Abschnitt 7 2 gesetzt  Dieses Flag  zeigt an  dass eine neue Sequenz vom Mikrocontroller angefordert werden darf  Das Interrupt Flag  wird in jedem Fall gesetzt und kann nur durch Auslesen des entsprechenden Interrupt Flag Registers  wieder gel  scht werden  Ein Interrupt auf Leitung INT1 wird in Folge des gesetzten Interrupt Flags je   doch nur dann ausgel  st  wenn das zugeh  rige Mask Bit in Register ModelrgMask  Abschnitt 7 5 3 1   gesetzt ist     Interrupt f  r eine Servogruppe   Werden mehrere Servos mit Sequenzen im gleichen Rhythmus gesteuert  bedeutet dies typischerwei   se  dass f  r alle Servos Sequenzen mit identischen NrOfDeltas zum gleichen Startzeitpunkt vom Mi   krocontroller aus angefordert werden       diese Sequenzen werden praktisch gleichzeitig     n  mlich  unmittelbar nach Start der Sequenz     zum Setzen ihres jeweiligen Interrupt 
145. eh  rigen Schneidkamm eingedr  ckt  wobei ein Teil eines weiteren Steckers  behilflich ist              wi 5    0  Hd p ene n       Abbildung 7 30  Zugentlastung mit einem Umlenkb  gel und zwei Kabelbindern  Im rechten Bild ist das  Komplettsystem bei Verwendung eines Playstation 2 Controllers der Firma Logitech zu sehen        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 17 SONY PLAYSTATION 2 GAME PAD CONTROLLER    121       7 17 1 1 Register SonyPs2GamePadButtons    Dieses Register gibt an  welche Tasten auf dem Game Pad Controller gedr  ckt sind und welche nicht   Die nachfolgende Registerbeschreibung gilt nur dann vollst  ndig  wenn der Game Pad Controller mit  der Taste    analog    in den Modus analog  rote LED leuchtet  versetzt wurde  Ist der Modus digital  ausgew  hlt  so sind die Bits mit der Bezeichnung JoyR und JoyL fest mit dem Wert 1 belegt  Jedes    Bit 5 4 3 2 1 0  0x87C3    R2 L2       RI LI  ow   lt   Y   gt      s                        Tabelle 7 29  Register  SonyPs2GamePadButtons  Nur lesbar  Die Zeichen   1  X     und    sind als  Sinnbilder auf den Tasten auf der rechten Seite des Controllers zu nden  Die ausgef  llten Pfeile bezeich   nen die Richtungen  in welche der    Tastenjoystick    auf der linken Seite des Controllers bet  tigt wird  Die  beiden Tasten    Start    und Select  nden sich in der Mitte  Die Tasten mit den Bezeichnungen L1        L2  und R2 be nden sich auf den    Schultern    des Controllers  wo sie bequem mit den Zeige n
146. ehen  Die Formel zur    Umrechnung des Zahlenwerts in die entsprechende Spannung ndet sich im Datenblatt des             e Bevor diese Funktion verwendet werden kann  muss SL2_Init    aufgerufen werden        Beispiel    Einschalten von AVR LED 1 wenn die Spannung am Eingang von ADC 3 den Wert 100 unterschreitet   dieser Wert entspricht nicht 100mV       int main        uinti16 t AdcVal   0          function that has to b xecuted in every appli     cation to initialize the interface with the FPGA  SLZ Init       while 1      AdcVal   SL2_ExtAvrGetAdcValue  EXT_ADC_3    if  AdcVal  lt  100              SL2 AvrSetMsgLed  SL2 MSG LED 1  SL2 MSG LED STATUS ON                       return 0     9 5 Schnittstellen und Datenstr  me  USB und UART     Um eine gewisse Unabh  ngigkeit von der Hardware zu erreichen  kann f  r die Ausgabe die Biblio   thek stdio h aus der    avr libc    verwendet werden  Dabei werden so genannte Datenstr  me  Streams   erstellt  die dann mit Standardfunktionen benutzt werden k  nnen  Somit macht es von der Program   mierung her keinen Unterschied ob man   ber UART oder USB kommuniziert  F  r eine genauere  Beschreibung wird auf das    avr libc    Manual verwiesen  welches mit WinAvr installiert wird  In dem  folgenden Codeabschnitt wird die Erstellung und Verwendung von Streams gezeigt   VMMMfMYttLlitll                  pP pg aaaeMl FM MM MM Pg gg cM MI      includes           EE EE E      EE ET IEEE EE EE E P EE EAE    standard input   output functions  
147. eleert  wurden  Dieses Verhalten erm  glicht auf Wunsch die Verwendung des Level Controlled Interrupt des  AVR    Es ergibt sich folgende Vorgehensweise zur Verarbeitung der Interrupt Anforderungen  die vom  HSSE Robotics Chip kommen     e External Interrupts von den Pins INTO und INT1 des AVR Mikrocontrollers w  hrend der In   itialisierungsphase freigeben     e Interrupt Mask Bits der Peripherieeinheiten setzen  Wert 1    wenn diese einen Interrupt   Request ausl  sen sollen  H  u gster Fall ist die Freigabe von Interrupt Requests f  r den Ser   vosequencer des Servos mit der h  chsten Servonummer     e Interrupt Routinen f  r die beiden Interrupt Anforderungen von INTO und INTI erstellen   Grunds  tzlicher Aufbau beider Routinen        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 2 INTERRUPTS 85       a  Auslesen und Zwischenspeichern aller zum ausl  senden Interrupt Request geh  renden  Interrupt Flag Register  Hierdurch wird die Interrupt Anforderung seitens des Robotics   Chips zur  ckgenommen und es werden alle ausgelesenen Interrupt Flags gel  scht     b  Bearbeiten aller ma  geblichen Interrupt Flags aus allen ausgelesenen Interrupt Flag   Registern     c  R  ckkehr aus der Interrupt Service Routine des External Interrupt Requests  INTO   INTI      Alternativ kann statt einer Interrupt Verarbeitung auch ein Polling auf die Interrupt Flag Register  durchgef  hrt werden  Hierzu werden die entsprechenden  oder alle  Interrupt Mask Bits deakti   viert  Wert 0 
148. em Register PwmLen  das direkt vom Mikrocontroller aus beschrieben wird  Im wesentlich  komfortableren Modus PhiSpeed wird die Pulsl  nge von der Linearisierungseinheit  Abschnitt 7 6   berechnet  die wiederum vom Servo Sequencer  Abschnitt 7 7  automatisch mit einem Bewegungsab   lauf versorgt werden kann    Der Modus PwmDirect ist haupts  chlich zur Kalibrierung der Servos und zu Debuggingzwecken  gedacht     7 5 2 Pulsunterdr  ckung    Mittels Bit 0     Active in Register ModeIrqMask kann die Ausgabe eines Pulses unterdr  ckt werden   Ist dieses Bit mit dem Wert 0 beschrieben  so wird kein Puls ausgegeben  Dies ist auch der Initiali        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 5 SERVOPULSGENERATOR 93       ee     4      Servo 0 bis 5                                              Servo 12 bis 17                                                                      J Servo 18 bis 23                                                         E UNE e        1   E          SS    emm           13 Sons       Abbildung 7 7  Servoanschl  sse am FPGA  Im Foto ist nur die H  lfte der Servoanschl  sse am unteren  Platinenrand zu sehen  Die Anschl  sse f  r die Servos 0 bis 11 be nden sich am oberen Rand        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    94    7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP       375ns 0 732 ms  Servopulsformung       zyklischer  Servosteuer   ungspuls    TuneCoarse                Abbildung 7 8  Der Servopulsgenerator und seine Parametr
149. em eine bestimmte Verst  rkung  auf  siehe Tabelle 7 38      Modus   zirkular   linear   hyperbolisch  K   1 646760258121   1   0 8281593609602       Tabelle 7 38  K in Abh  ngigkeit vom Modus  K REUZGRUBER  2007      7 22 1 Zahlenformate  Genauigkeit    Der CORDIC Algorithmus ben  tigt drei 16 Bit Register f  r die Ein  Ausgangswerte  deren Daten   formate abh  ngig vom gew  hlten Koordinatensystem und Modus interpretiert werden  In diesem Ab   schnitt sind alle Datenformate jeweils fiir die Eingangs  und Ausgangswerte von x  y und z angefiihrt        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 22 CORDIC KOPROZESSOR 127       Da in jeder Berechnung ein Wert zu    wird     z im Rotationsmodus bzw  y im Vektormodus      ist f  r diese Ausgangswerte kein Zahlenformat angegeben  Ob eine Berechnung konvergiert hat  er   folgreich war  kann durch lesen dieser Register bestimmt werden  Theoretisch sollten diese Register  immer gleich    werden  wenn die Berechnung konvergiert  Durch die nicht unendliche Anzahl von  Berechnungsschritten und die beschr  nkte Darstellung der Zahlenwerte wird dieser Wert h  u g nicht  exakt 0    berschreitet der Betrag dieser   Ungenauigkeit den Wert 20  so kann davon ausgegangen  werden  dass die Berechnung nicht erfolgreich war und alle Ergebnisse ung  ltig sind    Die   berpr  fung dieses Registers ist nicht n  tig  wenn sichergestellt wird  dass die angegebenen Wer   tebereiche nicht   berschritten werden     Zirkularer Rotationsmodus  
150. en 60 mA  Diese langsame Entladung in ca  2 Tagen baut den Memory Effekt gr  ndlich ab       41 7         Entladen      Die Entladeschaltung wird nur aktiv  wenn eine Akkuzelle verkehrt herum in den Batteriehalter  eingelegt wird  Liegt die Akkuzelle in der normalen Richtung im Halter  ist die Diode gesperrt und es  flieBt kein Strom    Die Entladeschaltung ist auch f  r ein auf den ersten Blick merkw  rdiges Verhalten verantwortlich   das sich beobachten l  sst  wenn vier Akkuzellen best  ckt sind und der f  nfte Platz leer bleibt  Auch  dann arbeiten Mikrocontroller und FPGA bereits  Sobald aber ein Servo bewegt werden soll  versagt  das System seinen Dienst und l  st selbstt  tig einen Reset aus  Diode und Widerstand   berbr  cken  bei fehlender Akkuzelle den leeren Batteriehalter  Die Spannung der verbleibenden vier Akkuzellen   4 8 V Diodenkniespannung  also 4 1 V  reicht zum Betrieb der 3 3  V Komponenten aus  Steigt der  Strom jedoch an  so f  llt am Widerstand  10     bereits eine nennenswerte Spannung ab  Die Gesamt   spannung reicht dann selbst zum Betrieb von FPGA und Mikrocontroller nicht mehr aus        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    52 3 ENERGIEVERSORGUNG       3 6 Verpolungsschutzschaltung    Da eine negative Spannung zur sofortigen Zerst  rung der Elektronikkomponenten der Platine f  hren  w  rde  ist ein Verpolungsschutz vorhanden  Die in Abb  3 6 dargestellte Schaltung verwendet statt                    Positiver  Akkuspannungspol  vom
151. en Rahmen Al  Abb  7 11  linkes Foto  vorgenommen        Abbildung 7 11  Bau der Winkelkalibriereinrichtung  Im linken Foto ist das Bauteil A2 zur genauen  Positionierung des Servos auf die Winkelrosette aufgeklebt worden  Die Bauteile f  r den Winkelzeiger  sind im mittleren Foto zu sehen  Rechts der komplettierte Winkelzeiger     Der Bau des Winkelzeigers ist im mittleren und rechten Foto in Abb  7 11  Die ben  tigten Schrauben  von 6 5 mm L  nge liegen dem Bausatz des Roboters Captain Ahab bei  In Abb  7 11 rechts ist der  zusammengebaute Winkelzeiger zu sehen     Der Kalibriervorgang  a  Zur Kalibrierung wird das Servo zun  chst mit einem Aufkleber gekennzeichnet und dann in    b                                  die Kalibriervorrichtung gesetzt  Mit einem passenden mehrfach gefalteten                             kann  das Servogeh  use im Rahmen Al der Vorrichtung xiert werden  Allzu fest braucht es nicht  eingeklemmt zu werden     Um das Servo kalibrieren zu k  nnen wird ein Programm f  r den AVR auf der SandboxS 2  ben  tigt  mit dem der Wert im Register PwmLen ver  ndert und ausgelesen werden kann  Hierzu  ist beispielsweise das in Abschnitt 2 6 beschriebene Programm CalibrateServo geeignet     Das Programm sollte mit einer mittleren PwmLen  also etwas 2048 starten  Diese PwmLen  kann leicht mit den Tasten eingestellt werden  Nun wird das Servo an den Anschluss Servo0  angeschlossen  Wird PwmLen vergr    ert  so muss sich das Servo gegen den Uhrzeigersinn  drehen  Ist 
152. er  ndert werden    Die Verwendung des Terminal Programms wurde bereits in Abschnitt 2 4 4 beschrieben     2 6 6 Zusammenfassung    In diesem Beispiel wurde der PwmDirect Modus des Robotics Chips verwendet  Mit diesem l  sst  sich ein Servo direkt   ber PWM Impulse steuern  Der Winkel als Eingabe der PWM Impulsl  nge  ist jedoch nicht linear  Dies soll mit der Sevolinearisierung kompensiert werden  Ebenfalls ist die  Standarddrehrichtung zu ber  cksichtigen  sie kann f  r jede Servo Serie anders sein  Die ermittelten  Daten werden in Kapitel 8 verwendet     Nach der erfolgreichen Kalibrierung und Archivierung der Messreihen kann der Hexapod zu     sammengebaut werden   N  here Informationen be nden sich im beigelegten Captain Ahab   Bau    Mechanikhandbuch     2 6 7 Aufgaben    Diese Aufgaben sollten erf  llt werden  bevor das n  chste Kapitel begonnen wird        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    2 6 SERVOKALIBRIERUNG MIT WINKELZEIGER 47       a  Um den Kalibrierungsvorgang zu erleichtern soll die Geschwindigkeit der Servodrehbewegung   durch l  ngeres Dr  cken einer Taste  erh  ht werden  Erweitern Sie nun ihr Programm um diese  Funktionalit  t     b  Durch die Beschleunigung der Drehbewegung kann der Wertebereich der Variable pwm  0    4095  schnell verlassen werden  Implementieren Sie nun zwei Abfragen  die die Werte der Va   riable pwm in den Grenzen    bis 4095 halten  Nimmt die Variable den Wert 0 an darf sie nicht  mehr decrementiert werden  Nimmt 
153. er AVR Platt   form zu entwickeln  Dazu z  hlen Kompiler  Assembler  Simulator  Debugger und Programmer  Wei   ters enth  lt es die C Standard Bibliothek f  r AVR  avr libc  und deren Dokumentation  Der Kompiler  basiert auf der GNU Compiler Collection  GCC  und wurde speziell an die AVR Plattform angepasst   Das komplette Paket steht unter der General Public License  GPL  Lizenz und kann daher ohne zu   s  tzliche Geb  hren verwendet werden        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    16 2 ERSTE SCHRITTE       WinAVR 20070525 Setup                  Welcome to the WinAVR 20070525  Setup Wizard    This wizard wil guide you through the instalation of WinAVR  20070525    Its recommended that you dose      other acokicasons  before starting Setup  Ths mil make it possible to update  relevant system fies without having to reboot your  computer            ext to                 WinAVR 20070525 Setup   WinAVR 20070525 Setup    License Agreement Choose Install Location  Pease review he            terms before retains              20070525    Choose the folder in misch to instal              22070525          Press Page Down to see the rest of the agreement  Setup wil ratal WinAVR 20070525    the following folder  To install n a different folder  dick    Browse and select another folder  Cick Next to continue           WINAVR Licensing informaton                                               detribuled under the GNU GPL                    Compier Collection            
154. er CurrentPhi    Dieses Register enth  lt eine vorzeichenlose Festkommazahl im Format 12 4  also mit 12 Vorkommas   tellen und 4 Nachkommastellen  Werden die Nachkommastellen nicht gebraucht  so kann der Wert aus  dem Register einfach um vier Stellen nach rechts geschoben werden  Der Wert  der aus dem Register  ausgelesen werden kann  gibt den derzeit vom Servo Sequencer vorgesehenen Servostellwinkel an    Wird auf das Register vom Mikrocontroller geschrieben  kommt es zu unde niertem Verhalten  Das  Register sollte daher ausschlie  lich gelesen werden              Bit 7 6 5 4 3 2 1 0  Adr 1 unsigned 11 downto 4   Adr unsigned 3 downto  4        Tabelle 7 12  Register  Current Phi  Dieses Register hat nur im Mode PhiSpeed eine Bedeutung   Adr 0x8680 2ns  ng ist die Servonummer  0 bis 23   Nur lesbar     7 7 0 3 Register DeltaPhi    Dieses Register enth  lt eine vorzeichenbehaftete Festkommazahl im Format 10 4  also mit 10 bin  ren  Vorkommastellen  inkl  Vorzeichen  und 4 bin  ren Nachkommastellen  Dieses Format erlaubt eine ho   he Genauigkeit bei der Steuerung der Servobewegung  Der AVR Mikrocontroller kennt dieses Zahlen   format nicht und kann lediglich vorzeichenbehaftete Ganzzahlen von  8192 bis  8191 im Zweierkom   plementformat in das Register schreiben  Der HSSE Robotics Chip dividiert diese Zahlen durch 16   bevor sie als Winkelinkrement verwendet werden  Damit wird der kleinste Inkrementwert zu 0 0625       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 7 
155. er Eingabewerte in den entsprechenden Registern fertig   so schreibt er in das Register NrOfCordicToDo die Anzahl der Pakete  die berechnet werden sol   len  Damit sind automatisch immer die Pakete mit den Nummern 1 bis Anzahl Pakete  innerhalb des  Adressbereiches gemeint  Durch das Schreiben dieses Registers wird die Berechnungst  tigkeit der  CORDIC Recheneinheit gestartet  Diese beginnt beim Paket mit der h  chsten Nummer und arbeitet  sich Paket f  r Paket bis zum Paket Nr  1 weiter  Das Register NrOfCordicToDo dient synchron zum  Berechnungsvorgang zur Buchf  hrung und enth  lt stets die Anzahl der noch ausstehenden Pakete    Alle in Auftrag gegebenen Pakete mit einer h  heren Nummer  als sie aus dem Register NrOfCordic   ToDo gelesen wird  sind bereits fertig berechnet  Die Ergebnisse legt der CORDIC Prozessor in den  gleichen Registern ab  in denen er die Eingaben vorgefunden hat  Der Mikrocontroller kann diese Er   gebnisse bereits auslesen  w  hrend der CORDIC Prozessor noch mit Paketen mit niedrigerer Nummer  besch  ftigt ist    Um den CORDIC Prozessor weitgehend auszulasten  ist es m  glich  unmittelbar nach dem Ausle   sen der Ergebnisse aus einem Paket bereits wieder die Daten f  r einen neuen Berechnungsauftrag in  das Registerpaket zu packen  Der neue Auftrag sollte aber erst nach der vollst  ndigen Abarbeitung  aller noch zu erledigenden Berechnungen durch das Schreiben auf NrOfCordicToDo erteilt werden   Die vollst  ndige Bearbeitung des letzten Auftrags ist
156. er nachgehen darf  Die Farbzuordnung wird wieder  Abb  7 26 entnommen    Sollte das verwendete Kabel andere als die dargestellten Farben verwenden  wird dies am besten  zuerst mittels eines Durchgangspr  fers gemessen und im Bild7 26 eingetragen  Ein fehlerhaftes Kabel  kann zur Zerst  rung der SandboxS 2 oder des Game Pad Controllers f  hren    Bevor ein Kabelf  hrungsb  gel dessen Snap In Halter nicht abgebrochen wurden entg  ltig alle  Adern sichert  sollte nochmals mit dem Durchgangspr  fer die korrekte Zuordnung der Kontakte im  Sony Steckverbinder zu den noch freiligenden Schneidklemmkontakten gepr  ft werden  Wurde eine  falsche Ader eingedr  ckt oder Adern verwechselt  so ist dieser Fehler zu diesem Zeitpunkt noch leicht  zu beheben  Bei wiederholter Montage muss aber wieder ein unverletztes St  ck der Kabelisolation auf  dem Schneidklemmverbinder zu liegen kommen     Zugentlastung des Kabels   Die Zugentlastung wird in der Abfolge aus Abb  7 30 unter Zuhilfenahme zweier Kabelbinder vor   genommen  Zun  chst wird der mit dem Flachbandsteckverbinder gelieferte Umlenkb  gel aufgesteckt  und festgepresst  Anschlie  end wird das Kabel mit zwei Kabelbindern an diesem B  gel befestigt  Das  Endergebnis ist im rechten Foto zu sehen        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    120 7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP        e     Abbildung 7 29  Einzeladern werden in den eigentlich f  r Flachbandkabel gedachten Stecker eingelegt   Jede Ader wird in den zug
157. ervoPhiDirect  0  1609                  512 AvrWaitOnKey  SL2 KEY 0  SL2 KEY PRESSED    SL2 AvrWaitOnKey  SL2 KEY 0  SL2 KEY         PRESSED                                         return 0        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 8 ROBOTICSCHIP 181       9 8 10 RC_GetServoDeltasToGo    inline uintl6_t RC GetServoDeltasToGo  in  uint8 t ServoNumber     Beschreibung    Liest die Anzahl der noch abzuarbeitenden Winkelschritte aus dem RoboticsChip  Diese Funktion  liefert nur sinnvolle Werte  wenn das angegebene Servo im Modus PhiSpeed arbeitet        Parameter Bedeutung  ServoNumber   Nummer des Servos  dessen Anzahl noch abzuarbeitender Winkelschritte ge   lesen werden soll  Die Nummerierung der Servos ist in Abb  7 1 auf Seite 81  ersichtlich                    R  ckgabewert       R  ckgabewert   Beschreibung  Deltas Anzahl der noch abzuarbeitenden Winkelinkremente                    Anmerkung    e Um RC  GetServoDeltasToGo    verwenden zu k  nnen  muss der angegebene Servo zu   vor in den Modus RC  SERVO  MODE PHI DIRECT geschalten werden           e Wenn RC GetServoDeltasToGo   direkt nach RC SetServoPhiSpeed   aufgeru   fen wird  so wird nicht der soeben geschriebene Wert f  r die Anzahl der Winkelschritte zur  ck   gegeben  da der RoboticsChip nur alle 20 ms die Daten aus den Registern    abholt        e Bevor diese Funktion verwendet werden kann  m  ssen 51 22 Init    und RC  Init    aufge   rufen werden     Beispiel    Die Werte aus dem DeltasToGo 
158. ervos istin Abb  7 1 auf Seite 81 ersichtlich           R  ckgabewert       R  ckgabewert    Beschreibung          Phi       Position des Servos  4095 180    0 0                 SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    184 9 SOFTWARE FUNKTIONSBIBLIOTHEK       Anmerkung    e Um RC_GetServoCurrentPhi    verwenden zu k  nnen  muss der angegebene Servo zu   vor in den Modus RC_SERVO_MODE_PHI_DIRECT geschalten werden                 e Wenn      GetServoCurrentPhi   direkt nach      SetServoPhiSpeed   aufgeru   fen wird  so wird nicht der Startwinkel zur  ckgegeben  da der RoboticsChip nur alle 20 ms die  Daten aus den Registern    abholt        e Bevor diese Funktion verwendet werden kann  m  ssen 51 22 Init    und RC  Init    aufge   rufen werden     Beispiel    Die Werte aus dem CurrentPhi Register werden an den ersten 11 Servo LEDs angezeigt  Dabei  ist jeder LED ein bestimmter Winkel zugeordnet  Wird dieser Winkel   berschritten  so wird die LED  eingeschaltet  Dies hat zur Folge  dass w  hrend der Bewegung des Servos die LEDs nacheinander  eingeschaltet werden     int main         uintl16 t Data   0   uint8 t LedIdx   0       proxy function for whole initialization  initi        clear all LEDs again  RC SetLedClearA11             RC SetServoMode 0  MODE PHI DIRECT      RC SetServoPhiSpeed 0  0  2    4  1024      time needed for movement  1024 Steps    20 ms   20 5 sec    delay  ms  20            1    1         maximum value  2048   2 1024      number of LEDs  
159. erwendet wird  Abbildung 2 12         SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    28 2 ERSTE SCHRITTE              bea pa pa ye ja pbg pee  gt   282492  543  an E EEKEI 1         256   8                       659   59               memory  e    UR          Doas          GE E       Abbildung 2 12  Kompiler Einstellungen        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    2 4    HELLO WORLD    IN DER SANDBOX VERSION 29       2 4 2 Programm schreiben   Ein neues Projekt sollte nun bereit sein  Auf welche Weise es erstellt wurde ist f  r dieses Beispiel  unerheblich    2 4 2 1 Programmspezifikation    Das Programm bringt die LED Msg AvrO zum Aufleuchten  Wenn man die Taste Key_AvrO dr  ckt  leuchtet auch die LED Msg Avr1 auf  Zus  tzlich wird die Zeichenkette    Hello World       ber die USB  und UART Schnittstellen ausgegeben     2 4 2 2 Quellcode    LIT       Workfile   main c     Author   Christian Raschko     Date   2007 08 20     Description   main program     Revision n   3k ok ob AE ob oe o AE E e E e E kk    oe kk ob e V Y c e ck                VIV M EB LE A EE     includes  2721017702 122 2271 2 7251 EE LED AAA EE      standard library includes  include  lt stdio h gt      AVR specific includes  include  lt avr interrupt h gt     hexapod library includes  include  SandboxS2 lib h   include  uart h    include  uart usb lib h           EE E TERR               UULU UALL ALAANU ULAIA ALLOULA LILU LEIE     global variables definitions   DEALS IN EST IL 7 EL
160. es Servos           Anmerkung    e Um RC GetServoCurrentDeltaPhi    verwenden zu k  nnen  muss der angegebene Ser   vo zuvor in den Modus      SERVO MODE PHI  DIRECT geschalten werden        e Wenn RC GetServoCurrentDeltaPhi   direkt nach      SetServoPhiSpeed    aufgerufen wird  so wird nicht das neue Winkelinkrement zur  ckgegeben  da der RoboticsChip  nur alle 20 ms die Daten aus den Registern   abholt      e Bevor diese Funktion verwendet werden kann  m  ssen 5 2 Init    und      Init    aufge     rufen werden        SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    9 8 ROBOTICSCHIP    183       Beispiel    Die   bereinstimmung zwischen gelesenem und geschriebenem Wert wird durch Leuchten von LED    0 angezeigt     int main            uintl6_t Data   0       proxy function for whole initialization    Init          clear all LEDs  RC_SetLedClearAll       RC_SetServoMode  0  RC_SERVO_MODE_PHI_DIRECT                  RC SetServoPhiSpeed 0  0  2 lt  lt 4  1024      time needed for movement  1024 Steps   20 ms   20 5 sec    delay ms  20      Data   RC GetServoCurrentDeltaPhi 0    if  Data    2    4          RC_SetLedBrightness  0  255         while  1           return 0     9 8 12 RC_GetServoCurrentPhi    inline uintl6_t RC_GetServoCurrentPhi   in  uint8_t ServoNumber     Beschreibung    Liest die aktuelle Position aus dem RoboticsChip        Parameter    Bedeutung       ServoNumber          Nummer des Servos  dessen Position gelesen werden soll  Die Nummerierung  der S
161. eser Funktion wird eine Berechnung mit dem CORDIC Algorithmus eingeleitet  Zun  chst wer   den die Parameter mittels der Funktion RC  SetCordicCalculationArguments    in den Ro   boticsChip geschrieben  die Berechnung mit      SetCordicCalculationStart    gestartet  und die Ergebnisse mit RC GetCordicCalculationResult    gelesen nachdem mindestens  so lange gewartet wurde  bis      CordicWaitOnResult    nicht mehr blockiert   Eine genaue Beschreibung der M  glichkeiten des CORDIC Algorithmus be ndet sich in Abschnitt    2 22     Diese Funktion f  hrt die   ber die Parameter Mode und CoordSys bestimmte Funktion mit den Para   metern RegisterX  RegisterY und RegisterZ aus                                         Parameter   Bedeutung   RegisterX   Initialwert des X Registers    RegisterY   Initialwert des Y Registers    RegisterZ   Initialwert des Z Registers    Mode Modus der Berechnung  Dieser Parameter kann die Werte  RC_CORDIC_MODE_ROTATION bzw  RC_CORDIC_MODE_VECTORING  annehmen  Siehe Abschnitt 7 22    CoordSys   Bestimmt das f  r die Berechnung verwendete Koordinatensys   tem  RC CORDIC COORD LIN       CORDIC COORD CIR oder  RC CORDIC COORD HYP   Siehe Abschnitt 7 22    R  ckgabewert  R  ckgabewert Beschreibung  RC FAILED Die Queue des RoboticsChips ist bereits g  nzlich bef  llt              RC SUCCESSFUL   Die Berechnung wurde in den Speicher des RoboticsChips geschrieben              SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    198 9 SOFTWARE FUNKTIONSBIBLI
162. etGlobalServoAttributesTable_P  gTable      RC_SetGlobalServoMode  RC_SERVO_MOD    NO ACTION            RC SetServoMode servo RC SERVO MOD          P   P        PHI DIRECT         RC SetServoPhiDirect  servo angle        show active servo  RC SetLedClearAl11     RC SetLedBrightness  servo Oxff            SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    142 8 INVERSE KINEMATIK       for           switch  GetKeysState                      case INCREMENT      angle     1  lt  lt  12    1      anglet t    fprintf  gStrmUSB   Angle   u n  angle    break        case DECREMENT               angle    0     angle      fprintf  gStrmUSB  Angle    u n  angle    break              case SELECT                    servo    RC_NUMBER_OF_SERVOS   fprintf  gStrmUSB   Active servo   uMn  servo                     RC_SetGlobalServoMode  RC_SERVO_MOD  RC_SetServoMode  servo  RC_SERVO_MOD  RC_SetLedClearAll      RC SetLedBrightness  servo  Oxff    angle   1609    break     NO ACTION    PHI DIRECT               s                  default   break      RC_SetServoPhiDirect  servo angle             never return  loop forever  for       return 0     8 4 Inverse Kinematik Test    Da nun alle n  tigen Servoparameter ermittelt wurden  kann das inverse Kinematik Modul getestet  werden     8 4 1 Spezifikation    Nach dem Start des Programms bewegt sich der Fufipunkt des Beins 3 auf den Startpunkt  140  40  0    Durch Dr  cken der Taste Key       0 wandert der Fu  punkt entlang einer Geraden  idealis
163. etLegMovementCoxa  3  159  0  0  IK KNEE UP                     for         return 0     9 9 4 IK SetLegMovement    uint8 t IK SetLegMovement   uint8 t LegNumber     intl16 t XCoord     n   n   n        16 t YCoord   n   n     intl16 t ZCoord            i   i   i   i   i int8 t Position     Beschreibung    Berechnet die inverse Kinematik eines angegebenen Beines und bewegt den Fu  punkt des Beines zu  diesem  Die angegebenen Koordinaten beziehen sich auf das rotierte Coxa System  Das Coxa System  wurde so rotiert  dass die Achsen parallel zum Korpus System sind  Kann der angegebene Punkt nicht  angefahren werden  so wird das Bein nicht bewegt        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 9 INVERSE KINEMATIK    207          Parameter   Bedeutung       LegNumber   Index des Hexapod Beines  dieser Index entspricht jenem  der auf der Oberseite  des Hexapods eingraviert ist                 XCoord X Koordinate des gew  nschten Fu  punktes   YCoord Y Koordinate des gew  nschten Fu  punktes   ZCoord Z Koordinate des gew  nschten Fu  punktes   Position Da es f  r viele Punkte zwei verschiedene L  sungen f  r p   und p   gibt muss zu     s  tzlich angegeben werden  welche der beiden L  sungen berechnet werden soll   Wird dieser Parameter      KNEE        gesetzt  so wird eine L  sung berechnet  in  welcher der Fu  punkt stets eine tiefere Position einnimmt als das    Kniegelenk      Bei      KNEE DOWN liegt der Fu  punkt h  her als das    Kniegelenk                    
164. eutung wird das Interrupt   Flag IFPnk nicht gesetzt     7 10 LED mit Helligkeitssteuerung    Am FPGA sind 24 farbig sortierte LED zur Anzeige beliebiger Statusmeldungen  oder auch als  Schmuck  angeschlossen  siehe Abb  7 16   Deren Helligkeit kann in 256 Stufen eingestellt werden                                                                                                                                                                                                                                                  uw ug wu M          x         rd wur ooh ee      UELLE UM    u                       gt  3       5        17 5       16           15 5      014 Senvols           ess  gt  gt      ett OFF OF EES OFS  gt        k   H    Abbildung 7 16  LEDs mit Helligkeitssteuerung am FPGA  Es ist nur die am unteren Platinenrand be   ndliche H  lfte der LEDs abgebildet  Die LEDs 0 bis 11 be nden sich auf der gegen  berliegenden Seite  der Platine am oberen Rand     Auf Stufe 0 ist die LED vollkommen dunkel  Die Helligkeit der LED nimmt auf Grund der physika   lischen Funktionsweise von LEDs nicht linear mit dem eingestellten Wert zu  Die Leuchtst  rke der  LEDs in unterschiedlichen Farben unterscheidet sich sehr stark voneinander        SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    7 11 STATUS LED 109       Der Aufbau des Parametersatzes ist f  r alle LEDs identisch  Nach dem Einschalten ist die Helligkeit  der LEDs so eingestellt  dass sich ein typischer Helligkitsverl
165. f  r 2 dimensionale Punkte mit Vielfachen von 60   aus                          Parameter   Bedeutung  Input Koordinaten des zu rotierenden Koordinatensystems   Leg Index des Beins  f  r das die Rotation ausgef  hrt werden soll  Der Index bestimmt  den Winkel der Rotationaufgrund der Anordnung des Beins am K  rper   R  ckgabewert    Der R  ckgabewert bestimmt  ob der Punkt angefahren wurde oder nicht                       R  ckgabewert   Beschreibung  Point Koordinaten des Punktes im rotierten Koordinatensystem   Anmerkung    e Bevor diese Funktion verwendet werden kann  m  ssen SL2 Init    RC Init   und  RC Init    aufgerufen werden und der CORDIC Interrupt muss aktiviert sein     Beispiel    Berechnet die Winkel f  r den Punkt  138  80  0  im rotierten Coxa System  dieser Punkt entspricht   159  0  0  im Coxa System  und f  hrt diesen an     int         main  void     uint8_t i 0     IK_Point2d Coords        initialize all modules  Init           copy the linearisation table into the RoboticsChip  RC SetGlobalServoAttributesTable P  gTable        activate all servos       SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    9 10 SD KARTE    209          for  i 0  i  RC NUMBER OF SERVOS    i                 RC SetServoPhiDirect  i  1609         RC_SetGlobalServoMode  RC_SERVO_MODE_PHI_DIRECT                     enable cordic interrupt  RC_SetInterruptO  RC_INTTERRUPT_MASK_CORDIC            points in the rotated coxa system  Coords x   138   Coords y   80        rotate th
166. frequenz zur  Versorgung der FPGA internen PLLs 25 MHz betr  gt  Daher kommt deren Einsatz bei Verwendung eines Taktes von  8 MHz Taktfrequenz nicht in Frage        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    6 3 FPGA KONFIGURATION 75       6 3 FPGA Konfiguration    Der Entwurfsprozess f  r den HSSE Robotics Chip endet in der Erzeugung einer sogenannten Kon   gurationsdatei f  r das FPGA  Diese Datei enth  lt quasi Schaltereinstellungen  welche die Struktur  und die Elementarfunktionen der Schaltung im FPGA bestimmen  Das eingesetzte FPGA vom Typ  Lattice XP speichert diese Kon guration in statischen Speicherzellen ab  welche   ber den gesamten  Chip verteilt sind  Daher wird die Kon guration mit jedem Ausschalten gel  scht und steht nach dem  Einschalten nicht mehr zur Verf  gung  Das FPGA vergisst sozusagen seine Kon guration  Bausteine  der Lattice XP Serie verf  gen jedoch zus  tzlich   ber einen Flash Speicher  in dem die Kon gurati   onsdatei abgelegt werden kann   Auf der SandboxS 2 ist das FPGA so eingestellt  dass es den Inhalt des Flash Speichers unmittelbar  nach dem Einschalten automatisch in die RAM Kon gurationszellen l  dt  Dies ben  tigt nur wenige  Millisekunden  w  hrend der die LED 13 in unmittelbarer N  he des FPGA Bausteins eingeschaltet        is  Abbildung 6 1  Die DONE LED leuchtet  solange das      TM  FPGA keine Kon guration geladen hat  4 TT       ist  Das kurze Aufblitzen dieser LED beim Einschalten markiert also den   bertragungsvorgang 
167. g Ihrem eigenen Risiko ob   liegt  Die    SandboxS 2    stellt kein Produkt dar  Es handelt sich insofern lediglich um Empfehlungen  die zwar weitgehend erprobt  aber  m  glicherweise nicht fehlerfrei sind  Alle Anweisungen richten sich ausschlie  lich an vollrechtsf  hige Personen  die demnach auch im  Sinne des Gesetzes erwachsen sein m  ssen   Sollen Anweisungen in dieser Anleitung von anderen als solchen Personen ausgef  hrt werden   so sollte dies nur unter Aufsicht einer fachkundigen und vollrechtsf  higen Person geschehen  welche diese Aufsicht auszu  ben berechtigt  ist  Weder der Autor  noch die FH Ober  sterreich Studienbetriebsgesellschaft   bernehmen eine Haftung f  r Sch  den  die durch Befolgung  oder auch Nichtbefolgung dieser Anweisung entstehen  Ebensowenig wird eine Haftung f  r Sch  den im Zusammenhang mit dem Betrieb  der in dieser Anleitung beschriebenen Platine   bernommen  F  r den Inhalt verlinkter WWW Seiten und den Inhalt von empfohlener Litera   tur wird keine Verantwortung   bernommen  Sollten solche Seiten im Laufe der Zeit problematische Inhalte bekommen  sind wir f  r einen  Hinweis dankbar     Zeichenlegende Einige Textpassagen sind am Textrand mit Symbolen folgender Bedeutung gekennzeichnet       Gefahr  Bei Nichtbeachtung besteht entweder Verletzungs  oder zumindest Zerst  rungsgefahr   f  Hinweis Hinweis  den man beherzigen sollte  Es besteht zwar keine unmittelbare Gefahr  wenn man dies nicht tut  aber es wird  beispielsweise eine Funktion 
168. gTable RC NUMB          36  385   3686   1  277   3641     127 815    3619     14  255    3670     19  282    3629     13  292    3608     51  362    3690     51  362    3690     51  362    3690     51  361    3689           652   3952   543   3908   568   3882   511   4059   560   3903   559   3866   628   3953   628   3953   628   3953   630   3961     918   3952   799   3908   822   3882   798   4059   793   3903   828   3866   887   3953   887   3953   887   3953   887   3961     remains      flash memory          ER_OF_SE          1183  1453  1745    RVOS         2038    PROGME            233          VE    RSE       3952   171 RC S  1081  1363  1661         1965    ERVO  RE         2263           VE    RSE       3908    66 RC 5  1100  1378  1652         1941    ERVO  RE         2255        EVE       3882   7 RC 5  1075  1354  1643       ERVO R    2008    RSE  2242        4059   157 RC_S       ERVO_RE    ERSE       1082  1364  1653           1942    2242        3903    99 RC_S       ERVO_RE    ERSE       1101  1377  1663           1962    227       3866   44 RC_S       ERVO R    ERSE       1158  1425  1708         1996    30       3953   0 RC_S       ERVO_RE    ERSE       1158  1425  1708           1996    30       3953   0 RC_S    ERVO_RE    ERSE       1158  1425  1708           1996    30       3953   0 RC_S    ERVO R    ERSE       1159  1426  1708         1998    30       3961   21 RC_S          ERVO_RE          ERSE                2608     ON    ON    ON    ON       
169. ge Schnellladeger  te entladen die Akkuzellen vor dem Ladevorgang  Dies ist zur Vermei   dung des sogenannten Memory Effektes durchschnittlich vor jedem f  nften Ladezyklus notwendig   Aus diesem Grunde besitzt die SandboxS 2 eine zwar einfache  aber sehr wirkungsvolle Entlade     JAT                                                                                                                                                                                                                   Entlade  Entlade  Entlade  Entlade  Entlade     schaltung schajtung schaltung schaltung schaltung    A            Les se ss        eee             Z  21 t LE             H    8 zy  8     M D   9                        00 0 z  Y  Batterie  Batterie  Batterie  Batterie  Batterie      halter halter halter halter halter       Abbildung 3 5  Entladeschaltung aus Diode und Widerstand     vorrichtung  Diese besteht aus der Serienschaltung einer Diode und eines Widerstandes  Abb  3 5    Die Diode l  sst einen Stromfluss zu  bis die anliegende Spannung unter die Diodenkniespannung  ca   0 7 V  sinkt  Der Widerstand begrenzt den flie  enden Strom  Sein Wert betr  gt 100  Die in Entlade   richtung eingelegte Zelle wird mit einem Strom von    UAkkuzelle   UDiodendurchlasspannung ET Lud    FEntladen 100    entladen  Bei einer Kapazit  t von 2500 mAh f  r einen hochqualitativen NiMh Akkumulator der Gr    e  AA ergibt sich eine Entladezeit von       Entladen     60 mA    Q Akkuzelle _ 2500 mAh    TEntlad
170. gern erreichbar  sind  Die Bits mit den Namen JoyR und JoyL geben an  ob der jeweilige Joystick niedergedr  ckt wird                                   Bit im Register entspricht einer Taste am Game Pad Controller  Ist die entsprechende Taste gedr  ckt   so wird f  r das Bit der Wert 0 gelesen  ansonsten der Wert 1   Wird keine Taste gedr  ckt  so steht  entsprechend in allen Bits dieses Registers der Wert 1     7 17 1 2 Register SonyPs2GamePadJoyR    Dieses Register gibt die Stellung an  in der sich der rechte Joystick be ndet  Die Auslenkung des  Joysticks wird durch zwei vorzeichenlose 8 Bit breite Bin  rzahlen angegeben  wobei jedoch meist  gar nicht mit der vollen Genauigkeit einer 8 Bit Zahl gerechnet werden kann  Insbesondere billige  Controller verf  gen meist   ber weit geringere Aufl  sungen    Die Daten sind in diesem Register nur verf  gbar  wenn der Game Pad Controller mit der Taste  analog  in den Modus analog  rote LED leuchtet  versetzt wurde  Im Modus digital ist das Register  komplett mit Bits des Wertes 1 belegt          Bit  0x87C5  0x87C4          JoyR   y Achse  unsigned 7 downto 0   JoyR   x Achse  unsigned 7 downto 0           Tabelle 7 30  Register  SonyPs2GamePadJoyR  Nur lesbar     Bits 15 bis 8     JoyR   y Achse Dieses Register enth  lt die momentane Auslenkung f  r die y Achse  des rechten Joysticks ausgedr  ckt durch eine vorzeichenlose 8 Bit breite Zahl  wobei 0x00 der  Auslenkung nach ganz oben und OxFF der Auslenkung nach ganz unten entspricht
171. gnalader  im Foto wei    des zuvor eingel  teten Servokabels        Abbildung C 7  Der modi zierte Empf  nger ist einbaufertig  Im Hintergrund des linken Fotos wartet  bereits die Platine eines weiteren Empf  ngers auf die Modi kation        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    235          Literaturverzeichnis    Craig  John J   Introduction to Robotics  Mechanics and Control  3  Auflage  Englewood Cliffs  New  Jersey  Prentice Hall  2004    Kreuzgruber  Michael  CORDIC Algorithmus  Bachelorarbeit FH O   Hagenberg  Hardware Soft   ware Systems Engineering  Hagenberg  Austria  2007    Oehme  Friedrich  Huemer  Mario und Pfaff  Markus  Elektronik und Schaltungstechnik     Ein  verst  ndlicher Einstieg  1  Auflage  M  nchen  Carl Hanser Verlag  Oktober 2006  ISBN 978 3   446 40694 0  Dieses Buch soll f  r technisch interessierte Leser den Zugang zu elektronischen Schaltungen er  ffnen   ohne dass ein Grundlagenstudium der Elektrotechnik vorausgesetzt wird  Die Grundlagen werden  soweit  ben  tigt  mit behandelt     Society  IEEE Computer  Hrsg    IEEE Standard Test Access Port and Boundary Scan Architecture   New York  Institute of Electrical and Electronics Engineers  1993    Spong  Mark W   Hutchinson  Seth und Vidyasagar  Mathukumalli  Robot Modeling and Control   New York  John Wiley  amp  Sons  Inc   2005    Volder  J  E   The CORDIC Trigonometric Computing Technique  In IRE Trans  on Electronics Com   puters  vol  EC 8  no  3  IRE Trans  September 1959  3
172. gned 7 downto 0           Tabelle 7 43  Register  Eingabewerte von x  y und z des CORDIC Algorithmus  Linearer Rotationsmo   dus   Schreib  und lesbar     Bit         1               7   6 5   4 3 2   1 0  unsigned 3 downto A                       unsigned  5 downto  12        Tabelle 7 44  Register  Ausgabewert von x des CORDIC Algorithmus  Linearer Rotationsmodus    Schreib  und lesbar     Bit         1               7 6 5 4 3 2 1 0       unsigned 15 downto 8   unsigned 7 downto 0              Tabelle 7 45  Register  Ausgabewert von y des CORDIC Algorithmus  Linearer Rotationsmodus    Schreib  und lesbar     Bit         1                    unsigned 15 downto 8   unsigned 7 downto 0           Tabelle 7 46  Register  Eingabewerte von x und y des CORDIC Algorithmus  Linearer Vektormodus    Schreib  und lesbar     Bit  Adr 1  Adr          Tabelle 7 47  Register  Ausgabewert von x des CORDIC Algorithmus  Linearer Vektormodus   Schreib            und lesbar   Bit d         1 unsigned 5 downto  2     Adr          unsigned  3 downto  10        Tabelle 7 48  Register  Ausgabewert von z des CORDIC Algorithmus  Linearer Vektormodus   Schreib   und lesbar     Bit         1            Bit         1            signed 1 downto  6   signed  7 downto  14           signed  1 downto  8   signed  9 downto  16              Tabelle 7 50  Register  Ausgabewert von x des CORDIC Algorithmus  Schreib  und lesbar        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    130 7 ROBOTIK PERIPHERIE  
173. gung PS 2 Buchse  Die PS 2 Buchse wird statt aus einer 5 V aus der 3 3 V Spannungsversorgung des Systems gespeist     Die   berwiegende Anzahl der PS 2 M  use funktioniert auch mit dieser Betriebsspannung fehlerfrei     3 7 4 Spannungsversorgung des ADCs im Mikrocontroller    In Abb  3 9 ist die Spannungsversorgung des im AVR Mikrocontroller integrierten ADC dargestellt   Die Versorgungspannung AVCC wird aus der 3 3 V Versorgung   ber ein RC Glied  das als Filter                   RC Filter       Abbildung 3 9  ADC Spannungsversorgung und Gewinnung  der Referenzspannung mittels RC Filter           SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    54 3 ENERGIEVERSORGUNG       dient  gewonnen  Die Eigenschaften dieses Filters lassen sich   ber die Auswahl des Widerstands   wertes und der Kondensatorkapazit  t beeinflussen  Bei zu hohen Widerstandswerten wird jedoch die  minimale Versorgungsspannung des ADCs nicht mehr erreicht  In Folge l  st der ADC intern im Mi   krocontroller unter Umst  nden einen Reset aus  Der angegebene Wert von 100      hat sich in der Praxis  als guter Kompromiss erwiesen    In der Abbildung ist auch dargestellt  wie die Referenzspannung des ADCs aus der Versorgungs   spannung gewonnen wird  Auch hierzu wird ein RC Filter verwendet  Der eingesetzte Widerstands   wert kann um ein Vielfaches h  her gew  hlt werden als bei der Versorgung des ADCs  da in den  Referenzspannungseingang des ADCs nur ein minimaler Strom flie  t        SBXS2MANUAL TEX SVN 4
174. halten der Robotik Peripheriekomponenten ergibt sich leider ein  weiteres Problem des Softwaredebugging    hnlich wie bei den Timern und beim ADC des AVR l  uft       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 2 INTERRUPTS 83       auch die Servosteuerung unabh  ngig vom Debuggingzustand der AVR CPU  Dieses Verhalten stellt  ein typisches Problem des Debugging von Echtzeitanwendungen dar und l  sst sich mit den typischer   weise zur Verf  gung stehenden Mitteln nicht ohne weiteres l  sen  Hierzu sind spezielle Debugging   Werkzeuge notwendig     7 1 1 Zugriff auf 16 Bit Register    Lese  und Schreibzugriffe des Atmel AVRs erfolgen stets auf 8 Bit breite Datenw  rter  Der Zugriff  auf 16 Bit breite Register muss daher durch zwei Zugriffe mit 8 Bit Datenwortbreite statt nden  Beim  Lesezugriff besteht die Gefahr  dass sich die Registerwerte zwischen den beiden Leseoperationen    ndern  so dass nicht zusammengeh  rende 8 Bit breite H  lften eines Wortes gelesen werden  Genauso  l  sst der auf zwei Operationen aufgeteilte Schreibzugriff das Register in der Zeit zwischen den beiden  Zugriffen in einem ung  ltigen Status    Dieses Problem tritt auch bei einigen Peripherieeinheiten des AVRs auf  So beispielsweise beim  16 Bit Timer  Im Datenblatt ndet sich hierzu eine genaue Beschreibung  Dar  ber hinaus existiert  eine Application Note mit der Bezeichnung AVRO72  die detailliert auf dieses Problem eingeht   Diese Application Note steht auf der WWW Seite von Atmel  http
175. hnellladeger  t geladen  Es sollte sich um ein Schnellladeger  t  Ladezeit ca  1 h  handeln   da NiMh Akkumulatoren  die mit geringem Strom aufgeladen werden  im Betrieb keine hohen Str     me abgeben k  nnen  Beispielhaft zeigt Abbildung 3 2 ein kosteng  nstiges Schnellladeger  t f  r 1 bis    Abbildung 3 2  Preisg  nstiges Schnellladeger  t Typ C200  Die Ladezeit f  r  bis zu 4 Zellen liegt knapp   ber einer Stunde        4 AA  oder AAA Zellen    Die Notwendigkeit der Schnellladung ist auch der Grund  warum keine Ladeschaltung mit Strom   versorgung aus einer USB Verbindung zum PC vorgesehen wurde  Diese Zusatzfunktion h  tte die  SandboxS 2 nicht unwesentlich verteuert  jedoch in der Praxis nur geringen Nutzen gebracht  da so  nur niedrige Ladestr  me erzeugt werden k  nnen     3 3 Akkuhalter    Die Akkuzellen werden in stabilen Batteriehaltern des Herstellers Keystone auf der Platine xiert und  zugleich kontaktiert  In Abb  3 3 sind diese Halter zu sehen  Die verwendeten Halter weisen einen sehr       Abbildung 3 3  Halterungen f  r AA Zellen von Keystone     niedrigen Kontaktwiderstand auf und bieten sicheren Halt der Akkuzellen  Der Abstand der Halter        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    50    3 ENERGIEVERSORGUNG       vom negativen   er GND  Akkuspannungspol    sa    Lae  Spannungsabfall    halften voneinander kann beim Platinendesign bestimmt werden  wodurch sich der Anpressdruck der  Kontaktfedern variieren lasst  Im Falle der SandboxS 2 ist d
176. hrieben werden  Weitere Informationen sind in Abschnitt 9 5 zu nden     Da die SandboxS 2 kein Betriebssystem verwendet  darf das Programm niemals zu Ende sein  Das  Verhalten bei Verlassen des Programms ist somit nicht de niert     Die Funktion fprintf    sollte bereits bekannt sein  Sie entspringt der C Standard Bibliothek   Eine AVR spezi sche Anpassung stellt jedoch die Funktion fdevopen    dar  sie soll die fopen     Funktion am AVR ersetzen        2 4 3 Projekt   bersetzen    Um das Projekt zu   bersetzen wird der Men  punkt   Build  gt Build    ausgew  hlt  Nun generiert das  AVR Studio ein so genanntes Makefile und l  sst es von dem Programm GNU Make  das Teil des  WinAVR Pakets ist  ausf  hren  Dieses Programm ruft in richtiger Reihenfolge  f  r jede Datei  den  Kompiler auf  Die Ausgabe kann man im Fenster    Build    am unteren Bildschirmrand sehen  Ab   bildung 2 13   Sind Fehler  Errors  aufgetreten  werden diese mit einem roten Punkt in der Liste  gekennzeichnet  Zus  tzlich wird die Anzahl der Fehler am Ende der Ausgabe angezeigt  Das gleiche  gilt f  r Warnungen  Warnings   nur ist der Punkt diesmal gelb  Nachfolgende Warnungen k  nnen  ignoriert werden     delay h 89 3  warning   warning  Compiler optimizations disabled   functions from  lt util delay h gt  won   t work as designed   Diese Warnung tritt nur auf wenn die Optimierung des Kompilers abgeschaltet ist  Die Wartefunktio   nen  z B  _delay_ms     sind dadurch etwas ungenauer  Die Warnung l  sst sich 
177. ht nun eine  Verbindung mit der Sandbox aufzubauen  Ist die Sandbox oder der JTAG ICE nicht angeschlos   sen eingeschaltet erscheint eine Fehlermeldung  Ist eine Verbindung vorhanden wird das Programm    bertragen  dies kann an dem Fortschrittsbalken in der Statusleiste erkannt werden  Abbildung 2 17      e Debugger ist bereit    Hat der Debugger das Programm erfolgreich   bertragen  ist er f  r die Annahme weiterer Befehle be   reit  Der gelbe Zeiger am rechten Rand des Editors zeigt immer auf den als n  chstes abzuarbeitenden  Befehl  Am Anfang steht er knapp unterhalb der main Funktion  Abbildung 2 18      e Steuern des Debuggers    Der Debugger besitzt Befehle die den Programmablauf beeinflussen k  nnen  Diese werden nachfol   gend erkl  rt  Abbildung 2 19         SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    36    2 ERSTE SCHRITTE       Bre        pen pu gem De pem gem pp    du und SR Mere       uw                               toas  to  Oe           Ox  B  GT  or   5   D    Bre beer bed po yos Dem                             ads asa    Trace           Stop   Run   Break   Reset   Step Into   Step Over   Step Out   Run to Cursor  New Breakpoint          Ee RAA DRAMA  p      Abbildung 2 19  Steuerbefehle des Debuggers     Beendet die debugging Sitzung    F  hrt das aktuelle Programm aus    Pausiert die Ausf  hrung ab    Setzt das Programm auf den Anfangszustand zur  ck    F  hrt einen einzigen Befehl aus  springt dabei in die Funktion   F  hrt einen einzigen Befeh
178. ice    Abbildung 6 4  Hauptfenster  von ispVM unmittelbar nach  Start des Programmes  For Help  press F1       Als zweiter Schritt folgt der Anschluss des Programmierkabels and den die SandboxS 2  zehnpolige  FPGA JTAG Anschlusswanne aus Abb  6 2   Dann  Einschalten der SandboxS 2    Nun wird in ispVM der Men  punkt    ispTools     Scan Chain    ausgew  hlt  Die Software sucht nun  im System  dass   ber das Downloadkabel angeschlossen ist  nach Bausteinen  die in der sogenannten  Scan Chain miteinander und mit ispV M System verbunden sind  Das Ergebnis dieses Vorgangs ist in  Abb  6 5 zu sehen  In der Scan Chain wurde ein Baustein des Typs LFXP3 aufgefunden  Damit ist das  FPGA auf der SandboxS 2 gemeint    Ein Doppelklick auf die Zeile mit dem Device LEXP3C wie in Abbildung 6 6 zu sehen     ffnet das  Fenster links in Abb  6 7  In diesem Fenster wird der Bezug zur FPGA Kon gurationsdatei hergestellt   Hierzu mit dem Button    Browse    beispielsweise die Dateihsserobchipv2  jed suchen  Dann den  Button    OK    klicken  Es erscheint ein Infofenster  Abb  6 7  rechts   das quittiert wird    Die Datei kann nun mit    Project   Download    aus dem Men   in das FPGA geladen werden  Dort  wird sie in einem Flash Speicher abgelegt und steht damit auch beim n  chsten Einschalten der Span   nungsversorgung im FPGA zur Verf  gung  W  hrend des Download Vorgangs von 20 40 Sekunden  Dauer erscheint das Fenster links in Abb  6 8  Der erfolgreiche Abschluss des Downloads ist am Sta   tus
179. ie Abfrage des Gamepads erfolgt im gleichen Rhytmus  in dem  auch die Servopulsausgabe erfolgt  also ca  alle 20 ms   Daher kann ein Interrupt f  r das Gamepad  erzeugt werden  indem ein Servosequencer mit dem Wert NrOfDeltas 1 programmiert wird  Dieser  Sequencer l  st dann alle 20 ms ein Interrupt Flag aus  Sollen die Werte vom GamePad seltener einge   lesen werden  so kann NrOfDeltas entsprechend auf eine h  here Zahl gesetzt werden     7 18 Globaler Timer    Der Globale Timer z  hlt beginnend mit dem Wert 0 die PWM Pulse  die vom Servopulsgenerator  erzeugt werden  Unmittelbar nach dem Einschalten ist dessen Pulsl  nge auf ca  20 ms eingestellt   Je nach Einstellung der Register TuneFine und TuneCoarse laut Abschnitt 7 7 1 kann die Pulsl  nge  variieren     7 18 0 4 Register GlobalTimer    Dieses Register enth  lt eine vorzeichenlose 16 Bit Zahl  Diese Zahl gibt an  wie lange die Stromver   sorgung des Robotics Chips bereits eingeschaltet ist  Die Dauer errechnet sich aus dem Produkt der  Zeitkonstanten welche durch die beiden Register TuneFine und TuneCoarse  siehe Abschnitt 7 7 1   eingestellt wird  nach dem Einschalten 20 ms  mit der im Register angegebenen Zahl        Bit 7 6 5 4 3 2 1 0  0x87FF unsigned 15 downto 8   0x87FE unsigned 7 downto 0                 Tabelle 7 32  Register  GobalTimer  Der Initialisierungswert nach dem Einschalten ist 0x0000  Nur lesbar        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 19 VERSIONSNUMMER DES ROBOTICS CHIPS 123   
180. ie f  r die Strommessung n  tige Verst  rkung des ADC wird automatisch ermittelt        SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    9 4 SANDBOXS2_LIB    157       R  ckgabewert       R  ckgabewert Beschreibung  Data Aktuell flie  ender Strom in mA                    Anmerkung    e Bevor diese Funktion verwendet werden kann  muss SL2_Init    aufgerufen werden     e Das Ergebnis ist relativ ungenau und sollte nur als Richtwert dienen           Beispiel    Einschalten von        LED 1  wenn der Strom bei einer Messung gr    er als 1    1     1000      ist   Die LED wird nicht wieder ausgeschaltet     int main          uintl6_t Current   0       function that has to b xecuted in every appli     cation to initialize the interface with the FPGA  SL2 Init              while  1       Current   SL2_GetCurrent      if  Current  gt  1000           SL2 AvrSetMsgLed  SL2 MSG LED 1  SL2_MSG_LED_STATUS_ON                          return 0     9 4 9 SL2_GetCurrentLowAmplification       uintl6_t SL2 GetCurrentLowAmplification      Beschreibung    Diese Funktion misst den gesamten Stromverbrauch der SandboxS 2 mit einer xen internen Ver   st  rkung von 10 und gibt diesen in mA zur  ck  Diese Verst  rkung wird an den differentiellen ADC  Eing  ngen des AVR eingestellt     R  ckgabewert       R  ckgabewert   Beschreibung  Data Aktuell flie  ender Strom in mA                       SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    158    9 SOFTWARE FUNKTIONSBIBLIOTHEK       4 7 7 
181. iert  bis zum  Endpunkt  140     40  0   Wurde der Endpunkt erreicht und die Taste los gelassen  bewegt sich der  Fu  punkt wieder geradlinig zum Startpunkt zur  ck  Die Werte der Datenstruktur gTable m  ssen  durch die zuletzt ermittelten Werte des Hexapods ersetzt werden  Linearisierungs St  tzstellen  Offset   Winkel  Standard Drehrichtung         SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    8 4 INVERSE KINEMATIK TEST    143       8 4 2 Quellcode      ek ke sk ke ke ke ke ke ke oko e ok e ke e sk ke       ok ce HH e ce HH HH    e HH HH HH ce e o        e sk e ok e s oe ok e e ce e oe e oe e e e e e e e e       Workfile   main c     Author   Michael Kreuzgruber    Date 2 2007 08 29     Description   main program     Revision 3           e sk ke sk ke e oe e oe e oe e ck e ck ke sk e ck ke sk ke e oe e ob e ce e ck e ok e ck e sk e    e ke ce e ce e ob e ck e ce SY e ok e sk e ke        EN       includes    EEN    include  include    include  include    include  lt stdio h gt        includ  include  include            avr interrupt h      util delay h       SandboxS2 lib h    RoboticsChip h    InverseKinematics h                    uart usb  lib h                                                                                                            AI ALAA ATLA AAS ALAA LA AAAS AAA AAA          global variables definitions    JE AE EE    gStrmUSB    gStrmUART    FILE  FILE                NULL   NULL                   servo attribute table     RC ServoAttributes 
182. ieser Druck auf ein Maximum eingestellt    Bitte verbiegen Sie die Kontaktfedern der Akkuhalter auf keinen Fall  da deren Federeigenschaften  zerst  rt w  rden    Neben dem Anpressdruck der Kontaktfedern spielt deren Oberfl  chenbeschaffenheit eine wichti   ge Rolle  Im Falle der Batteriehalter von Keystone kommt eine spezielle Oberfl  chenveredelung der  Rohbleche zum Einsatz  Leider verschlechtert sich der Kontaktwiderstand  sobald Verschmutzungen  auftreten  Besonders ung  nstig sind Fingerabdr  cke  Bitte ber  hren Sie also die Kontaktfl  chen nicht   Eine Reinigung sollte normalerweise nicht n  tig sein  Falls doch  ziehen Sie bei montiertem Akku ein   fach einen Papierstreifen zwischen den Kontaktfl  chen der Akkuzelle und des Halters hindurch    Die Akkuhalter besitzen keine Isolation und stellen daher ein gewisses Gefahrenpotential dar   Die Platzierung der Halter verhindert Kurzschl  sse durch Verbiegen  Achten Sie aber stets darauf  dass  keine Metallteile auf der Platine liegen  ohnehin keine gute Idee   Ein St  ck Draht etwa  das auf die  mit Akkuzellen best  ckte Platine f  llt  verursacht wahrscheinlich einen Kurzschluss der Akkuzellen   die kurzzeitig enorm hohe Str  me   gt  40     treiben k  nnen  Sowohl das Drahtst  ck  als auch die  am Stromfluss beteiligten Teile der Platine  vor allem aber die Akkumulatoren erhitzen sich dabei  sehr stark  Brand  und Explosionsgefahr sind die Folge  Die Platine wird in solchen F  llen ebenfalls  besch  digt oder gar unbra
183. iger verl  uft  Das Symbol f  r diesen Strahl gilt f  r den  gesamten Kalibriervorgang  Im Beispiel in Abbildung 7 12 rechts hat der Zufall sich f  r das  Kreissymbol entschieden  Der so eingestellte Wert ist der erste Wert f  r die Linearisierungsta   belle  Phi2PwmTable 0       f  Um die weiteren Werte f  r die Linearisierungstabelle herauszu nden  wird der Reihe nach auf  alle Strahlen mit dem gew  hlten Symbol eingestellt  In Abb  7 13 ist auf den dritten Strahl mit    dem Kreissymbol eingestellt  Der so gefundene Wert von PwmLen ist der Tabelleneintrag f  r  Phi2PwmTable 2      Abbildung 7 13  Die PwmLen  Abschnitt 7 5 3 1  wurde so  eingestellt  dass der Strahl mit dem Kreissymbol im dritten  Strahlenfeld erreicht wird  Der zugeh  rige Index in die Ta   belle hat den Wert 2        g  Die Winkelrosette   berstreicht einen Bereich von ann  hernd 230    welchen ein typisches Mo   dellbauservo nicht g  nzlich ausnutzen kann  Der mechanische Anschlag wird beim Hitec HS311  beispielsweise bei ca 205   erreicht  Daher bleiben Tabelleneintr  ge   brig  welche nicht mehr  sinnvoll verwendbar sind  Diese werden mit dem gleichen Wert gef  llt  der f  r den letzten noch  erreichbaren Strahl mit dem Symbol  im Beispiel wieder dem Kreis  gefunden wurde     Ein Beispiel f  r eine typische Zahlenreihe  die auf diese Weise f  r ein Servo des Typs HS311  ermittelt wurde  62  382  661  944  1225  1508  1787  2082  2384  2680  2924  3181  3424  3662   3898  3898  3898  Die Zahlen sind nach
184. ik hinaus auch f  r die Bewegungssteuerung animier   ter Objekte und die Maschinensteuerung  Die Bewegung kann synchron zu Video  und Audiodaten  erfolgen  wobei MIDI Daten per USB Schnittstelle   bertragen werden k  nnen     Die SandboxS 2 ist ein offenes Projekt der Studieng  nge Hardware Software Systems Engineering   HSSE  und Embedded Systems Design  ESD  an der FH O   Hagenberg  Die SandboxS 2 wird von  der Firma technosert in Wartberg Aist gefertigt und nanziell unterst  tzt     1 1 Merkmale    e Software auf Basis des Mikrocontrollers Atmel AVR At90USB1286 7      Kostenloser OpenSource C Compiler WinAVR      Kostenloser Simulator AvrStudio von Atmel      Preisg  nstiger Emulator AVR JTAG ICE Mk II      Kostenloser USB Bootloader zur Flash  und EEPROM Programmierung      Umfangreiche Software Funktionsbibliothek    e Robotik Peripherals des HSSE Robotik Chip V2      Implementiert in einem FPGA der Lattice XP Familie      Umfangreiche Kontrollfunktionen f  r bis zu 24 handels  bliche Modellbauservos        Parametrisierbare Linearisierung des Zusammenhangs von Soll  und Istwinkel f  r jedes  einzelne Servo        Programmierbare Servo Bewegungssequenzen    Servogrundstellung und  deaktivierung auf Tastendruck    Speziell an die Erfordernisse der Robotik angepasste Timerfunktionen       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    1 1 MERKMALE 13       Auswertung des Signals eines RC Empf  ngers mit bis zu 12 Kan  len      24 LEDs mit in 256 Stufen einstellbarer
185. ile   Temp    SUCCESSFUL    printf   accessing memory _card    n         save cluster OFFSET und cluster size  fat cluster data store         get cluster size and bytes per sector  ClusterSize   GetClusterSize     BytesPerSec   GetBytesPerSec               print some more data on the screen    printf   reading  cluster  size   d n   ClusterSize    printf   reading    bytes per sector   uMn   BytesPerSec    printf   testing_memory  card   _         save the current content of the file in RAM      write into the file  test txt  on the SD card  read the     data back  compare both and restore the file   if  fat search file  test txt    amp ClusterVar   amp Size   amp DirAttrib   DataReadback     SUCCESSFUL        fat read file  ClusterVar  DataBackup  0      fat write file  ClusterVar  Data  0         SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    216 9 SOFTWARE FUNKTIONSBIBLIOTHEK       fat_read_file  ClusterVar  DataReadback  0        compare bytewise   for  Cnt 0  Cnt  512                 if  Data Cnt     DataReadback  Cnt             SignalizeError             fat_write_file  ClusterVar  DataBackup  0    printf   OK n       else    printf   FILE_NOT_FOUND       while  1        return 0     9 11 Strukturen und benutzerdefinierte Typdeklarationen    9 11 1 Robotics Chip  Servolinearisierung    Statt De nitionen werden f  r die Auswahl der Servo Modi sowie des Reverse Bits die folgenden  Enumerationstypen verwendet     typedef enum      RC_SERVO_MODE_NO_ACTION   RC_SERVO
186. im PhiSpeed Modus  Der Modus ist in Abschnitt 7 7 auf Seite                   102 erkl  rt   Parameter Bedeutung  ServoNumber Nummer des Servos  das bewegt werden soll  Die Nummerierung der Ser   vos ist in Abb  7 1 auf Seite 81 ersichtlich   InitialAngle Startwinkel der Bewegung   DeltaPhi    Winkel    um welchen das Servo innerhalb von 20 ms bewegt wird   NumberOfDeltas   Anzahl der Winkelinkremente                    SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    9 8 ROBOTICSCHIP    179       R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Um RC_SetServoPhiSpeed   verwenden zu k  nnen  muss das angegebene Servo zuvor          in den Modus      SERVO  MODE PHI  DIRECT geschalten werden     e Der Wert von DeltaPhi wird im RoboticsChip als bin  re Dezimalzahl mit 4 Nachkommastellen  interpretiert  Wenn eine ganze Zahl angegeben werden soll  muss diese mit 16 multipliziert    werden  Schiebeoperation um 4 Bits nach links         e Die Summe von InitialAngle   DeltaPhi  NumberOfDeltas muss im Bereich 0        4095 liegen    e Bevor diese Funktion verwendet werden kann  m  ssen 51 2 Init    und RC  Init    aufge     rufen werden     Beispiel    Das Servo von der Position    aus auf die Mittelposition stellen     int main              proxy function for whole initialization  Init          clear all LEDs  RC_SetLedClearAll         move servo 0  RC_SetServoMode  0  RC_SERVO_MODE_PHI_DIRECT                  RC SetServoPhiSpeed 0  0  16    4  128
187. inAvr                              62   5 On Chip Peripherie des Atmel AVR AT90USB1286 7 64  5 1 USB Function Controller    sooo RR                64  CNET 65   5 3 Stromaufnahme und Akkuspannung                            69  Suhl        uo uu mask ee XA Xx wok Rog e eo be        a 69   5 32 SpannungsmessuDgEg      sous ommo ge gem o  m Rob Po wo woe ade    70   SA        oe bee a ee      abe dee Ed ke      70   25 SUMELED  s    s                      w edna anne    de dea od 70  50  BrwelerunsssteckBE              71   5 7 Anschluss eines                  5323                                     72   6 FPGA Lattice XP LFXP3K 74  hd                   22222222222 ee 74   n         oe tp headed ba cde Bed eee        d de EEE EE RO SE 74  6 2 1 Hardware Bootloader Aufruf des AVRs                      74   6 53  PPGA Kon guration 2 2  un a w anne nn 75  6 3 1 Update der FPGA Kon                                      75   7 Robotik Peripherie  HSSE Robotics Chip 81  7   Peripheriekomponenten aus Sicht des Mikrocontrollers                  82  7 1 1 Zugriff auf 16 Bit Register             lel  83         MENPE cuu La       k a h ukun a ba ew               Ron oS Q a dew       83  721 Intermpt Plag Resister Ee eR SE m nennen 85                  na Re Da a 87  SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007          INHALTSVERZEICHNIS 7  Za                           ENEE o  os o ok yos EO          92  7 5 ServopulsgenerStOt 2 2 22 2                 2       4      92   DUMP C CPU T
188. ind f  nf handels  bliche Akkuzellen der Gr    e AA  welche direkt in sta   bile Halter auf der Platinenoberseite eingelegt werden  Da die Akkuzellen zum Entladen  beseitigt  Memory Effekt  auch verkehrt eingelegt werden k  nnen  ist ein Verpolungsschutz vorgesehen  Auch  ein Ein  Ausschalter ist vorhanden  wobei alternativ durch Einstecken einer SD Karte eingeschaltet  werden kann  Auf Grund der hohen Maximalstr  me der Servos im Bereich von 10 A  wird ein Leis   tungstransistor zum Schalten der Versorgungsspannung eingesetzt    W  hrend die Servos unmittelbar von den Akkuzellen versorgt werden  ist f  r die Elektronikkompo   nenten eine 3 3 V  Versorgungsspannung erforderlich  Diese stellt ein Linearregler aus der Akkuspan   nung zur Verf  gung        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    3 1 AKKUZELLEN    49       3 1 Akkuzellen    Als netzunabh  ngige Energiequelle der SandboxS 2 dienen f  nf NiMh  oder NiCd Zellen der Gr    e  AA  Besonders empfehlenswert ist die Verwendung von NiMh Zellen der neuesten Generation  die  eine Kapazit  t von   ber 2000 mAh und eine ausreichende Hochstromfestigkeit aufweisen    Trockenbatterien mit 1 5 V Nennspannung  z B  Alkali Mangan  eignen sich nicht zum Betrieb  der SandboxS 2  Dies liegt zum einen in der zu hohen Leerlaufspannung solcher Zellen und zum  anderen an deren hohem Innenwiderstand     3 2 Ladeger  t    Zum Aufladen der Akkuzellen werden diese aus den Haltern herausgenommen und in einem handels     blichen Sc
189. insbesondere der HTBLAs und AHS mit technischer Orientierung mit dem Studiengang  zu f  rdern  lag nahe  Dies war die Geburtsstunde der   sterreichischen Hexapod Meisterschaften  die  mittlerweile allj  hrlich im April in Hagenberg ausgetragen werden und sich in der Robotikszene einen  festen Platz erobert haben        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX       Das vorliegende Handbuch beschreibt die Weiterentwicklung der Steuerungselektronik SandboxS   die SandboxS 2  Der urspr  nglich verwendete Mikrocontroller wurde durch einen Typen ersetzt  der  eine eingebaute USB Schnittstelle aufweist und das FPGA stammt nun vom Hersteller Lattice und  besitzt einen Kon gurationsspeicher auf Flash Basis  Der Betrieb erfolgt in dieser Version aus um   weltfreundlichen NiMh Akkus  die einfach in Akkuhalter auf der Platine eingesetzt werden k  nnen    Kern der SandboxS 2 ist nach wie vor der HSSE Robotics Chip  der gegen  ber der urspr  nglichen  Version einen enorm erweiterten Funktionsumfang anbietet und in der neuesten Version sogar einen  CORDIC Koprozessor zur schnellen Berechnung der inversen Kinematik und der f  r die Robotik  typischen Koordinatentransformationen  Givens Rotation  enth  lt  In der Software wird der Zugang  zu dieser Vielzahl an komplexen Funktionen durch eine Funktionsbibliothek f  r die Programmierung  des AVR Mikrocontrollers in C mittlerweile ebenfalls sehr erleichtert    Auch auf der mechanischen Seite konnten wir mit dem neuen Roboterentwurf   
190. intl6_t Phil   intl6_t Phi2      IK HexapodLegAngles        typedef struct IK InverseKinematicsReturn      IK HexapodLegAngles Angles    uint8 t Calculation     IK InverseKinematicsReturn        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    219          SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    E A SCHALTPLAN       A Schaltplan                                                                                                                D    Dod  4                                          SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007                UU  UU UT                                                    W c                         SBXS2MANUAL TEX    222       SCHALTPLAN                                                                                                                                                                               SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    223                                                          SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    224          Platinenlayout    B 1 Platinenfoto ohne Best  ckungsdruck          SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007       2 PLATINENFOTO OHNE BEST  CKUNGSDRUCK    225       B 2 Platinenfoto ohne Best  ckungsdruck               w wa    art           TI0OM e  TUI                                 Es      HSSE         on             vn ep erg     E vm        vm e         AAA  oii Sgr CFE ert 41  SSS Gs CSS Sts Ere LS  DO ERR       
191. isierungsm  glichkeiten     sierungswert nach dem Einschalten der SandboxS 2  Die meisten Servos werden in diesem Fall den  Motor stromlos schalten  Ist das Bit mit dem Wert 1 beschrieben  wird zyklisch ein Impuls ausgegeben    Nach dem Einschalten der SandboxS 2 sollten die Servos der Reihe nach aktiviert werden  Bit 0      Active auf 1 setzen   wobei nach dem Aktivieren eines Servos lange genug gewartet  ca  0 3 0 5 s   werden sollte  damit sich das Servo auf den gew  nschten Winkel einstellen kann  Erst wenn dies der  Fall ist  sollte das n  chste Servo aktiviert werden  Diese Vorgehensweise schont die Robotermechanik   vermeidet einen schockartig einsetzenden enorm hohen Strom beim Einschalten und schaut au  erdem  auch erheblich eleganter aus     7 5 3 Drehrichtungsumkehr    Servos k  nnen bei zunehmender PWM Impulsl  nge entweder im Uhrzeigersinn oder in Gegenrich   tung ausschlagen  Mit diesem Parameter kann ausgew  hlt werden  ob die vom Anwender eingegebene   oder von der Tabellenfunktion errechnete  PWM Impulsl  nge verwendet wird oder ob stattdessen ei   ne invertierte Impulsl  nge berechnet und eingesetzt wird  Die Berechnung der Impulsl  nge erfolgt   indem die urspr  ngliche Impulsl  nge vom Maximum  4095  subtrahiert wird    Die Drehrichtungsumkehr wirkt immer auf den die L  nge des PWM Pulses  welches das Servo  steuert  Wird die Steuerung im Modus PhiSpeed  oder im Pseudomodus PhiDirect    ber Winkelwerte  vorgenommen  so kann mit der Drehrichtungsumkehr nich
192. ist sicher die so genannte Taylor Reihe  Eine Taylor Reihe ist  f  r die Umsetzung in Software oder Hardware zwar geeignet  erfordert aber einen recht hohen Berech   nungsaufwand  da einige Divisionen auszuf  hren sind  In der Praxis der Computerarithmetik konnte  dieses Verfahren nie Fuf fassen  denn es gibt seit den 50er Jahren des 20  Jahrhunderts einen wesent   lich ef zienteren Konkurrenten     den CORDIC Algorithmus  VOLDER  1959   WALTHER  1971       Der CORDIC Algorithmus f  hrt die Berechnung vielf  ltiger elementarer Funktionen auf Berech   nungen zur  ck  die in Hardware sehr ef zient ausf  hrbar sind  Schiebeoperationen  Additionen und  das Nachschlagen einiger Tabellenwerte     CORDIC Auftragsbearbeitung   Der HSSE Robotics Chip muss aus Platzgr  nden mit einer einzigen CORDIC Recheneinheit aus   kommen  Damit diese   ber einen m  glichst langen Zeitraum hinweg unabh  ngig vom AVR   Mikrocontroller ihre Berechnungen ausf  hren kann  ist ein Auftragssystem implementiert  Dieses  kann mit mehreren Berechnungen beauftragt werden und unterbricht den Mikrocontroller erst nach  Bearbeitung des kompletten Auftrags mittels eines Interrupt Requests  Alternativ kann der Mikrocon   troller auch Teilergebnisse erfragen und bereits nach deren Fertigstellung den entsprechenden Teil  eines neuen Auftrags notieren    Eine Berechnung des CORDIC Prozessors besitzt drei Eingabewerte x  y und z sowie zwei Para   meter  welche die Rechenvorschrift  trigonometrisch  linear  hyperbolis
193. l aus    Alle Befehle bis zum Verlassen der Funktion werden abgearbeitet   F  hrt alle Befehle bis zur Position des Cursors aus    F  gt einen Haltepunkt ein        SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    2 4    HELLO WORLD    IN DER SANDBOX VERSION 37       2 4 5 Programm testen    Nachdem das Programm erfolgreich   bersetzt und   bertragen wurde  kann mit dem Testen begonnen  werden  Die Ausgabe der LEDs kann einfach durch Zuhilfenahme des eigenen Auges   berpr  ft wer   den    Um den Begr    ungstext anzuzeigen wird das HTerm Programm verwendet  Es be ndet sich auf der  beigelegten CD im Ordner HTerm  Zuerst wird der SandboxS 2    Port    ermittelt  dies ist die An   schlussnummer der virtuellen seriellen Schnittstelle   ber die kommuniziert wird  Dazu   ffnet man  den Ger  te Manager    Start  gt Ausfiihren        devmgmt msc     und sucht nach dem   SandboxS2 serial  emulation    Anschluss  Abbildung 2 20     Nun kann das Terminalprogramm gestartet und die Verbindung aufgebaut werden  Hierzu wird unter     Port    die ermittelte Anschlussnummer ausgew  hlt und anschlie  end    Connect    ausgef  hrt  Zuvor  muss die Sandbox nat  rlich eingeschaltet und vom Betriebssystem erkannt werden    Nach einem kurzen Druck der Taste Key  AvrO sollte der Begr    ungstext auf dem Bildschirm erschei   nen  Abbildung 2 21      X Device Manager    Fle Acton View Help       a                  Abbildung 2 20  Ger  te Manager mit   SandboxS2 serial emulation    Anschlussnu
194. l unterschiedlichen Positionen der Z  hne im Innenzahn   kranz der Servoscheibe und deren Befestigungsl  cher  an die das Spinnenbein montiert wird  entsteht  ein Differenzwinkel  Dieser Fehler kann durch versetztes Aufsetzen der Servoscheibe reduziert wer   den  diese Reduktion ist allerdings f  r Bewegungsabl  ufe nicht genau genug  durch die Verzahnung  ergibt sich ein maximaler Differenzwinkel von ca  7    Diese Differenzwinkel werden mit Hilfe der  Mechanik des Hexapods bestimmt  Sie m  ssen im Programm abgespeichert werden  Dadurch kann  eine Kompensierung w  hrend der Programmlaufzeit erfolgen   Die Nichtlinearit  t der Servowinkel muss jedoch bereits ber  cksichtigt werden  Dazu werden die im  Kapitels 2 ermittelten Werte in die Datenstruktur gTable eingetragen  Die Datenstruktur besteht  aus 24 Datens  tzen  je Zeile einer   f  r jedes Servo einen Datensatz  Jeder Datensatz besteht aus  17 St  tzstellen zur Linearisierung  einem Offset Winkel  der nun ermittelt wird  und der Standard   Drehrichtung  Der erste Datensatz wird dem Servoanschlu   SERVOO zugeordnet  der zweite dem  SERVOI  bis SERVO23     8 3 1 Spezifikation    Mittels dem Programm CalibrateHexapod werden die einzelnen Beinelemente in einen Randbereich  des Arbeitsraums bewegt  dessen idealer Winkel bekannt ist  dieser Winkel wird dann vom tats  chli   chen Winkel subtrahiert und es ergibt sich der Differenzwinkel PhiOffset    Nach dem Einschalten wird MSG_LED_0 eingeschaltet und es kann   ber die USB Sch
195. leg 3 to  140   40  0   SL2_AvrWaitOnKey  SL2 KEY 0  512  for  i 40  i gt   40  i              x          EY_NOT_PRESSED                                  IK_SetLegMovementCoxa  3  140  i  0  IK_KNEE_UP      delay  ms  20      return 0        SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    146       9 Software Funktionsbibliothek    In diesem Kapitel wird die Software Bibliothek der SandboxS 2 beschrieben  mit welcher es m  glich  ist  alle Hardware Einheiten der Platine mit geringem zus  tzlichen Aufwand zu verwenden     9 1      bersicht der Schnittstellen    Die Software Funktionsbibliothek umfasst folgende Funktionen     Tasten und Leuchtdioden des AVR  Erm  glicht einfachen Zugriff auf die Tasten und Leuchtdioden des AVR     Auslesen und Beschreiben zus  tzlicher Pins des AVR    ber diese Funktionen k  nnen Daten an eine zus  tzliche Hardware   bermittelt werden     Strom  und Spannungsmessung  Bietet die M  glichkeit  den aktuellen Stromverbrauch zu messen bzw  zu beurteilen  ob die  Akkus neu geladen werden sollten     PC Schnittstellen  USB und UART     ber diese Schnittstellen ist es m  glich  Daten mit einem PC auszutauschen     RoboticsChip   Die Funktionen dieser Gruppe erm  glichen Zugriff auf die Servos  die Servo LEDs  die  PS 2 Schnittstelle  das Sony Playstation2 Gamepad  den Summer  die Fernsteuerung und den  CORDIC Prozessor     Inverse Kinematik  Berechnung der inversen Kinematik eines Spinnenbeins     SD Karte  Mit diesen Funktionen k  nnen Daten 
196. linearer Interpolation die passende Pulsl  nge  die im Register Current   Pwm abgelegt wird und aus diesem auch ausgelesen werden kann    Der Wert von CurrentPhi kann vom Mikrocontroller nur ausgelesen werden  Einstellen l  sst sich  der gew  nschte Winkel   ber den Parameter PhiStart  wenn der Modus PhiSpeed im Register Mode   IrqMask ausgew  hlt wurde  Ist der Parameter NrOfDeltas auf den Wert    gesetzt  wird CurrentPhi  direkt aus PhiStart   bernommen    Auf Wunsch kann der in Abschnitt 7 7 beschriebene Servo Sequencer den Wert von CurrentPhi  auch zum Erzielen einer gleichm    ig fortlaufenden Servobewegung automatisch nachf  hren        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 6 SERVOLINEARISIERUNG UND  KALIBRIERUNG 97       Pulsl  nge                                              4095  2 523 ms 4          I             I   S S  i H i                      H i E               on      H H      eod U 81  2   gt  gt  3584   2 268         AES   fait                                  S 1 S 11 6 S   d    o        MEE       t    ei     od Qel EIS      cg sS 3072   2 012 ms    21                    t fey Ri  z S m    S gs  i ell RIL e   s EI zs    CAS            ej ri z      Nr 2560   1 756 ms           wl sj glas SNIE  i _  9S dm                                 BSI  EIN  7  ole     clie  _  a a sI       t     2    gt  Pul t      2 E     n  E  amp        2048   1 500      ulsgenerator  e s ss S EE B  DREE ES d zc            21      1536   1 244       ES             
197. llen  best  ckt werden   Abbildung 2 4   Um eine reibungslose Treiberinstallation zu gew  hrleisten m  ssen  alle Aktionen wie in Abbildungen 2 5  2 6 ausgef  hrt werden                           Abbildung 2 4  SandboxS2 mit best  ckten Akkuzellen     Die SandboxS 2 wird mit einer Firmware  die die USB Unterst  tzung des Mikrocontrollers aktiviert   ausgeliefert   Wird sie trotz mehrere Versuche nicht erkannt  K  nnte es an einer fehlenden fehlerhaften A  Firmware liegen  Sollte dies der Fall sein  kann die Installation erst nach dem Erstellen des ersten  Beispielprogramms fortgesetzt werden        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    22 2 ERSTE SCHRITTE       Found New Hardware Wizard Found New Hardware Wizard        Welcome to Ihe Found New  Hardware Wizard    Wesdows wil vasrch for conet ai updated software by  lockang on your computer on the hares installation CO er on  the Wexsowes Update Viet          ith your                         Bend      aroni                                   Thee wini helps you ratal          for  USE Geen          your hardware come with an installation CD    Can Windows connect to Windows Update t   search for      or floppy disk  insert 4 now    actua      Yes  tha tme orty      Yes  now and every tme   connect a device   9  No net the tme    What do you wort the wiraed to do           ratal the software automatically Fecommersied    9  Ita trom a           pectic location  Advanced     BS CJ           Found New Hardware Wiza
198. m in der Funktion Init    in der Datei main c  zusammengefasst      do all the initialization stuff here    void Init  void          initialize the RoboticsChip    RC Init         initialize sandboxS2  512 Init            initialize inverse kinematics  IK Init           initialize usb  uart usb init         initialize uart  uart init             CALC BAUDRATE  38400            elear all LEDS  RC_SetLedClearAll         activate stream I O  gStrmUSB   fdevopen  strm_usb_putc  strm_usb_getc    gStrmUART   fdevopen  strm_uart_putc  strm_uart_getc        enable interrupts   sei        Die Reihenfolge der Aufrufe muss nicht beachtet werden  Eine mehrmalige Initialisierung ist jedoch  zu Vermeiden  Die Initialisierungen sollten Grunds  tzlich immer am Beginn des Programms erfolgen   Im weiteren Verlauf dieses Abschnitts sind alle n  tigen Initialisierungsfunktionen f  r jede Funktion  der Software Funktionsbibliothek angegeben  in den Beispielen sind die Aufrufe dieser Funktionen  durch den Aufruf der Funktion Init    implementiert     9 4 SandboxS2_lib       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 4 SANDBOXS2_LIB 151       9 4 1 SL2 Init    void SL2 Init      Beschreibung    Initialisiert die SandboxS 2 AVR Komponenten     R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Muss vor allen anderen Funktionen des Moduls aufgerufen werden     9 4 2 SL2 AvrSetMsgLed    void 512 AvrSetMsgLed   in  uint8_   in  uinte8  1    Number   Status        c
199. mmer  Kann mit der  Eingabe von    devmgmt msc    in den    Ausf  hren    Dialog    Start  gt Ausfiihren     aufgerufen werden        Abbildung 2 21  Terminal Programm HTerm  Alle Einstellungen bis auf die Anschlussnummer sind zu  ignorieren  Da des sich um eine virtuelle serielle Schnittstelle handelt  maximale Geschwindigkeit und  Flusskontrolle wird durch das USB Protokoll vorgegeben        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    38 2 ERSTE SCHRITTE       2 4 6 Zusammenfassung    In diesem Beispiel wurde die grundlegende Arbeitsweise mit der Hexapod Bibliothek gezeigt  Auch  die Verwendung von Datenstr  me  Streams  wurde beschrieben  Alle Befehle der Hexapod Bibliothek  sind in Kapitel 9 aufgelistet  Die restlichen Funktionen sind Bestandteil der C Standard Bibliothek und  werden im    avr libc    Manual  das im WinAVR Paket enthalten ist  beschrieben     2 4 7 Aufgaben   Diese Aufgaben sollten erf  llt werden  bevor mit dem n  chsten Beispiel fortgefahren wird   a    ndern Sie den Begr    ungstext auf ihren Namen im Format Vorname Nachname   b  Der Text soll erst nach dem Loslassen der Taste ausgegeben werden     c  Lassen Sie den Text mit Hilfe einer Schleife nach jedem Tastendruck ausgeben     2 5 Laufende Lichter    Mit diesem Beispiel soll erstmals der Robotics Chip verwendet werden  Die Funktionen des Moduls  RoboticsChip erm  glichen ein einfaches Arbeiten  Bevor dieses Beispiel begonnen wird  sollte  das letzte bereits erfolgreich abgeschlossen sein 
200. n    fro      Abbildung 7 21  Anbindung der PS 2 Buchse an das FPGA     Das Eintreffen eines vollst  ndigen Satzes neuer Werte von der Maus wird mittels des Interrupt Flags  IFPs2 im Interrupt Flag Register IrqFlagsOthers  Abschnitt 7 2 1 4 angezeigt  Dieses Interupt Flag  l  st einen Interrupt auf Leitung INTO aus  wenn das Interrupt Mask Bit ImRc im Register IrqMas   kRcRxCtrl  Abschnitt 7 13 1 1  gesetzt ist  Wert 1      Da die Werte f  r XDelta und YDelta den Unterschied zur Position der Maus bei der vorigen Mes   sung angeben  ist es wichtig  alle Wertemeldungen von der Maus sicher zu empfangen  Neue Werte  treffen etwa alle 10 ms ein     7 14 0 4 Register Ps2X    Dieses Register gibt Auskunft   ber den Weg  den die Maus seit ihrer letzten Ausgabe in X Richtung  zur  ckgelegt hat        Bit JU 6 5 4 3 2 1 0  0x87F3                         XOVL   XDel  8   0x87F2 XDelta  signed 7 downto 0                          Tabelle 7 23  Register  Ps2X  Nur lesbar     Bit 9     XOVL Ist dieses Bit gesetzt  1   so wurde die Maus in X Richtung zu schnell und weit be   wegt  so dass der Weg in X Richtung nicht mehr in einer 9 Bit breiten Zahl darstellbar ist     Bits 8 bis 0     XDelta Diese 9 Bit breite vorzeichenbehaftete Zahl im Zweierkomplementformat gibt  den seit der letzten Mausbewegung zur  ckgelegten Weg in X Richtung an  Das Vorzeichen gibt  die Orientierung der Mausbewegung an        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    114 7 ROBOTIK PERIPHERIE  HSSE ROBOTIC
201. n  m  ssen SL2_Init     RC_Init    und  RC_Init    aufgerufen werden und der CORDIC Interrupt muss aktiviert sein        Beispiel   Berechnet die Winkel f  r Punkt  159  0  0  im Beinkoordinatensystem und f  hrt diesen mit allen drei  Servos an    int main  void          uint8_t i 0   IK_InverseKinematicsReturn Data        initialize all modules  Init           copy the linearisation table into the RoboticsChip  RC_SetGlobalServoAttributesTable_P  gTable        activate all servos  for  i 0  i lt RC_NUMBER_OF_SERVOS    i                    RC_SetServoPhiDirect  i  1609         RC SetGlobalServoMode  RC SERVO MODE PHI DIRECT                  enable cordic interrupt  RC SetInterruptO       INTTERRUPT MASK CORDIC                  calculate the angles needed to reach the desired point  Data   IK CalculateInverseKinematicsCoxa  159  0  0  IK KNEE UP                     return in case the point cannot be reached  if  Data Calculation    IK SUCCESSFUL              normalize the calculated angles to the data format of the     RoboticsChip and add the        value for the reference angle                      Data Angles Phi0    uinti16 t     int32 t   Data Angles Phi0   gt  gt 3    IK PHI 0 COOR SYS OFFSET     Data Angles Phil    uinti16 t     int32 t   Data Angles Phil   gt  gt 3    IK PHI 1 COOR SYS OFFSET     Data Angles Phi2    uinti16 t     int32 t   Data Angles Phi2   gt  gt 3    IK PHI 2 COOR SYS OFFSET                  the mechanics do not allow following angles          if   
202. n Dialog mit dem Titel    Welcome to AVR Studio 4    ange   zeigt werden  Ist dieser Dialog nicht zu sehen  kann er   ber den Men  befehl    New Project  gt Project  Wizard  aufgerufen werden  Ein Klick auf die Schaltfl  che    New Project   wechselt auf die n  chste  Seite des Assistenten     e Projektbezeichnung und Pfad   Unter    Project type    ist    AVR GCC    auszuw  hlen  Der Pfad f  r das neue Projekt ist ebenfalls zu  setzen  Weiters sollte dem Projekt ein sprechender Projektname verliehen werden  Durch einen Klick  auf die Schaltfl  che    Next  gt     werden die Eingaben   bernommen und der Assistent wechselt auf die       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    2 4    HELLO WORLD    IN DER SANDBOX VERSION 25       f pupa      Pm Yew Imm Queq W 9    Jis g   uA41  an                         Trees           ma        Abbildung 2 7  Projekt Assistent  Eingabe des Projektnamens     n  chste Seite  Abbildung 2 7      e Debugger und Mikrocontroller    f        pai DAC      Imm Queq gehe                   an AR ERAT ran  Trees Dati    ma        Abbildung 2 8  Projekt Assistent  Einstellen der verwendeten Hardware     Auf dieser Seite werden nun der verwendete Debugger und der Mikrocontroller eingestellt  Ver   wendet wird das    JTAG ICE Mk II    und der    AT90USB1287    Mikrocontroller  Durch einen Klick  auf die Schaltfl  che    Finish    wird der Assistent beendet  Abbildung 2 8      e Hexapod Softwarebibliothek   Die Projektdateien wurden nun auf der 
203. nd noch unbekannte USB Ger  t  Die  inf Datei  die Windows f  r die auto   matische Treiberinstallation ben  tigt  wird nicht automatisch vom Wizard gefunden  Die   se Datei be ndet sich im Installationsverzeichnis von    Flip     also beispielsweise unter  C  Programme Atmel FLIP 3 1 0 usb  Dieses Verzeichnis muss dem Hardware   Wizard manuell bekannt gegeben werden        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    60 4 MIKROCONTROLLER ATMEL AVR AT90USB1286 7       f  Im Ger  te Manager  Device Manager  ndet sich nun ein Ger  t namens Jungo AT90USB 128   Dies sollte man kontrollieren     Abbildung 4 6  Anschluss  des USB Kabels an der Sand   boxS 2  Das andere Ende  des Kabels wird an den PC  angeschlossen        Verwendung des Bootloaders   Der Bootloader im AVR wir aktiviert  indem der Reset Taster auf der SandboxS 2 gemeinsam mit  dem Taster KeyFpgaO schon vor Einschalten gedr  ckt und beim Einschalten in dieser Stellung ge   halten wird  Nach dem Einschalten wird zuerst der Reset Taster und danach der Taster KeyFpga0  losgelassen  Hierdurch wird das Bootloadprogramm aufgerufen  Es arbeitet nach dem immer gleichen  Ablauf  Es wartet auf einen Befehl seitens des PCs  z B  vom Proramm Flip  um ihn unmittelbar nach  Ankunft auszuf  hren  Anschlie  end wird erneut auf einen Befehl gewartet                 Fr  Atmel Flip         gt      Eile Buffer Device Settings                2  d  Z ta                                                             Operations Flow  
204. ng  in welche sich der Hebelarm bei gr    er werdender Impulsl  nge bewegt  ist jedoch nicht ge   normt  Selbst bei unterschiedlichen Servotypen des gleichen Hersteller kann die Drehrichtung einmal  wie im Bild und das andere Mal umgekehrt eingestellt sein  Der HSSE Robotics Chip beseitigt die   ses Problem durch eine eingebaute Drehrichtungsumkehr  die mittels Umrechnung der Impulsdauer  durchgef  hrt wird    Der Impuls muss regelm    ig wiederholt werden  was in der Praxis im Zyklus von 16 bis 30 ms ge   schieht  Wenn allzu lange kein Impuls beim Servo ankommt  entspannt das Servo sozusagen  d h  der       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 3 SERVOSTEUERUNG    89       Motor des Servos wird g  nzlich abgeschaltet  Da kein Winkel gew  nscht wird  ist nun jeder Winkel  m  glich und durch Verdrehen des Servohebels von au  en auch tats  chlich einstellbar  Allerdings soll   te man der Versuchung  am Hebel zu drehen  mit R  cksicht auf das Getriebespiel des Servos besser  widerstehen  Der HSSE Robotics Chip bietet die M  glichkeit  die Impulserzeugung f  r jedes Servo  zu unterdr  cken  Hierdurch kann der Energieverbrauch eines Roboters unter Umst  nden erheblich  reduziert werden  Nach dem Einschalten der Energieversorgung der SandboxS 2 sind alle Servoim   pulse deaktiviert  damit die Akkuzellen durch den pl  tzlich einsetzenden Energiebedarf s  mtlicher  Servomotoren nicht   berlastet werden  Sinnvollerweise wird die Impulserzeugung der einzelnen Ser   vo
205. ngang oder als Ausgang verwendet werden soll  Wird  der Parameter auf 51 2 EXT  PIN OUTPUT gesetzt  so wird der Pin als Aus   gang verwendet  bei SL2 EXT PIN INPUT sowie jedem anderen Wert als  Eingang                       R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    Bevor diese Funktion verwendet werden kann  muss 5 2 Init    aufgerufen werden     Beispiel    Siehe Beispiele von 9 4 6 und 9 4 7 ab Seite 155        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 4 SANDBOXS2_LIB 155       9 4 6 SL2_ExtAvrGetPinValue    uint8 t SL2_ExtAvrGetPinValue       Beschreibung    Liest den aktuellen Zustand von Pin D6 ein     R  ckgabewert       R  ckgabewert Beschreibung  SL2 EXT PIN OFF   An Pin D6 liegt eine logische 0  OV  an   SL2 EXT PIN ON   An Pin D6 liegt eine logische 1  3 3V  an                       Anmerkung    e Um diese Funktion verwenden zu k  nnen  muss der Pin mittels 512 ExtAvrSetPinMode    als Eingang de niert werden        e Bevor diese Funktion verwendet werden kann  muss 5 2 Init    aufgerufen werden     Beispiel  Von Pin D6 lesen und den Wert an LED 1 anzeigen     int main        uint8 t Data 0       function that has to b xecuted in every appli     cation to initialize the interface with the FPGA  SL2 Init                      SL2 ExtAvrSetPinMode SL2 EXT PIN INPUT         while  1        Data   SL2 ExtAvrGetPinValue     SL2 AvrSetMsgLed  SL2 MSG LED 1  Data                 return 0     9 4 7 SL2 ExtAvrSetPinValue       void
206. nittstelle der  Sandbox eine Verbindung mit dem PC hergestellt werden  Bei einem Tastendruck von AVR  KEY 0  wird eine Willkommensnachricht  sowie eine kurze Anleitung f  r das Programm   ber USB ausgege   ben  So kann der Winkel   ber AVR  KEY 0 erh  ht werden    ber AVR  KEY 1 vermindert werden       SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    136 8 INVERSE KINEMATIK       bzw  durch das Dr  cken beider Tasten zum n  chsten Servo gewechselt werden  Welches Servo gera   de aktiv ist wird   ber eine leuchtende LED neben dem Servostecker angezeigt  Wird eine der Tasten  l  nger gedr  ckt  so erh  ht sich die Geschwindigkeit des Servos  Der aktuelle Winkelwert wird nach  jedem Tastendruck ausgegeben     8 3 2 Messung    Zur Messung der einzelnen Werte m  ssen folgende Servopositionen angefahren und die Winkelwerte  aufgezeichnet werden     e Coxa  H  ftservo   Um die Mittelposition genau bestimmten zu k  nnen  werden alle Beine zu   n  chst v  llig ausgestreckt  Danach werden  mit Hilfe eines Lineals  alle Servos so eingestellt   dass sowohl die Schraube des Coxa Servos und der Fu  punkt beider gegen  berliegender Beine  auf einer Linie liegen  Abbildung 8 3      e Femur  Oberschenkelservo   So weit nach oben drehen  bis sich ein Streifen Papier gerade nicht  mehr zwischen Coxa und Femur schieben l  sst  Abbildung 8 4      e Tibia  Unterschenkelservo   So weit nach unten drehen  bis sich ein Streifen Papier gerade nicht  mehr zwischen Femur und Tibia schieben l  sst  
207. nn  er aber auch irreparabel besch  digt werden  Keinesfalls d  rfen die Einstellungen in den Registerkarten          Fuses    oder    LockBits    willk  rlich ver  ndert werden  Die erste Registerkarte beinhaltet alle Funk   tionen die zur   bertragung ben  tigt werden        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    2 4    HELLO WORLD    IN DER SANDBOX VERSION    33       e Auswahl des Programmierger  tes        B             pm ye iem De mh m  Ieee eo              HUET                                                                              de   M MM      P     hat Ce     Tew Tata en    Det mmm        gt  iy     LI                                                      4  st ETT 178445353       Abbildung 2 15  Auswahl des Programmierger  tes     Im Menu wird der Punkt    Tools  gt Program AVR   Connect     ausgew  hlt  Ein Dialog erscheint   in dem man das verwendete Programmierger  t ausw  hlen kann  Hier wird    JTAG ICE Mk II    und     USB    ausgew  hlt  Abbildung 2 15      e   bertragung des Programms       been demo pm        lem Deep mh m              asr         amp eSG rv                    229                                2      Den                         Abbildung 2 16    bertragung des   bersetzen Programms auf den Mikrocontroller     Ist ein Ger  t an dem gew  hlten Anschluss vorhanden  wird ein neuer Dialog angezeigt  In die   sem wird der Mikrocontroller auf       9005  1287    gestellt und der Modus auf    JTAG mode     Nun  kann man die z
208. ns  0x84CO  2ng   Ox84FF 32   DeltaPhi Servo ng  0x8500  2ng   Ox853F 32   NrOfDeltas Servo ne  0x8540  2ng   0x857F 32   LedBrightness LED nz   0x8580   Ox85F1 57   reserviert   Ox85F2   Ox85F3     intern   0x85F4   Ox85F5 1   IrqMaskRcRxCtrl   Ox85F6   0x85F7 1   TuneFine   Ox85F8   0x85F9 1   TuneCoarse   Ox85FA   Ox85FB 1   BuzzPhaseDurationLow   Ox85FC   0  85     1   BuzzPhaseDurationHigh   Ox85FE   Ox85FF 1   BuzzCtil   16 Bit Register            kann nur lesen   0x8600  2ns   0x863F 32   DeltasToGo Servo ng  0x8640  2ns   0x867F 32   Current DeltaPhi Servo ng  0x8680  2ns   Ox86BF 32   Current Phi Servo ng  0x86C0  2ns   Ox86FF 32   Current PWM Servo ng   0x8700   Ox87BD 95   reserviert                         SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 23 ADRESSRAUM IM   BERBLICK    131                                                                                                                                                                               Adr AVR    Ende Words   Beschreibung  Ox87BE   0x87BF 1   intern  0x87C0   0x87C1 1   intern  0x87C2   0x87C3 1   SonyPs2GamePadButtons  0x87C4   0x87C5 1   SonyPs2GamePadJoyR  0x87C6   0x87C7 1   SonyPs2GamePadJoyL  0x87C8   0x87D7 8   reserviert  0x87D8   0x87D9 1   ReRxChannel 1   0x87DA   0x87DB 1   ReRxChannel 2   0x87DC   0x87DD 1   ReRxChannel 3   0x87DE   0x87DF 1   ReRxChannel 4   0  87  0   0x87E1 1   ReRxChannel 5   Ox87E2   0x87E3 1   ReRxChannel 6   Ox87E4   Ox87E5 1   ReRxChannel 7   Ox87
209. ntf  gStrmUSB   Hello  World  Nn       fprintf  gStrmUART   Hello  World  Nn         read character       fgetc gStrmUSB        write character       SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    162    9 SOFTWARE FUNKTIONSBIBLIOTHEK       fputc  gStrmUSB         read integer  fscanf  gStrmUSB    d  8 amp i        read string  fscanf  gStrmUSB    s   amp str           print integer as hex value and string  fprintf  gStrmUSB     x_  s  i str                   for    full list of functions see avr libc    manual section  Standard IO facilities       never return  loop forever  for        return 0     9 6 UART    Diese Implementierung verwendet einen Pufferspeicher um Sende  und Empfangsdaten zwischen   zuspeichern  Bei jedem empfangenen Zeichen wird ein Interrupt ausgel  st und dieses in den Puffer  kopiert  Dort kann es dann vom Hauptprogramm abgeholt werden  Das Senden eines Zeichens er   folgt ebenfalls   ber einen Puffer  Dabei wird ein Interrupt ausgel  st  wenn der UART frei ist und  ein Zeichen vom Puffer in das Senderegister kopiert  Es kann auch eine Hardware Flusskontrol   le eingestellt werden  Standardm    ig werden zwei Pins am Erweiterungsstecker des AVR ben  tzt   die jedoch bereits von der SandboxS2 lib verwendet werden  Daher m  ssen diese zuerst deaktiviert  werden  siehe folgende Makros  SL2_NO_ADC  SL2_NO_EXT_PIN  UART_FLOW_USE_RTS   UART_FLOW_USE_CTS      9 6 1 uart_init    void uart init  in  uintl6_t baudRate        Beschreibung    Initialisier
210. nzahl der Bytes pro Sektor    BlockCount   Zu lesender Teil der Datei  Da eine Datei g  sser sein kann als ein einziger Clus   ter  muss angegeben werden aus dem welchem Cluster der Datei gelesen werden  soll                          R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Die SD Karte muss eingelegt und initialisiert sein     e Bevor diese Funktion verwendet werden kann  muss 5 2 Init    aufgerufen werden        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    214 9 SOFTWARE FUNKTIONSBIBLIOTHEK       Beispiel    siehe Beispiel in Abschnitt 9 10 7 auf Seite 214     9 10 7 fat_write_file    void fat write file   in  uintl6_t cluster    in  uint8 t xbuffer    in  uint32 t blockCount        Beschreibung    Schreibt Daten in eine Datei    Parameter   Bedeutung   Cluster Erster Cluster der Datei    Buffer Zu schreibende Daten  Buffer ist ein eindimensionales Array  8 bit Datentyp    welches mindestens so grof ist wie die Anzahl der Bytes pro Sektor   BlockCount   Zu schreibender Teil der Datei  Da eine Datei g  sser sein kann als ein einzi   ger Cluster  muss angegeben werden in welchem Cluster der Datei geschrieben  werden soll                             R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung  e Die SD Karte muss eingelegt und initialisiert sein     in e Wird die Dateigr    e durch die Schreibeoperation ver  ndert  so wird diese m  glicherweise nicht  mehr korrekt am PC angezeigt     e Bevor diese Funktion 
211. oe ao 122  7 19 Versionsnummer des                                                  123         Doma Modes o uu er                                   E we PERE a de uade 123  7 21 ROANISEDWEHOEHRE 2   2 A Aer a MA ERR                  123  722 CORDIC ROptoZe8SO0E  220222222222 2494                    gm                    124  7 221 Zahlenformate  Genauigkeit                     4 A 126  7 23 Adressraum im                                                  130  8 Inverse Kinematik 133  Bl SOHO     ee                     a ee 133          133   2                      222 emo      EE      w        133  82 Inverse Kinematik des Hexapods                              134  3 3  Bhxapog          22 4 e cy          wake pa        E des aus 135  8 1  Spezi KION     e  gt         ee A                      aes 135  Gaa MESME 202222222245 4222 45      S                  leue 136  55            22222522222 bd           SUR mue deg         dks 138  SA Inverse Kinematik Test    ooo ze               anne Ain d 142  SAL  Spezi kaloi 25                   be w m                             S WW      142  552 Quellcode  22220525555           E TROU en      143   9 Software Funktionsbibliothek 146  9 1   bersicht der 5                                                    146   SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX          8 INHALTSVERZEICHNIS  32 I dic oe soe ee ne ed      150  921                                         ea a anche 150  Ud SGundbdxbs HD  ese  552215552                ES 
212. ogramm geschrieben werden     2 6 2 1 Programmspezifikation    Beim Einschalten wird der Wert 2048 in das Register PwmLen des Servos 0 geschrieben  Das Servos  wird im PwmDirect Modus betrieben  Die Drehrichtung von Servo 0 kann mittels des Reverse Bits  im Register ModelrqMask umgekehrt werden  Der Wert im Register PwmLen soll anschlie  end im  Bereich von 0 bis 4095 per Tastendruck eingestellt werden k  nnen  Die beiden Tasten Key  AvrO und  Key  Avrl dienen jeweils dazu  diesen Wert zu erh  hen respektive zu verringern oder die Drehrichtung  zu invertieren     2 6 2 2 Quellcode    TEE EE EE EE                                   C S       Workfile   main c     Author   Christian Raschko      Date    2007 08 20      Description   main program     Revision 23                      AE AE HE AE AE AE AE        VV YY YY             E E E E E AAA AAAI        includes              LSA    M PEE NM IMP TAT AAA ALA AA ALA ELA AAD EI ILL      standard library includes  include  lt stdio h gt      AVR specific includes  include  lt avr interrupt h gt   include  lt util delay h gt     hexapod library includes  include  SandboxS2_lib h   include  RoboticsChip h   include  uart h    include  uart_usb_lib h          servo port number to use  define SERVO_TO_USE 0                        IAL AAA ALAA AT                              global variables definitions   PETA T E                  LAA AAA AT AA AAA TIA LAT EP TALIA TALIA AIA      AAA              pointers to I O stream structures   FILE
213. onenten    Sowohl der Mikrocontroller als auch das FPGA ben  tigen eine Spannungsversorgung mit 3 3 V   die durch einen linearen Spannungsregler aus der Akkuspannung bereitgestellt wird  Abb  3 7   Die  Stromaufnahme des FPGAs bewegt sich unter 100 mA  die des Mikrocontrollers unter 15 mA  Hinzu  kommen noch die Str  me zum Betrieb der LEDs und der Schnittstellen  SD Card oder  Modul und  PS 2 Maus   Der eingesetzte Spannungsregler kann einen Strom von maximal 300 mA bereitstellen        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    3 7 SPANNUNGSREGELUNG    53       Positive  Akkuspannung                JP                                  Abbildung 3 7  Spannungsregelung und  stabilisierung     3 7 2 Spannungsversorgung RC Empf  nger    RC Empf  nger werden traditionell mit 4 AA Zellen versorgt  Die meisten modernen Empf  nger k  n   nen jedoch auch mit 5 AA Zellen versorgt werden  da sie einen Spannungsregler enthalten  Um eine si     Positive  Akkuspannung _    GND   TL             Abbildung 3 8  Versorgungsspannung f  r den Emp   f  nger     chere Spannungsversorgung von Empf  ngern jeden Alters zu garantieren  wird  wie in Abbildung 3 8  zu sehen  eine Siliziumdiode in die Versorgung des Empf  ngers eingeschleift  Sie setzt die Versor   gungspannung um 0 7 V herab  Die so erzeugte Spannung wird mittels eines Kondensators stabilisiert   Diese um 0 7 V herabgesetzte Spannung ist zwar ein Kompromiss  hat sich aber in der Praxis gut  bew  hrt     3 7 3 Spannungsversor
214. or         return 0     9 9 Inverse Kinematik    Mit Hilfe der inversen Kinematik ist es m  glich  die Winkel aller Gelenke  Servos  aus einem gegeben  Fu  punkt zu berechnen  Weitere Informationen sind in Kapitel 8 zu nden     9 9 1 IK Init    void IK Init          Beschreibung    Initialisiert das inverse Kinematik Modul     R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Muss vor allen anderen Funktionen des Moduls aufgerufen werden        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 9 INVERSE KINEMATIK    203       9 9 2 IK_CalculatelnverseKinematicsCoxa    IK InverseKinematicsReturn CalculateInverseKinematicsCoxa                              in  int16 t XCoord    in  int16 t YCoord    in  int16 t ZCoord    in  int8 t Position     Beschreibung    Berechnet die inverse Kinematik eines Beines   In dieser Berechnung werden die Einschr  nkungen durch die Mechanik des Hexapods nicht ber  ck     sichtigt        Parameter   Bedeutung       XCoord X Koordinate des gew  nschten Fu  punktes                    YCoord Y Koordinate des gew  nschten Fu  punktes   ZCoord Z Koordinate des gew  nschten Fu  punktes   Position Da es f  r viele Punkte zwei verschiedene L  sungen f  r p   und y   gibt muss zu     s  tzlich angegeben werden  welche der beiden L  sungen berechnet werden soll   Wird dieser Parameter      KNEE UP gesetzt  so wird eine L  sung berechnet  in  welcher der Fu  punkt stets eine tiefere Position einnimmt als das    Kniegelenk     
215. ow    4 Sands 2 cd SexS 2 Deer       Abbildung 2 5  Installieren des SandboxS 2 Treibers nach dem Anstecken an die USB Schnittstelle  Teil  1         SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    2 3 GER  TETREIBER INSTALLIEREN 23           Found New Hardware Wizard Found New Hardware Wizard            Select the device driver you want 10 install for thes hardware Please wat while the wizard installs the software    Select the manufacturer and model of your hardware device and then cick Next  f you  have a      that contains the diver you want to install  cick Have Disk             2 SandbocS2 sensi               E Show compatitie hardware  Model  Sandbox 52 serai emulation       Ei e    Setting a system restore port and backing up oki fles e       Wes diver      gta    case your syrien reeds to be               hise    Tel me why ger soning                       Completing the Found New  Hardware Wizard           winerd has frished insti lig the            for       Sandbar S2            em daten    Check  Femh 16 close the word    Abbildung 2 6  Installieren des SandboxS 2 Treibers nach dem Anstecken an die USB Schnittstelle  Teil  2         SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    24    2 ERSTE SCHRITTE       2 4    Hello World    in der Sandbox Version    Da nun die ben  tigte Hard  und Software installiert wurde  kann mit einem ersten Programm begonnen  werden  Dazu werden folgende Punkte beschrieben     e Projekt erstellen   e Programm schreiben  e 
216. p deskjet E122 series           Document and Markups      Beispiel f  r den Druckdialog von  Acrobat Reader  Die Einstellung  f  r den Drucker muss selbst   verst  ndlich an die verwendete  Computer  Druckerkombination  angepasst werden        
217. prechenden Pin ausgibt  muss die Fuse CKOUT programmiert sein   siehe Abb  4 5      4 7 Update der Software des AVR Mikrocontrollers    Die Software auf dem AVR Mikrocontroller wird in einem Flash Speicher festgehalten  Dieser kann  auf unterschiedliche Weise mit einem neuen Programm versorgt werden  Wichtig sind insbesondere  die nachfolgend beschriebenen Vorgehensweisen mittels des USB Bootloaders und unter Verwendung  des In Circuit Emulators  ICE  JTAG ICE Mk II    Bei der Programmierung des Speichers mittels USB Bootloader wird lediglich ein USB Kabel und  die kostenlos unter http    www atmel com erh  ltliche Programmierapplikatioon    Flip    ben     tigt  Diese L  sung ist daher praktisch kostenlos  bietet aber nicht die M  glichkeiten des Emulators           ICE bei der Unterst  tzung der Softwareentwicklung  Mit letzterem k  nnen vielf  ltige Informa   tionen   ber den derzeitigen Zustand von Prozessor und Speicher w  hrend des Programmlaufs erfragt  und beobachtet werden  Nachteil ist sein relativ hoher Preis     4 7 1 USB Bootloader    Der USB Bootloader f  r die SandboxS 2 ist ein Programm f  r den AVR Mikroccontroller und wird  fertig von der Firma Atmel zur Verf  gung gestellt  Wird er in den Flash Speicher des Mikrocontrollers  geladen  so belegt er dort die oberen 8 kByte dieses Programmspeichers  insgesamt stehen 128 kByte  Programmspeicher zur Verf  gung   Man kann daher keine Programme in den Flash Speicher laden   welche diesen Teil des Speichers ebenfall
218. qFlagsOthers       Bit 7 6 5 4 3 2 1 0  0x9C03             IFCord   IFNeut   IFPnk IFRc IFPs2                         Tabelle 7 5  Register  IrqFlagsOthers  Im Initialisierungszustand nach dem Einschalten und nach Reset  sind alle Interrupt Flags inaktiv  Wert 0    Nur lesbar  Durch das Auslesen des Registers werden alle  Interrupt Flags im Register gel  scht     Bit 0     IFPs2 Interrupt Flag zur Anzeige der Verf  gbarkeit neuer Daten vom PS 2 Mausinterface   Abschnitt 7 14   Ist das zugeh  rige Mask Bit ImPs2 im Register IrqMaskRcRxCtrl  Ab   schnitt 7 13 1 1  gesetzt  wird auch ein Interrupt auf der Leitung INTO des Mikrocontrollers  angefordert     Bit 1     IFRc Interrupt Flag zur Anzeige der Verf  gbarkeit neuer Daten vom RC Empf  ngerdecoder   Abschnitt 7 13   Ist das zugeh  rige Mask Bit ImRc im Register IrqMaskRcRxCtrl  Ab   schnitt 7 13 1 1  gesetzt  wird auch ein Interrupt auf der Leitung INTO des Mikrocontrollers  angefordert     Bit 2     IFPnk Dieses Interrupt Flag wird bei Druck auf die Servopaniktaste  Abschnitt 7 9  gesetzt   Ausl  ser f  r das Setzen des Flags ist der erstmalige Druck auf die Taste  Auch wenn das Flag       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 3 SERVOSTEUERUNG 87       durch Auslesen gel  scht wird  kann es kein zweites Mal gesetzt werden  Ist das zugeh  rige  Mask Bit ImPnk im Register IrgMaskRcRxCtrl  Abschnitt 7 13 1 1  gesetzt  wird auch ein In   terrupt auf der Leitung INTO des Mikrocontrollers angefordert     Bit 3  
219. qMask von Servo 0 gesetzt  wird bei gesetztem Interrupt Flag ein  Interrupt auf der Leitung INT1 beim Mikrocontroller angefordert     Bits 1 7     IFSI   IFS7   quivalent zum Interrupt Flag f  r den Servosequencer 0 gibt es die ent   sprechenden Interrupt Flags auch f  r die Servosequencer 1 bis 7        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    86 7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP       7 2 1 2 Register ServoSeqEmpty158       Bit 7 6 5 4 3 2 1 0  0x9C01 IFS15 IFS14 IFS13 IFS12 IFS11 IFS10 IFS9 IFS8                         Tabelle 7 3  Register  ServoSeqEmpty158  Im Initialisierungszustand nach dem Einschalten und nach  Reset sind alle Interrupt Flags inaktiv  Wert 0    Nur lesbar  Durch das Auslesen des Registers werden  alle Interrupt Flags in diesem Register gel  scht     Bits 0   7     IFS8     IFSIS   quivalent zum Interrupt Flag f  r den Servosequencer 0 gibt es die ent   sprechenden Interrupt Flags auch fiir die Servosequencer 8 bis 15     7 2 1 3 Register ServoSeqEmpty2316       Bit 7 6 5 4 3 2 1 0  0x9C02  Tabelle 7 4  Register  ServoSeqEmpty2316  Im Initialisierungszustand nach dem Einschalten und nach  Reset sind alle Interrupt Flags inaktiv  Wert 0    Nur lesbar  Durch das Auslesen des Registers werden  alle Interrupt Flags im Register gel  scht        Bits 0   7     IFS16     IFS23   quivalent zum Interrupt Flag f  r den Servosequencer 0 gibt es die ent   sprechenden Interrupt Flags auch f  r die Servosequencer 16 bis 23     7 2 1 4 Register Ir
220. r      KNEE  UP gesetzt  so wird eine L  sung berechnet  in  welcher der Fu  punkt stets eine tiefere Position einnimmt als das    Kniegelenk      Bei IK_KNEE_DOWN liegt der Fu  punkt h  her als das    Kniegelenk                                      R  ckgabewert    Der R  ckgabewert bestimmt  ob der Punkt angefahren wurde oder nicht        R  ckgabewert Beschreibung  IK_FAILED Der Punkt kann nicht erreicht werden   IK_SUCCESSFUL   Der Punkt wurde angefahren                       Anmerkung    e Bevor diese Funktion verwendet werden kann  m  ssen SL2 Init    RC Init   und  RC Init    aufgerufen werden und der CORDIC Interrupt muss aktiviert sein        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    206 9 SOFTWARE FUNKTIONSBIBLIOTHEK       e Von dieser Funktion werden sowohl die Einschr  nkungen durch die L  ngen der Beinelemente  als auch durch die maximalen Drehwinkel der Servos beachtet     Beispiel    Berechnet die Winkel f  r Punkt  159  0  0  und f  hrt diesen an     int main  void      uint8 t i 0   IK InverseKinematicsReturn Data        initialize all modules  Init          copy the linearisation table into the RoboticsChip  RC SetGlobalServoAttributesTable P  gTable        activate all servos  for  i20  i  RC NUMBER OF SERVOS    i                    RC_SetServoPhiDirect  1  1609         RC_SetGlobalServoMode  RC SERVO MODE PHI DIRECT               enable cordic interrupt  RC SetInterruptO       INTTERRUPT MASK CORDIC               move leg 3 to  159  0  0   IK S
221. r Teil des Beines  Coxa stellt den Bereich dar  der am n  chsten am  K  rper liegt     e Femur  Oberschenkel bzw  Mittelst  ck des Beins bei der gegebenen Mechanik   e Tibia  Unterschenkel inklusive Fu  punkt beim Hexapod     Die Aufl  sung des 3 dimensionalen Koordinatensystem f  r den Fu  punkt betr  gt etwa 1 mm  Der  Ursprung dieses Koordinatensystems  Coxa System  liegt in der Achse des Coxa Servos und einer  gedachten horizontalen Ebene durch die Achse des Femur Servos  Das Koordinatensystem ist so ge   dreht  dass die positive Z Achse des Koordinatensystems nach unten  die positive X Achse vom K  r   per weg und die positive Y Achse     bei einem von oben gesehenen Hexapod     in Richtung des                   Uhrzeigersinns zeigt  siehe Abb       d  F  r die einfachere Programmierung eines Bewegungsablaufs werden die Koordinatensysteme aller  Beine so gedreht  dass alle x  bzw  y Achsen parallel zu einander sind  siehe Abb       Diese gedreh  De       ten Koordinatensysteme werden in der Folge als rotierte Coxa Systeme bezeichnet     8 3 Hexapod Kalibrierung    Neben der Nichtlinearit  t der Servos     die mit Hilfe der zuvor ermittelten Werte vom RoboticsChip  kompensiert werden kann     gibt es noch einen zweiten Parameter der korrigiert werden muss um  sicherzustellen  dass sich alle 6 Beine des Hexapods gleich verhalten     Das Problem ist hier allerdings nicht das Servo selbst  sondern die Scheibe welche an Servo und   Spinnenbein montiert wird  Durch die zum Tei
222. rd Found New Hardware Wizard    Please choose your search and installation options                Starch for the beat diver in these locanons    Use the check boxes below to let or expand the          search  which            local  paths and renovatie meda The best dever found wil be             Select a hardware type  and then cick Next    Common hardware types        1294 Debugger Device  Qu 51553 Device Coss       Wem   been        Dont sesch Led choose the drew to install     T L  Choose thes coton to select the device dever rom a lat  Windows does not guarantee that oem Rasos  the dever you choose wil be the best match for your hardware ij Conouer          mee        Found New Hardware Wizard            Select the device diver you want 1o install for this hardware    Select the manufacturer and model      your hardware device and then cick Next  f you Install Fr Disk  have    dsk that contains the diver you wart to install  cick Have Disk sta om Uis   inset the man facturers                 dac and then  make sure that the comect dive a selected below    A Made      NF CD ROM Deve force CODA accurate    Ee      ATA ATAPI      IJ CO ROM Oire force CODA raccunte                          B CD ROM Deve force MAPI desi    4 5            Orre  MAPI stinga on        Siam masna       5  Ta diver a d  tt           Found New Hardware Wizard    Locate File    install From Disk             the man factures nstalaben dak  and then           sure that the conet           selected bel
223. rierung  auf der Lattice Homepage erforderlich  Der Installer von ispVM System hat eine Dateigr    e von ca   25MByte    Zum Anschluss des PCs an die JTAG Schnittstelle des FPGAs ist ein sogenanntes Programierka   bel notwendig  Dieses Kabel ist in zwei Ausf  hrungen erh  ltlich  n  mlich f  r die USB Schnittstelle       SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    6 FPGA LATTICE XP LFXP3K        Preis  ca  150      und f  r den Parallel Port  Preis  ca  65      Genaueres ndet sich auf der Lattice   Homepage unter den Links    Products     Development Hardware     Programming Cables     Auf der  SandboxS 2 ist der JTAG Port des FPGAs   ber die 10 polige Steckwanne mit der Bezeichnung U4                                           FPGA  LJ   40 pol Wanne U4 f  r  d   Download kabel    ispVM Embedded          Abbildung 6 2  Steckwanne zum Anschluss an die JTAG Schnittstelle des FPGAs      Abb  6 2  erreichbar    Verkauft werden die Produkte von Lattice   ber Distributoren  Deren aktuelle Adressen lassen  sich ebenfalls   ber die oben genannte Homepage  Men  punkt    Sales     heraus nden  Die FH   O   Hagenberg steht in keinem kommerziellen Verh  ltnis zu Lattice oder seinen Distributoren und  verkauft nat  rlich auch keine Produkte von Lattice  oder anderen Herstellern   Bei Interesse an einem  der genannten Download Kabel wenden Sie sich also bitte direkt an den zust  ndigen Distributor    Alternativ zur k  uflichen L  sung kann ein Programmierkabel auch im Selbstbau e
224. rn  loop forever    for       return 0     9 6 2 uart init double speed    void uart init  double speed  in  uintl16 t baudRate     Beschreibung    Initialisiert die UART  verdoppelt jedoch den Grundtakt des Baudrate Generators        Parameter   Bedeutung  baudRate Gibt den Wert f  r das Baudrate Register an  Dieser Werte muss mit dem Makro  UART CALC BAUDRATE DOUBLE SPEED berechnet werden                    R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Aufgrund des verwendeten 8MHz Systemtaktes k  nnen nur folgende g  ngige Baudraten feh   lerfrei generiert werden  siehe     9005  1287 Datenblatt  Kapitel 18 10   2400  4800  9600   19200  38400    Beispiel    siehe Abschnitt 9 6 1    9 6 3 uart putc    void uart putc  in  char data     Beschreibung    Sendet ein Zeichen  f  gt es in den Sendepuffer ein        Parameter   Bedeutung  data Zeichen das gesendet werden soll                       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 6 UART    165       R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Diese Funktion blockiert wenn der Puffer voll ist  Was jedoch nur Auftritt  wenn keine Interrupts  aktiviert sind  oder wenn die Hardware Flusskontrolle verwendet wird und die Gegenstelle nicht  bereit ist     e Bevor diese Funktion verwendet werden kann  muss uart_init    aufgerufen werden     Beispiel    siehe Abschnitt 9 6 1    9 6 4 uart_puts    void uart_puts  in  charx str     Beschreibung    Sendet ein
225. rrechnet sich  aus dem Produkt der Zeitkonstanten 125 ns mit der im Register angegebenen Zahl                   Bit  Ox85FB unsigned 15 downto 8   Ox85FA unsigned 7 downto 0     Tabelle 7 27  Register  BuzzPhaseDurationLow  Der Initialisierungswert nach dem Einschalten ist  0x2382  Schreib  und lesbar     7 15 0 9 Register BuzzPhaseDurationHigh    Dieses Register enth  lt eine vorzeichenlose 16 Bit Zahl  Diese Zahl gibt an  wie lange die High Phase  des Rechtecksignales dauert  welches an den Piezosummer angelegt wird  Die Dauer errechnet sich  aus dem Produkt der Zeitkonstanten 125 ns mit der im Register angegebenen Zahl     7 16 Erweiterungssteckplatz    In Abb  7 23 ist der Erweiterungssteckplatz  welcher am FPGA angeschlossen ist dargestellt  Auf dem  Steckplatz stehen zur Energieversorgung einer externen Erweiterung sowohl die geregelte Spannung       SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    116 7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP          Bit T 6 5 4 3 2 1 0  0x85FD unsigned 15 downto 8   0x85FC unsigned 7 downto 0                 Tabelle 7 28  Register  BuzzPhaseDurationHigh  Der Initialisierungswert nach dem Einschalten ist  0x2382  Schreib  und lesbar     NAAAAAA    Vv V YV V VY V V V       Abbildung 7 23  Als Erweiterungsstecker wird eine 20 polige Stiftwanne eingesetzt     von 3 3 V  als auch die ungeregelte Akkuspannung zur Verf  gung  Die Masseleitung  GND  ist auf  zwei Pins ausgef  hrt  Das FPGA ist   ber 16 kon gurierbare Pins mit dem Steckpl
226. rs erlaubt die Messung der Gesamtstromaufnahme des Systems  Sand   boxS 2 und Servos   wobei der Restwiderstand des Ein  Ausschalt MOSFETs als Shunt Widerstand  genutzt wird  Der Anschluss des Transistorkanals  Drain Source Strecke  ist in Abb  5 10 dargestellt   Der AVR verf  gt   ber differentielle ADC Eing  nge  so dass unter Umgehung des von hohen Str  men    Spannungsabfall  I    vom negativen 1  7  SSC GND  Akkuspannungspol zx      a  Kana  med e                    Abbildung 5 10  Die Messung der am Tran     sistorkanal abfallenden Spannung erlaubt den e e  R  ckschluss auf den Strom  der   ber den Ka   nal flie  t      lt                    durchflossenen Weges   ber GND eine genauere Messung m  glich ist    Dieses Verfahren bietet zwar nicht die Genauigkeit eines speziellen Mess Shunts  aber ben  tigt im  Gegenzug kaum Platinenfl  che und verursacht nur minimale Kosten    Die am Kanal des Transistors abfallende Spannung bei max  3 m   Kanalwiderstand im eingeschal   teten Zustand bewegt sich im Bereich von 0 30 mV  Bei 200 facher Verst  rkung ergeben sich daher  0 6 V  w  hrend eine zehnfache Verst  rkung 300 mV ergibt  In den meisten F  llen wird die 200 fache  Verst  rkung also verwendet werden k  nnen  Bei   berlauf des ADC Messergebnisses kann einfach ei   ne zweite Messung mit reduzierter Verst  rkung erfolgen  da die Verst  rkung per Software einstellbar  ist        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    70    5 ON CHIP PERIPHERIE DES ATMEL AVR AT
227. rstellt werden   Zumindest f  r die Version zum Anschluss an den Parallelport ist dies relativ leicht m  glich     Installation von ispVM System   Die Installation geht wie bei den meisten anderen Windows Programmen von statten  Als Installati   onsoption im Fenster mit dem Titel    Select Components    sollte sicherheitshalber    Full Installation     ausgew  hlt werden    Im Fenster    Select Additional Tasks    kann man getrost die Voreinstellungen   bernehmen  Wer sei   nen Desktop frei von weiteren Icons halten m  chte  in diesem Fall vier davon   kann nat  rlich das  H  kchen im entsprechenden Auswahlfeld l  schen    Nach dem Infofenster mit einem   berblick der ausgew  hlten Komponenten   ffnet ein Klick auf     Install    ein Fenster mit der Frage  ob auch ein    LSC USB or Parallel Port driver    installiert werden  soll  Hier unbedingt mit   Ja    antworten         LSC Drivers Install Uninstall x     Install         Lattice      21222  Semiconductor           Corporation Close      r Drivers  Installation Options                         15    win98 2000  P USB Driver     Both Drivers       r Parallel Port Driver Installation Options       Driver s service starts on demand only   Default      System Standby Mode Support        Driver s service starts during startup of the system  N           Backwards Compatible   Abbildung 6 3  Auswahlfenster f  r die Treiberinstal     lation zum Download Kabel von Lattice              SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2
228. rzeigersinn f  r wachsende Winkelwerte vom Servo angesteuert  werden  Der Sinn der Linearisierungseinheit liegt nun genau darin  aus einem beliebigen Servo eines  zu machen  dass dieses w  nschenswerte Verhalten zeigt    Der Winkelbereich 0   205   entspricht in etwa dem maximal von g  ngigen Modellbauservos  wie  dem Hitec HS311 erreichbaren Winkelbereich  Die Angabe des gew  nschten Winkels sollte wie ge   sagt in der in der Mathematik   blicheren Art und Weise geschehen  n  mlich im Bogenma    Im Bo   genma   entspricht der Winkel 180   dem Wert 7 und demnach der Winkel 205   dem Wert 3 58  Mul   tipliziert man diesen  Maximal Wert mit 1024  so erh  lt man 3663  Durch diese Skalierung l  sst sich  der Zahlenbereich einer zw  lf Bit breiten Dualzahl von 0   4095 f  r das Bogenmaf ef zient nutzen   Die Multiplikation mit dem Faktor 1024 kann f  r eine Dualzahl mit sehr geringem Rechenaufwand  durchgef  hrt werden  da 1024   219 ist und daher durch eine Verschiebung der Zahl um 10 Stellen  nach links ersetzt werden kann  Genauso kann die Division durch 1024 durch eine Verschiebung um  10 Stellen nach rechts ersetzt werden  Im C Code kann trotzdem beispielsweise Alpha   1024  geschrieben werden  da der Compiler die Optimierungsm  glichkeit automatisch erkennt und nutzen  wird    Zwar bleibt ca  10  des Zahlenbereichs  die Werte von 3664 bis 4095  f  r die Angabe des Winkels  ungenutzt  aber die Auswirkungen auf die Stellgenauigkeit handels  blicher Servos sind   u  erst gering
229. s  Methoden  IK_CalculatelnverseKinematicsCoxa    IK_SetLegMovementCoxa  IK_SetLegMovement  IK_GivensTransformation    Modul  MemoryCard  Funktionalit  t  Lesen und schreiben von SD Karten  Methoden  mmc init  fat cluster data store  GetClusterSize  GetBytesPerSec    fat search le  fat read le  fat write le    In den nachfolgenden Abschnitten werden die einzelnen Funktionen erl  utert  Meist wird die De   klaration angegeben  wobei  in  einen Eingangsparameter   out  einen Ausgangsparameter und   inout  einen   bergangsparameter darstellt  Weiters werden die Parameter und R  ckgabewerte  beschrieben und ein kurzes Beispiel gezeigt        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    150 9 SOFTWARE FUNKTIONSBIBLIOTHEK       9 2 Datentypen    In den folgenden Funktionen werden die vorzeichenlosen Datentypen uint8_t  uint16_t und  uint32_t sowie die vorzeichenbehafteten Datentypen int8_t  int16_t und int32_t verwen   det  Die Zahlen 8  16 und 32 bestimmen den von der Variable ben  tigten Speicherplatz in Bit sowie  deren Wertebereich  Sie beeinflussen die Anzahl der Prozessorzyklen  die eine Operation ben  tigt   Diese Datentypen sind der Datei stdint h im Installationsordner von WinAvr de niert        9 3 Initialisierung    Die in diesem Abschnitt beschriebene Software Funktionsbibliothek besteht aus mehreren Modulen   Bevor ein bestimmtes Modul verwendet werden kann  muss dieses initialisiert werden  Die Funktions   aufrufe aller Initialisierungsfunktionen sind wiederu
230. s belegen  sei es  dass das zu ladende Programm auf Grund  seiner L  nge in diesen Speicherbereich hineinragt  sei es dass es sich beim zu ladenden Programm um  eine Kombination aus einer Applikation und einem eigenen Bootloader handelt        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    4 7 UPDATE DER SOFTWARE DES AVR MIKROCONTROLLERS    59       Beim Debuggen mit dem Debugger JTAG ICE        wird der Bootloader leider durch das Ablegen  des eigenen Programmes im Flash Speicher des Mikrocontrollers gel  scht  Ist dies geschehen  so kann  der Bootloader wie im Abschnitt 4 7 2 beschrieben wieder in den Flash Speicher des AVR geladen  werden     Vorbereitung SandboxS 2  Die SandboxS 2 muss folgenderma  en f  r die Verwendung des USB Booloaders vorbereitet sein     e Das Bootloaderprogramm b1_usb a90  auch einfach Bootloader genannt  ist in den oberen  8 kByte des Flash Programmspeichers innerhalb des AVR AT9OUSB1286 7 abgelegt und    e die Fuse HWBE ist gesetzt     aktiviert   H  kchen ist gesetzt   siehe Abschnitt 4 6     Bei einer frisch gelieferten SandboxS 2 sind beide Voraussetzungen erf  llt  Im Nachhinein l  sst  sich das Bootloadprogramm   1 usb a90 mit in der im Abschnitt 4 7 2 beschriebenen Art an der  richtigen Stelle im Flash Programmspeicher des AVR ablegen  Mit dem dort beschriebenen Werkzeug  JTAG ICE Mk II ist auch eine Einstellung der sogennannten Fuses und daher auch der Fuse HWBE  m  glich     Vorbereitung PC  e Auf dem PC muss das Programm    Flip  
231. s mit jeweils zwei unabh  ngigen Achsen zur Verf  gung  Die weitere Be   schreibung geht davon aus  dass der Modus analog grunds  tzlich aktiviert ist  Ist dies nicht der Fall   so ist die entsprechende Taste auf dem Game Pad Controller zu dr  cken  In Modus analog leuchtet  normalerweise eine im Controller eingebaute rote LED  Im Modus digital ist diese LED hingegen  ausgeschaltet    Game Pad Controller f  r die Sony Playstation 2 werden nicht nur von Sony  sondern auch von ei   ner gro  en Zahl weiterer Firmen in hoher St  ckzahl hergestellt  Auf dem Markt herrscht ein enormer  Preisdruck  Kabellose Versionen sind schon ab 15     zu bekommen  kabelgebundene Formen liegen  preislich meist unterhalb von 10     teilweise gar bei 5      Allerdings gibt es auch entsprechend hohe  Qualit  tsunterschiede  Viele Game Pad Controller an der unteren Preisgrenze lassen es an an Fein   f  hligkeit fehlen  Vor dem Kauf sollte man also besser ausgiebig testen oder sich an Hand der Erfah   rungsberichte von Bekannten oder aus Foren orientieren    Der attraktive Preis und die praktische Handhabung der Game Pad Controller zusammen mit der  entsprechenden Auswertungseinheit im HSSE Robotics Chip kombinieren sich optimal zur Steuerung  von Robotern     7 17 1 Adapterkabel    Die Steckverbindung der Game Pad Controller weist eine eigens von Sony geschaffene Form auf   Diese Steckverbinder sind daher auch nur   u  erst schwer zu beschaffen  F  r die Best  ckung von  Platinen sind die Steckverbin
232. s muss nicht zwingend mit 0 beschrieben werden  Daher k  nnen  auf diese Weise die Servopulszyklen im Hintergrund gez  hlt werden  DeltasToGo wird also weiterhin       SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    104 7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP       in jedem Servopulszyklus um eins verringert und auch das Interrupt Flag wird am Ende der Sequenz  gesetzt  Der Servo Sequencer kann auf diese Weise auch als Timer verwendet werden     7 7 0 1 Register PhiStart    Dieses Register steht nur im Modus PhiSpeed  Bit 2     Mode in Register ModelrgqMask tr  gt den  Wert 1  zur Verf  gung    Das Register enth  lt eine vorzeichenlose 12 Bit Zahl  0   4095   Die Zahl im Register wird mit Phi   Start bezeichnet  PhiStart gibt einen Servostellwinkel im Bereich von 0 4095 an  Die Bedeutung die   ses Stellwinkels h  ngt von den Werten der Phi2PwmTable ab  Empfohlen wird die Skalierung nach   b Abschnitt   PhiStart dient nur als Ausgangswert f  r die Bewegung des Servos  Mittels der Werte von DeltaPhi   und NrOfDeltas kann von diesem Wert ausgehend eine zeitlich lineare Winkelbewegung programmiert                                  werden   Bit 7 6 5 4 3 2 1 0  Adr 1     unsigned 11 downto 8   Adr unsigned 7 downto 0           Tabelle 7 11  Register  PhiStart  Wertebereich  0 4095  Adr 0x8480 2ng  ng ist die Servonummer  0  bis 23   Der Initialisierungswert ist f  r alle Servos Mittelstellung      Les  und schreibbar                 Mittelstellung berechnen    7 7 0 2 Regist
233. s nach dem Einschalten der SandboxS 2 nacheinander mit einigem Zeitabstand aktiviert  um die  Akkuzellen und die Mechanik zu schonen  Geschieht dies nicht  ist es unter Umst  nden sogar m  g   lich  dass die Akkuspannung auf Grund der   berlastung direkt nach dem Einschalten zusammenbricht  und einen Unterspannungsreset des Mikrocontrollers und des FPGAs ausl  st  Der Roboter l  sst sich  dann nicht in Betrieb nehmen  da der beschriebene   berlastungseffekt unmittelbar nach Verlassen des  Resets sofort wieder auftritt  Erkennbar ist dieses Problem an der rhythmischen ruckartigen Bewegung  s  mtlicher Servos    Einige Servos  insbesondere sogenannte Digitalservos  behalten den zuletzt eingestellten Winkel  bei  statt den Motor abzuschalten  Solche Servos sind unter Umst  nden f  r den Einsatz mit der Sand   boxS 2 unbrauchbar  Allerdings kann man Digitalservos h  u    auch so programmieren  dass sie bei  fehlendem Impuls das im vorigen Absatz beschriebene Verhalten zeigen     Funktionsweise eines Servos   Die Auswertung des Servosteuerimpulses    Messung der Impulsdauer  und die Steuerung des Servo   motors werden von der Servoelektronik durchgef  hrt  Diese Baugruppe muss auch den momentanen  Ist Winkel des Hebelarms kennen  damit sie dar  ber entscheiden kann  in welche Richtung der Hebel  zum Erreichen des gew  nschten Winkels zu verdrehen ist    Der Ist Winkel des Hebelarms wird hierzu von einem Drehpotentiometer    einstellbarer Span   nungsteiler  in einen Spannungswert 
234. s unterscheidet sich f  r unterschiedliche Servohersteller  Bei Hitec ndet sich hier beispiels   weise eine gelbe Ader               Abbildung C 5  Das an Stelle der BATT Steckleiste angel  tete Servoanschlusskabel     Das f  r die Steuerung des Hexapods ben  tigte PPM Signal muss auf der wei  en Ader des Servo   kabels verf  gbar sein  Im jetzigen Zustand ist diese Ader  not connected   Um das PPM Signal an die  Ader anzuschlie  en muss dieses mittels eines Oszilloskops auf der Platine aufgesp  rt werden  siehe  hierzu Abschnitt 7 13   Im Falle des Acom Empf  ngers ist dies bereits geschehen  so dass eine Draht   br  cke laut Abb  C 6 das gew  nschte Ergebnis erzielen wird  Am Besten verwendet man hierf  r ein  St  ck Wire Wrap   oder Kupferlack Draht    Nun kann der Empf  nger wieder in sein Geh  use zur  ck  Zu beachten ist  dass der Servokabelste   cker wie links in Abb     zu sehen  von innen durch den Geh  usedeckel gef  hrt werden muss  Wird  ein Stecker verwendet der nicht durch die   ffnung passt  teilweise beim Stecksystem von Futaba der  Fall   dann muss das Servokabel bereits vor dem Einl  ten durch diese   ffnung gezogen werderden    Anschlie  end wird der Empf  nger wieder komplett zusammengebaut und verschraubt Abb  C 7   rechts         SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    234    RC EMPF  NGERUMBAU ZUM ANSCHLUSS AN DIE SANDBOXS 2          Abbildung C 6  Die Drahtbr  cke legt das PPM Signal am Ausgang der Empf  ngerdemodulationsstufe  auf die Si
235. sanleitung ist in Abbildung 2 2 dargestellt     Das AVR Studio beinhaltet eine komfortable graphische Benutzeroberfl  che sowie Assembler  De   bugger und Simulator  Um Anwendungen in C C   entwickeln zu k  nnen  ben  tigt es das zuvor in   stallierte WinAVR Paket  Dieses Paket wird in das AVR Studio integriert und erm  glicht eine komfor   table Programmentwicklung  Auf die Kommandozeilenprogramme des WinAVR Pakets muss daher  nicht zur  ckgegriffen werden        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    18 2 ERSTE SCHRITTE          Abbildung 2 2  Installation der Atmel AVR Entwicklungsumgebung        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    2 3 GER  TETREIBER INSTALLIEREN 19       2 3 Ger  tetreiber installieren    Da beide Ger  te  der JTAG ICE und die SandboxS 2    ber das USB Bussystem mit dem Computer  kommunizieren  ist f  r jedes ein Ger  tetreiber erforderlich  Der n  tige Treiber f  r das JTAG ICE  wurde bereits mit dem AVR Studio installiert  Der SandboxS 2 Treiber be ndet sich auf der CD im  Ordner Driver     2 3 1 JTAG ICE Mk II Treiber installieren    Das JTAG ICE Mk II ist ein Ger  t zur Fehlersuche  debugging  von Programmen  welche bereits auf  der Hardware  SandboxS 2  laufen  Es verwendet den Jungo USB Treiber des AVR Studios     Beim erstmaligen Anstecken des JTAGs an die USB Schnittstelle  ndet das Betriebssystem ein  neues Ger  t  Der          ICE muss nat  rlich bereits eingeschaltet sein  Um eine reibungslose Treiber   installa
236. schritte angegeben  aus der die n  chste Bewegungssequenz bestehen wird     Bit  Adr 1 unsigned 11 downto 8   Adr unsigned 7 downto 0                 Tabelle 7 15  Register  NrOfDeltas  Dieses Register hat nur im Mode PhiSpeed eine Bedeutung   Adr 0x8500 2ns  ng ist      Servonummer  0 bis 23   Initialisierungswert nach dem Einschalten ist  0x0000  Les  und schreibbar     7 7 0 6 Register DeltasToGo    Dieses Register enth  lt eine vorzeichenlose 12 Bit Zahl  Diese Zahl gibt an  wie viele Winkelschritte  in der momentan ablaufenden Bewegungssequenz noch   brig sind und wird zu diesem Zweck bei  jedem Winkelschritt automatisch vom Sequencer dekrementiert    Dieses Register kann dazu verwendet werden  zeitgerecht eine neue Bewegungssequenz zu initiie   ren  Hierzu kann beispielsweise gewartet werden  bis das Register mit dem Wert Null das Ende der       SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    106 7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP       Sequenz anzeigt  Es ist jedoch m  glich  schon unmittelbar nach dem Ablauf des ersten Winkelschrittes   DeltasToGo enth  lt einen Schritt weniger als NrOfDeltas  eine neue Sequenz zu starten  da die Werte  der neuen Sequenz ohnehin erst nach dem vollst  ndigen Ablauf der momentan in Arbeit be ndlichen  Sequenz vom Sequencer geladen werden    Wird auf das Register vom Mikrocontroller geschrieben  kommt es zu unde niertem Verhalten  Das  Register sollte daher ausschlie  lich gelesen werden        Adr 1     unsigned 11 downto 8 
237. sgeschwindigkeit erreichen     4 6 Einstellung der Fuses des AVR    Die Fuses fabrikfrischer Chips m  ssen f  r den Betrieb auf der SandboxS 2 laut Abb  4 5 gesetzt  werden  Die korrekte Einstellung der Fuses ist die Basis f  r die einwandfreie Funktion des AVRs auf  der SandboxS 2  Andere als die oben angegebenen Einstellungen sollten nur vorgenommen werden        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    58    4 MIKROCONTROLLER ATMEL AVR AT90USB1286 7       Progam Peer   Locutus   Advanced             Auto   Progam Funes   Locas   Advanced                     Progam Fines   Locus   Advanced             Aus      Orconrerted Mate Deen Loneecton salo to                    T Cat Eed                     2020  8  Tuna wa 250 CX    41 a  e        Zoe nmm       za         Abbildung 4 5  Screenshots der Fuse Einstellungen des AVR     9005   1286 7  Einige Einstellm  glich   keiten f  r die Taktgenerierung sind nicht dargestellt  diese sind s  mtlich nicht ausgew  hlt    kein H  k   chen      wenn die entsprechenden Teile des AVR Datenblatts vollst  ndig gelesen und verstanden wurden  Es ist A    beispielsweise durch Manipulation mancher der Fuses m  glich  den weiteren Zugriff vom Debugger  JTAG ICE komplett zu unterbinden  Anschlie  end lassen sich die Fuses nicht mehr ver  ndern und die  Platine ist nur noch durch Austausch des AVRs zu retten    Die Taktversorgung des FPGAs auf der SandboxS 2 erfolgt   ber den AVR Mikrocontroller  Damit  dieser seinen Takt auf dem ents
238. sie den Wert 4095 darf sie nicht mehr inkrementiert werden            lt     Kalibrieren Sie die Servos mit dem nun erstellten Programm gem     Abschnitt 7 6 1  Nummerie   ren Sie die Servomotoren und erstellen Sie eine Tabelle die jedem Servo 17 St  tzstellen zuord   net  Zus  tzlich soll auch die Standarddrehrichtung vermerkt werden  Reverse oder Normal  Eine  Vorlage f  r Aufkleber zur Servonummerierung ist im Captain Ahab   Bau  Mechanikhandbuch   zu nden        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    48       3 Energieversorgung    Die Energieversorgung der SandboxS 2 nimmt einen relativ gro  en Bereich der Platine in Anspruch    Servo  Sei vo4_ Servos   Servos Servo  Servos            Ss Servo11  Sas Coe GEI                  COE r        ree                 KR E      un Bh es  bu cx        NiMh or  D Nice only  7    Lee de    ST     ttd tentiae    an  au    5       KeyAvr0  ZK vg M KezAvr  B  EE          605    48    rpolungsschutz   53 V Regler             eres eee s RH AMO Let  F UE LE    5  Wr    ers OFF Cre ess 6  est 6066 066 658               Peneza Serv 921           20           19      Servo17 Servois San           14 Senol                 uan T gei                                  via Kri        di  i                                   FA g      INE D LE P X           qd                          2  d   1 4 E uw    EAO mh E             Abbildung 3 1  F  r die Energieversorgung verantwortliche Bereiche sind eingerahmt      Abb  3 1   Energiequelle s
239. ss sich die Daten seit dem  letzten Auslesen ge  ndert haben m  ssen     INTO Servogrundstellungsmodus wurde eingeschaltet   INTO Paniktaste wurde gedr  ckt     INTO CORDIC Ergebnisse liegen vor     All diese Ereignisse k  nnen einzeln zur der Interrupt Ausl  sung zugelassen werden  indem das  entsprechende Interrupt Mask Bit  IrgMask  gesetzt wird  Wert 1    Die Interrupt Mask Bits nden  sich in den in den Abschnitten 7 5 3 1  7 13 1 1 und 7 22 beschrieben    Welche Quelle den Interrupt ausgel  st hat  l  sst sich durch Lesen der Interrupt Flag Register fest   stellen  Die Interrupt Flag Register sind 8 Bit breit  so dass kein 16 Bit Zugriff laut Abschnitt 7 1 1  durchgef  hrt werden braucht  Stattdessen werden die Interrupt Flags immer in Portionen zu einem  Byte gelesen    Auslesen des jeweiligen Registers l  scht zugleich alle im Register gesetzten Flags  Die Daten wer   den sozusagen nicht nur betrachtet  sondern entnommen    Es m  ssen also s  mtliche Interrupt Requests  welche aus einem Interrupt Flag Register ausgelesen  wurden  nacheinander verarbeitet werden  Sollte zuf  llig gleichzeitig mit dem Auslesen eines der  Interrupt Flag Register ein neuer Interrupt eintreffen  so wird dieser im Register abgelegt und alle  zuvor bereits vorhandenen Interrupt Flags werden gel  scht    Der Interrupt Ausgang bleibt nach dem Aktivieren durch die Interrupt Quelle solange aktiv  bis alle  ihm zugeordneten Interrupt Flag Register  mit aktiviertem Interrupt Mask Bit  durch Lesen g
240. st  Sonst eine Zahl ungleich  Null    Anmerkung    e Bevor diese Funktion verwendet werden kann  muss uart init    aufgerufen werden     Beispiel    siehe Abschnitt 9 6 1    9 6 7 uart is tx full    char uart is tx full         SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 7 USB UART 167       Beschreibung    Pr  ft ob der Sendepuffer voll ist                       R  ckgabewert   R  ckgabewert Beschreibung   Data Gibt Null zur  ck wenn der Puffer nicht voll ist  Sonst eine Zahl ungleich  Null    Anmerkung    e Bevor diese Funktion verwendet werden kann  muss uart_init    aufgerufen werden     Beispiel    siehe Abschnitt 9 6 1    9 7 USB UART    Dieses Modul verwendet den integrierten USB Kern des Mikrocontrollers um eine virtuelle serielle  Schnittstelle zu simulieren  Hierf  r wird die    Communication Device Class  CDC     des USB Stan   dards verwendet  Um die Schnittstelle an einem Computer zu verwenden muss der Treiber vorher  installiert werden  Danach kann sie  wie eine    echte    serielle Schnittstelle  verwendet werden     Die   bertragung erfolgt bei USB mit Datenpaketen xer L  nge  von einem Endpunkt zum Host   und ist bereits mit Fehlererkennung und Flusskontrolle ausgestattet  Um die Datenbl  cke empfangen  und senden zu k  nnen ist ein Puffer notwendig  Dieser wird immer mit xer Gr    e empfangen oder  gesendet  auch wenn er nur zur H  lfte voll ist     Bei dieser Implementierung wird der Puffer jede Millisekunde  bei jedem    Start Of Frame  SOF    
241. t  Nach dem Starten des Programms  und dr  cken der Taste              0   sollte ein Licht von LEDO bis LED11 wandern  Ist es an LED11 angekommen  beginnt es wieder bei  LEDO    Die Verwendung des Terminal Programms wurde bereits in Abschnitt 2 4 4 beschrieben     2 5 6 Zusammenfassung    Da nun die grundlegende Verwendung des Robotics Chips gezeigt wurde  sollten die anderen Funk   tionen des Moduls ebenfalls betrachtet werden  Hierzu emp ehlt es sich den Abschnitt 9 8 genauer  anzusehen  Das Kapitel 7 ist ebenfalls sehr hilfreich  es beschreibt unter anderem die verschiedenen  Servo Modi    2 5 7 Aufgaben    Diese Aufgaben sollten erf  llt werden  bevor mit dem n  chsten Beispiel fortgefahren wird     a  Lassen Sie das Licht in entgegengesetzte Richtung zur  ck laufen  sobald es an LED11 ange   kommen ist     b  Das Licht soll  nach dr  cken einer Taste  nur einen Schritt laufen     2 6 Servokalibrierung mit Winkelzeiger    Dieses Beispiel besitzt bereits eine echte Anwendung  Es dient zum Kalibrieren der einzelnen Servo   motoren  Dazu wird jedem Servo eine eindeutige Nummer zugeordnet    ber diese k  nnen die Kali   brierungswerte danach identi ziert werden  Die Kalibrierung ist notwendig da sich der Winkel nicht  linear mit dem Eingangsimpuls   ndert     2 6 1 Projekt erstellen    Die Vorgehensweise ist dabei gleich wie in Abschnitt 2 4 1        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    42    2 ERSTE SCHRITTE       2 6 2 Programm schreiben    Nun kann das Pr
242. t  Versorgungsspan   nung der Servos ist jedoch die wesentlich h  here Akkuspannung  Nicht alle Servos auf dem Markt  k  nnen mit der Akkunennspannung von 6 V betrieben werden  F  nf frisch geladene Akkuzellen  wie  sie auf der SandboxS 2 verwendet werden  weisen in den ersten Betriebsminuten unter Umst  nden  eine Spannung knapp oberhalb von 7 V auf  Ob ein Servo dies verkraftet oder nicht  sollte also vor  dem Kauf bereits gepr  ft werden    Die Lage der Stiftleisten am Platinenrand birgt gewisse T  cken in der Handhabung  Greifen Sie  die Platine nie an diesen Stiftleisten  Es besteht ernsthafte Verletzungsgefahr durch die Stifte  Diese  dringen sehr leicht durch die Haut  Auf unbenutzte Stiftleisen kann ein Streifen Styropor  Depron oder    hnliches nichtleitendes Material als Abdeckung aufgesteckt werden     7 5 Servopulsgenerator    Aufgabe des Servopulsgenerators ist die Erzeugung genauer PWM Pulssignale zur Ansteuerung der  Servos  Der Servopulsgenerator ist in hohem Ma  e kon gurierbar  um das Erstellen der Software f  r  den AVR Mikrocontroller zu erleichtern  Die Erzeugung der Servopulssignale unterliegt dar  ber hin   aus sehr engen Echtzeitanforderungen  die von einer Softwarel  sung nur schwer mit der erw  nschten  Genauigkeit wahrgenommen werden k  nnen    Abbildung 7 8 bietet einen   berblick des Servopulsgenerators und seiner Parameter     7 5 1 Mode    Die Ansteuerung des Servopulsgenerators mit der gew  nschten Pulsl  nge erfolgt im Modus PwmDi   rect aus d
243. t EEPROM angeklickt  Nun  kann im gleichen Verfahren eine entsprechende Datei mit Daten f  r das EEPROM in den AVR geladen  werden     4 7 2 Software Update mittels Atmel AVR Studio und JTAG ICE Mk II    Der In Circuit Emulator JTAG ICE Mk II von Atmel kann neben der Emulation auch zur Program   mierung von Flash Speicher und EEPROM des AVR Mikrocontrollers verwendet werden        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    62    4 MIKROCONTROLLER ATMEL AVR AT90USB1286 7       Di Atmel Flip      x   Fie Buffer Device Settings Help    PS w  r A Et       FLASH Buffer Information                                                          Operations Flow   ATSOUSB1287    Signature Bytes Es      pz p2            Size 120        Range 0x0   0x359 Device Boot Ids po be  Checksum 0x 1DEE2  I c etie eicere   Bootloader ver   1 0 1        E Program HEX File  Trylrq hex Abbildung 4 9  Der Inhalt  2431 bytes der Programmdatei TryIrq     hex wurde in den Flash        AMEL   Speicher des Mikrocontrollers      geladen  Die gr  nen Punk     te links neben den Aktionen       Eu Jd s Erase  Program  Verify zei   IL     gen an  dass diese erfolgreich  verify PASS Jusson durchgef  hrt wurden     Hierzu wird im AVR Studio der Men  punkt Tools     Program AVR     Auto Connect gew  hlt  Das  Fenster des    AVR Programmer    aus Abbildung 4 10 erscheint     Bootloader und Applikation gemeinsam im Speicher   Im Dialogfenster    AVR Programmer     das vom AVR Studio aus aufgerufen werden kann 
244. t ct    Beschreibung    Ein  bzw  Ausschalten der beiden Message LEDs des AVR        Parameter   Bedeutung   Number Gibt den Index jener Leuchtdiode n  an  die ein  bzw  ausgeschal   tet werden soll en   Kann folgende Werte annehmen  51 2 MSG LED  1   5 2 MSG LED  2 oder 51 2 MSG  LED ALL   Status De niert ob die Leuchtdiode ein  oder ausgeschaltet werden soll  M  gliche Wer   te  5 2 MSG LED STATUS       512 MSG LED STATUS OFF                                        R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Werden ung  ltige Parameter   bergeben  so wird der aktuelle Status der Leuchtdioden nicht  ver  ndert     e Bevor diese Funktion verwendet werden kann  muss SL2_Init    aufgerufen werden        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    152 9 SOFTWARE FUNKTIONSBIBLIOTHEK       Beispiel    Einschalten von Leuchtdiode 1  die Leuchtdiode wird nicht wieder ausgeschaltet     int main                 function that has to b xecuted in every appli     cation to initialize the interface with the FPGA  SL2 Init         switch on AVR LED 1  SL2 AvrSetMsgLed  SL2 MSG LED 1  SL2 MSG LED STATUS  ON                       ensure that the program NEVER ends  as there is no    operating system          1    1             return 0     9 4 3 SL2_AvrGetKey    uint8_t SL2_AvrGetKey   in  uint8_t Number     Beschreibung      berpr  ft  ob die Taster beim AVR gedr  ckt sind oder nicht        Parameter   Bedeutung  Number Gibt den Index des Tasters an 
245. t das Vorzeichen des Stellwinkels gew  hlt  werden  Vielmehr wird der richtige Wert f  r die Drehrichtungsumkehr im Rahmen des Kalibrierver   fahrens  Abschnitt 7 6 1  ermittelt und bleibt dann f  r die gesamte Lebensdauer des betreffenden Ser   vos xiert  Drehungen entgegen der mathematisch positiven Richtung  also im Uhrzeigersinn  werden  durch negativer Winkelwerte repr  sentiert     7 5 3 1 Register ModelrqMask       Bit 7 6 5 4 3 2 1 0  Adr 1            Adr         ImSqe   Mode   Reverse   Active                                  Tabelle 7 6  Register  ModeIrqMask  Adr 0x8440 2ns  ng ist die Servonummer  0 bis 23   Der Initiali   sierungswert nach dem Einschalten ist 0x0000  Les  und schreibbar        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 5 SERVOPULSGENERATOR    95       Bit 3     IrqMsk Ist dieses Bit gesetzt  so l  st die Auswertung des zuvor vom Mikrocontroller ge   schriebenen Servosequenzauftrages  bestehend aus den Werten f  r PhiStart  DeltaPhi und NrOf   Deltas  einen Interrupt auf der Leitung          aus  Ein Interrupt wird nur ausgel  st  wenn sich  das Servo im Mode PhiSpeed be ndet     Bit 2     Mode Dieser Eintrag stellt den Modus f  r das Servo ein  Folgende Modi sind m  glich   0     PwmDirect Das Servo wird direkt durch die Eingabe der PWM Impulsl  nge gesteuert     1  PhiSpeed Das Servo wird durch die Eingabe eines Anfangswinkels  eines Increment    Decrementwinkels  um den sich der Winkel pro Zeitschritt ver  ndert und die Anzahl der 
246. t die UART        Parameter   Bedeutung  baudRate Gibt den Wert f  r das Baudrate Register an  Dieser Werte muss mit dem Makro  UART CALC BAUDRATE berechnet werden                    R  ckgabewert    Diese Funktion hat keinen R  ckgabewert        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 6 UART 163       Anmerkung    e Aufgrund des verwendeten 8MHz Systemtaktes k  nnen nur folgende g  ngige Baudraten feh   lerfrei generiert werden  siehe AT90USB1287 Datenblatt  Kapitel 18 10   2400  4800  9600   19200  38400     Beispiel    Initialisierung und Verwendung des UART     KR ELLI ES LET EAE PEEL AAAS PLP ISAT IS AA ELE EFFET     includes   KW RETE EE FERE PEE LLLI DEEP EE                                  SLIDE   include  lt avr interrupt h gt     include  uart h       never blocking putc  int nb putc char  c      if uart  is tx full     return  1     uart putc c    return 0            never blocking getc  int nb getc char xc      if uart is rx empty     return  1     return uart_getc c             do all the initialization stuff here  void Init void         initialize uart   uart_init  UART_CALC_BAUDRATE  38400            enable interrupts  sei              program entry point  int main  void        char          initialize system  Init          read character       uart  getc          SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    164 9 SOFTWARE FUNKTIONSBIBLIOTHEK         print character  uart putc oc        print string  uart puts  blaaah         never retu
247. t has to b xecuted in every appli     cation to initialize the interface with the FPGA  InitSandboxS2                initialize the USB port to send debug information    to the PC  TextInterfacelnit  38400        initialize the memory card     this has to be done here AND before the memory card    is used because otherwise there occur problems with    various cards at power on   do           Temp   mmc init       while   Temp    SUCCESSFUL           clear all LEDs again  SetLedClearAll          SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    212 9 SOFTWARE FUNKTIONSBIBLIOTHEK         wait until the key is released and pressed again  AvrWaitOnKey  KEY 1  KEY_NOT_PRESSED    AvrWaitOnKey  KEY 1  KEY PRESSED                                            initialize the memory card again       do     Temp   mmc init       while   Temp    SUCCESSFUL    printf   accessing  memory  card    n         save cluster OFFSET und size  fat_cluster_data_store         get cluster size and bytes per sector  ClusterSize   GetClusterSize     BytesPerSec   GetBytesPerSec               print some more data on the screen  printf   reading Cluster  size               ClusterSize    printf   reading bytes  per sector   u n   BytesPerSec      while  1           return 0     9 10 5 fat_search_file    uint8 t fat search file   inout  uint8 t   File Name   inout  uinti16 t   Cluster            out  uint32 t   Size                       out  uint8 t   Dir_Attrib   inout  uint8 t  Buffer              
248. te rot   ROT_NORMAL       initialize system  Init          set AVR status led and wait on key   SL2 AvrSetMsgLed SL2 MSG LED 0  SL2 MSG LED STATUS ON    SL2 AvrWaitOnKey SL2 KEY 0  SL2 KEY PRESSED     512 AvrWaitOnKey SL2 KEY 0  SL2 KEY NOT PRESSED                                                                           SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    2 6 SERVOKALIBRIERUNG MIT WINKELZEIGER 45            print welcome messag          fprintf  gStrmUSB   Servo  calibration  program  n      fprintf  gStrmUSB   Press AvrKeyO  for         value  increment  Nn      fprintf  gStrmUSB   Press  AvrKeyl for         value decrement  Nn      fprintf  gStrmUSB   Press  AvrKeyO0  and  AvrKeyl  together  to  change  servo  rotation  An       r      set servo mode to PWM direct mode   RC SetServoMode  SERVO TO USE RC SERVO MODE PWM DIRECT      set servo PWM pulse length   RC SetServoPwmDirect  SERVO TO USE pwm       set LED to signal active servo port   RC SetLedBrightness  SERVO TO USE Oxff                                                   for         switch  GetKeysState          increment PWM pulse length  case INCREMENT                 pwmt    fprintf  gStrmUSB   PWM    u n  pwm    break       decrement PWM pulse length  case DECREMENT                    pwm     fprintf  gStrmUSB   PWM    u n  pwm    break       switch servo rotation  case SELECT   if rot    ROT REVERSE                             fprintf  gStrmUSB   Rotation  normal n     RC SetServoRotation SERVO
249. test hit    char uart  usb test hit      Beschreibung    Pr  ft ob der Empfangspuffer leer ist  ob Daten gelesen werden k  nnen                      R  ckgabewert   R  ckgabewert   Beschreibung   Data Gibt Null zur  ck wenn der Puffer nicht leer ist  Sonst eine Zahl ungleich  Null    Anmerkung    e Bevor diese Funktion verwendet werden kann  muss uart  usb  init    aufgerufen werden     Beispiel    siehe Abschnitt 9 7 1    9 7 5 uart usb tx ready    char uart  usb tx ready      Beschreibung    Pr  ft ob der Sendepuffer voll ist  ob Daten geschrieben werden k  nnen        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 8 ROBOTICSCHIP 171                         R  ckgabewert   R  ckgabewert Beschreibung   Data Gibt Null zur  ck wenn der Puffer nicht voll ist  Sonst eine Zahl ungleich  Null    Anmerkung    e Bevor diese Funktion verwendet werden kann  muss uart_usb_init    aufgerufen werden     Beispiel    siehe Abschnitt 9 7 1    9 7 6 uart_usb_flush    void uart usb flush      Beschreibung    Sendet denn Puffer  gibt ihn zum Senden frei     R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Da diese Funktion jede Millisekunde aufgerufen wird  sollte man sie manuell nicht benutzen     e Bevor diese Funktion verwendet werden kann  muss uart usb  init    aufgerufen werden     Beispiel    siehe Abschnitt 9 7 1    9 8 RoboticsChip  9 8 1 RC Init    void RC Init      Beschreibung    Initialisiert die Verbindung mit dem Robotics Chip        SVN 408  
250. tics Chips sind 16 Bit breit  so dass f  r einen Zugriff  auf das komplette Register die oben angesprochene Reihenfolge einzuhalten ist  Soll lediglich auf die  unteren 8 Bit eines Registers zugegriffen werden oder sind ohnehin nur diese 8 Bit belegt  so kann der  Zugriff unmittelbar in einem AVR Schreib  oder  Lesezyklus geschehen     7 2 Interrupts    Der HSSE Robotics Chip kann dem Mikrocontroller das Eintreten verschiedener Ereignisse mittels  der External Interrupt Pins INTO und INT1 mitteilen     INTI Zuletzt durch den Mikrocontroller aufgegebener Servosequenzauftrag bestehend aus PhiStart   DeltaPhi und NrOfDeltas wird nun bearbeitet  Daher kann ein neuer Auftrag angenommen wer        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    84 7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP       den  Dieses Flag existiert einzeln f  r jedes Servo  Die Auftragsannahme geschieht intern in  der Reihenfolge der Servonummern  so dass es meist ausreicht  das Servo mit der h  chsten  Nummer zur Ausl  sung dieses Interrupts zu verwenden  Wenn alle Servos die gleiche Anzahl  an Delta Schritten vorgegeben wird  k  nnen so alle Servos im gleichen Arbeitstakt mit Bewe   gungssequenzen versorgt werden     INTO Neue Daten sind von der PS 2 Schnittstelle eingetroffen  Da diese Daten f  r die angeschlossene  Maus relativ zur zuletzt eingenommenen Position angegeben werden  darf dieses Ereignis nicht    bersehen werden     INTO Neue Daten vom RC Empf  nger liegen bereit  Dies bedeutet nicht  da
251. tion verwendet werden kann  m  ssen SL2_Init    und RC  Init    aufge   rufen werden        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 8 ROBOTICSCHIP    189       Beispiel  Die Pulswiederholungszeit wird auf ihren Initialwert gesetzt     int main           proxy function for whole initialization  Init          set the impulse time to its default values  RC_SetServoTuneFine  619    RC_SetServoTuneCoarse  619               while  1           return 0     9 8 22 RC_GetPs2Data    void RC GetPs2Data  in  RC Ps2Data xData     Beschreibung    Liest die aktuellen Posititionsdaten der PS 2 Maus aus dem RoboticsChip und speichert diese in der  der Funktion   bergebenen Datenstruktur ab        Parameter   Bedeutung  Data Beinhaltet die Posititionsdaten der PS 2 Maus  Die Datenstruktur      Ps2Data  ist in Abschnitt 9 11 auf Seite 216 erkl  rt                    R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    Bevor diese Funktion verwendet werden kann  m  ssen SL2_Init    und RC Init    aufgerufen  werden     Beispiel    Die Positionsdaten auf den Servo LEDs 0 und 1 ausgeben     int main        RC_Ps2Data MouseData       proxy function for whole initialization  Init           SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    190 9 SOFTWARE FUNKTIONSBIBLIOTHEK         clear all LEDs  RC SetLedClearA11       while 1      RC_GetPs2Data   amp MouseData        show DeltaX and DeltaY on servo LEDs 0 and 1    clicks are shown on the FPGA message LEDs  
252. tion zu gew  hrleisten  m  ssen alle Aktionen wie in Abbildung 2 3 ausgef  hrt werden        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    20    2 ERSTE SCHRITTE       Found New Hardware Wizard Found New Hardware Wizard              Welcome to Ihe Found New  Hardware Wizard    Weidows wil          for conent aru Eed softam by             on your computer on the        installation CD or on  the          Update Vei is  min your person     Bend      gras poto                      Thee waa helps you ratal software           JTAGICE ek      1    your hardware come with an installation CD    Can Windows connect to Windows Update to search for EP   floppy disk  insert    now    actua      Yes  tha time          Yes  now and every tme   connect 8 device    No  net tha tee    What do you wort the              to do   O kaal the          atomatraly Recommended   G  rat al trom a ist                location  Advanced     Check Next to cortes Check        to cortes     Found New Hardware Wizard Found New Hardware Wizard    Select the device driver you want to install for this hardware        Search f  r the beat diver e these              Select the manufacturer and model of your hardware device and then dck Next  f you  T have a      that contains the diver you want to install  cick Have Duk   Use the check boxes below to Im or expand the Gel aut search  which nades ocs  paths and removable meda The best dever found wil be                     7  Siow          hardware  Model  J
253. tiplied      by 4096  shift left by 12 bits       write the parameters into the RoboticsChip and start the calculation   RC SetCordicCalculationArguments  4096  12868  0  RC CORDIC MODE VECTORING    BC CORDIC COORD CIR     RC SetCordicCalculationStart                          wait until the calculation is done and read the result  RC CordicWaitOnResult      Result    RC GetCordicCalculationResult  z   0             Result will have the value 20687 here  which is equal to     atan pi   2 14     return 0     9 8 35 RC GetRoboticsChipVersion    uintl6 t RC GetRoboticsChipVersion       Beschreibung    Liest die Version der Kon guration des RoboticsChips     R  ckgabewert       R  ckgabewert   Beschreibung  Version Versionsnummer als Dezimalzahl                    Anmerkung    Bevor diese Funktion verwendet werden kann  m  ssen SL2 Init    und RC Init    aufgerufen  werden und der CORDIC Interrupt muss aktiviert sein     9 8 36 RC GetGlobalTimer    uinti16 t RC GetGlobalTimer       Beschreibung    Liest die Anzahl der seit dem Einschalten vergangenen 20 ms Takte des RoboticsChips     R  ckgabewert       R  ckgabewert   Beschreibung  Result Anzahl der 20 ms Takte des RoboticsChips                       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 8 ROBOTICSCHIP 201       Anmerkung    Bevor diese Funktion verwendet werden kann  m  ssen SL2_Init    und RC Init    aufgerufen  werden     Beispiel    Schaltet LED O nach 100s ein     int main  void        uintl6_t Timer   0   
254. tleitung des Mi   krocontrollers  Anders als bei den Peripherieeinheiten des AVRs werden die Register der Periphe   rieeinheiten  welche das FPGA zur Verf  gung stellt  bei einem Reset nicht ver  ndert  Nur ein Aus   Einschaltvorgang setzt diese Werte wieder auf den Initialisierungszustand zur  ck    Ausgenommen von dieser Regel sind lediglich die Interrupt Flag Register  Abschnitt 7 2   Diese  werden durch einen Reset gel  scht  also mit Bits des Wertes 0 gef  llt     6 2 1 Hardware Bootloader Aufruf des AVRs    Wird vor Loslassen der Reset Taste die Taste KeyFpgaO gedr  ckt und erst nach dem Loslassen  der Reset Taste wieder losgelassen  so ruft der HSSE Robotics Chip die Hardware Boot Funktion   HWB  des AVR Mikrocontrollers auf  Aktivieren der Leitung ALE mit dem Deaktivieren des Reset   Impulses   Soll diese Funktion schon beim Einschalten aufgerufen werden  so sind bereits vor dem  Einschalten beide Tasten zu dr  cken  Man l  sst dann zuerst die Reset Taste und dann die Taste KeyF   pga0 los    Der Mikrocontroller ruft als Reaktion statt des normalen Applikationsprogramms ein Bootloader   programm auf  Voraussetzung ist  dass die Fuse HWBE des AVRs entsprechend programmiert ist   Dies ist normalerweise jedoch nicht der Fall  siehe Abschnitt 4 6   Weitere Informationen gibt das  Datenblatt des AT90USB 1286 7  wenn man es nach dem Stichwort    HWB    durchsucht           Falls das FPGA mit einer eigenen Kon guration betrieben werden soll  ist zu beachten  dass die Mindest
255. tray Men   des Programms Sbx   Ne   vx RemMedia       c  Zun  chst muss das Laufwerk der SD Karte ausgew  hlt werden  Wird das entsprechende Lauf   werk nicht automatisch angezeigt  so kann dieses manuell   ber die Option    Show all drives     ausgew  hlt werden  Wenn diese Option aktiv ist  muss darauf geachtet werden  dass auch  wirklich das richtige Laufwerk gew  hlt wird  Abb  5 6 zeigt die Auswahl des Laufwerks bei  einer 128 MB Speicherkarte     d            Standardm  ssig erstellt das Programm zwei Partitionen  eine vom Typ SANDBOXX und eine  vom Typ HUGE  siehe Abb  5 7   Um die SD Karte mit der SandboxS 2 verwenden zu k  nnen   muss die Partition vom Typ SANDBOXX gel  scht werden und Partition 0 auf den Typ FAT  16  umgestellt werden  siehe Abb  5 8      e    x    Nach der zweimaligen Best  tigung mit    OK    wird das SD Karten Laufwerk ausgew  hlt  FAT  als Dateisystem eingestellt und die Partition formatiert  siehe Abb 5 9     Die Karte kann jetzt sowohl von der SandboxS 2 als auch vom PC gelesen  und beschrieben   werden        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    5 2 SD CARD 67          Select drive    Prepare SandboxX removable media  Select drive          Abbildung 5 6  Auswahl des Laufwerks       Edit partitions    Prepare SandboxX removable media  Edit partitions          Abbildung 5 7  Standard Partitionierung       SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    68    5 ON CHIP PERIPHERIE DES ATMEL AVR AT90USB1286 7          Edit p
256. ttributesTable    void RC SetGlobalServoAttributesTable  in  RC ServoAttributes     Beschreibung    Setzt die angegebenen Attribute f  r alle Servos        Parameter Bedeutung  ServoAttributes   Feld von      ServoAttributes Datens  tzen  F  r jedes Servo muss ein  Datensatz im Feld enthalten sein  siehe Abschnitt 9 11                        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 8 ROBOTICSCHIP    187       R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    e Bevor diese Funktion verwendet werden kann  m  ssen SL2_Init    und RC  Init    aufge   rufen werden     Beispiel    Kopiert die Tabelle mit den Werten der Servolinearisierung  dem Offsetwinkel und dem Reverse Bit  in den RoboticsChip und f  hrt die Mittelposition aller Servos an     int main          uint8 t i   0       proxy function for whole initialization  Init         copy the linearisation table into the RoboticsChip  RC SetGlobalServoAttributesTable P gTable        activate all servos  for  i20  i  RC NUMBER OF SERVOS    i                    RC SetServoPhiDirect  i  1609         while  1           return 0     9 8 18 RC_SetGlobalServoAttributesTable_P    Gleiche Funktion wie RC_SetGlobalServoAttributesTable     die Tabelle muss jedoch im  Programmspeicher abgelegt werden  Siehe dazu        avr libc    Manual Kapitel    Program Space Utilities        9 8 19 RC_SetGlobalServoAttributesTable_E    Gleiche Funktion wie RC_SetGlobalServoAttributesTable     die Tabelle muss jedoch
257. tungstasten am Gamepad gedr  ckt wird     int main        uintl6_t Data       proxy function for whole initialization  Init          clear all LEDs again  RC SetLedClearA11       while 1      Data   RC GetGamePadButtons         ignore all other buttons  Data   Data  gt  gt  4   Data   Data  amp  Ox000F     if  Data    OxOF        switch LED on  RC SetLedBrightness 0  255       else       clear LED       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 8 ROBOTICSCHIP 193       RC_SetLedBrightness  0  0            return 0     9 8 26 RC GetGamePadJoystickData  void RC GetGamePadJoystickData  in  uint8 t Position    out  RC GamePadJoystickData xData     Beschreibung    Liest die aktuelle Stellung der Joysticks am Sony Playstation 2 Gamepad aus dem RoboticsChip                 Parameter   Bedeutung   Position Gibt an  ob der linke oder rechte Joystick verwendet wird  Dieser Parameter kann  den Wert      GAME        LEFT JOY oder RC  GAME PAD RIGHT JOY an   nehmen    Data Beinhaltet die Stellung beider Joysticks  Der Aufbau dieser Struktur ist in Ab   schnitt 9 11 auf Seite 216 erkl  rt                 R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    Bevor diese Funktion verwendet werden kann  m  ssen SL2_Init    und RC Init    aufgerufen  werden     Beispiel  Die Bewegungen des linken Joysticks an den Servo LEDs 0 und 1 anzeigen     int main          RC_GamePadJoystickData Data       proxy function for whole initialization  Init          clear all 
258. u   bertragende Datei ausw  hlen  Dateierweiterung  hex   Sie be ndet sich im Pro   jektverzeichnis  im Unterordner default  Mit der Schaltfl  che    Program    wird die Datei in den  Mikrocontroller   bertragen  Abbildung 2 16   Sobald die   bertragung abgeschlossen wurde  wird das       SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    34 2 ERSTE SCHRITTE       Programm ausgef  hrt  Durch einen Reset  der mit der Reser  Taste ausgel  st werden kann  f  ngt das  Programm wieder vom Anfang an        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    2 4    HELLO WORLD    IN DER SANDBOX VERSION 35       2 4 4 2 Verwenden des Debuggers    Mit dem Debugger k  nnen Programme Schritt f  r Schritt  oder bis zu bestimmten Haltepunkten   Breakpoints  ausgef  hrt werden  Weiters ist es m  glich Werte von Variablen oder Speicherbereichen  w  hrend der Abarbeitung anzeigen zu lassen  Ein m  chtiges Werkzeug zur Fehlersuche  Jedoch gibt   es Einschr  nkung bei der Verwendung der USB Funktion  Wird der Prozessor durch den Debugger  angehalten  k  nnen die USB Nachrichten vom Computer nicht mehr durch den Mikrocontroller quit   tiert werden  Nach kurzer Zeit zeigt das Betriebssystem ein fehlerhaftes Ger  t an   Zus  tzlich k  nnen A  sich die Interrupt Service Routinen  ISR  st  rend auswirken     e Debugger starten       CR  n   n  9  ER  8       2       Abbildung 2 17  Starten des Debuggers     Im Menu wird der Punkt    Debug  gt Start Debugging    ausgew  hlt  Der Debugger versuc
259. uchbar  Entfernen Sie vor dem Montieren der Platine auf einem Roboter  unbedingt die Akkuzellen aus den Haltern  Gerade von den Schrauben und dem Schraubendreher  geht f  r eine mit Akkuzellen versehene Platine eine gro  e Gefahr aus    Da auch Halter f  r AAA Zellen erh  ltlich sind  k  nnen diese wahlweise best  ckt werden  Hierdurch  ergibt sich eine Gewichtsersparnis von ca  60 g  der jedoch ein erheblich ung  nstigerer Innenwider   stand der Zellen und deren geringere Kapazit  t gegen  berstehen  F  r Anwendungen mit vielen Servos  ergibt sich eine Gesamtstromaufnahme  die mit AAA Zellen beim derzeitigen Stand der Akkutechno   logie nicht befriedigt werden kann     3 4 Ein  Ausschalter    Die Versorgungsspannung der SandboxS 2 wird   ber einen Leistungs MOSFET der neuesten Gene   ration ein  und ausgeschaltet  Angesteuert wird dieser Transistor sowohl vom Hauptschalter als auch       Positiver  Akkuspannungspol    Hauptschalter                      gm  Stellung  ein     High  bei      0   lt  eingesteckter  SD Karte  Zr N Kanal      MOSFET             Abbildung 3 4  Ein  und Ausschalten der Spannungsversorgung mittels MOSFET     durch den SD CARD Slot  Sobald der Schalter in die Ein Position gebracht oder eine SD Karte ein        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    3 5 ENTLADESCHALTUNG 51       geschoben wird  ist die Versorgungsspannung eingeschaltet  Mit eingesteckter Karte wird daher der  Hauptschalter wirkungslos     3 5 Entladeschaltung    Nur weni
260. und der    e Anpassung der Bewegungsgeschwindigkeit der Servos  so dass alle Servos sich synchron und       SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    82    7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP       gleichf  rmig bewegen  wobei die Sollwinkel in einem festen Zeitraster erreicht werden  Zum  entsprechenden Zeitpunkt erfolgt die    e Ausgabe eines Interrupt Signals an den Mikrocontroller um die Bereitschaft f  r neue Zielwinkel  aller Servos mitzuteilen     die Mittelstellung der Servos kann zur Justage und als Servotest per Tastendruck angew  hlt  werden     e CORDIC Coprozessor zur Berechnung der inversen Kinematik und zur Koordinatentransfor   mation     Einlesen des PPM Signals aus der Demodulationsstufe eines Modellbauempf  ngers     Einlesen der Tasten  und Joystickstellungen von einem handels  blichen kabelgebundenen oder  drahtlosen Playstation 2 GamePad    Einlesen der Bewegungsdaten einer PS 2 Maus und  e feinstu ge Helligkeitssteuerung von 24 LEDs     Diese Funktionen wurden auf der Abstraktionsebene RTL  Register Transfer Level  in VHDL mo   delliert  wobei haupts  chlich das Entwurfsparadigma der hierarchischen FSMD verwendet wurde  Zur  Simulation wurde Mentor Graphics Modelsim eingesetzt  Synthesewerkzeug war Synplicity Synplify  in der Lattice Version  Als Backend Werkzeug kam die Toolsuite ispLever von Lattice in der Starter   Version zum Einsatz    Der Themenbereich Chip Design ist fester Bestandteil der Studieninhalte des Studiengangs HSSE  an
261. unktion     9 8 30 RC SetBuzzerPhaseLow    void RC SetBuzzerPhaseLow   in  uintl16 t PhaseLow        Beschreibung    Bestimmt die L  nge der Low Phase des Piezo Summer Signals  Rechtecksignal   Die Frequenz dieses  Signals kann wie folgt berechnet werden     1                                                125 ns       frect         Parameter   Bedeutung  PhaseLow   L  nge der Low Phase des Piezo Summer Signals                    R  ckgabewert    Diese Funktion hat keinen R  ckgabewert     Anmerkung    Bevor diese Funktion verwendet werden kann  m  ssen SL2_Init    und RC Init    aufgerufen  werden     Beispiel    Erzeugt ein Rechtecksignal mit einer Frequenz von 100 Hz f  r den Summer und schaltet diesen auf  maximale Lautst  rke     int main           proxy function for whole initialization  Init  j       clear all LEDs again  RC SetLedClearA11         generate a 100Hz oscillation    2 40000 125       0 015  RC_SetBuzzerPhaseHigh  40000    RC SetBuzzerPhaseLow  40000         SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 8 ROBOTICSCHIP    197         activate the buzzer  high volume  RC_SetBuzzerVolume  RC_BUZZER_VOL_HIGH           do nothing    while  1             return 0     9 8 31 RC_SetCordicCalculationArguments    uint8 t RC_SetCordicCalculationArguments      uintl6_t RegisterX  16 t RegisterY  16 t RegisterZ  uint8 t Mode     uint8 t CoordSys     uin              et EI           in    in    in  uin    in    in           Beschreibung                   Mit di
262. unktionen        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    110 7 ROBOTIK PERIPHERIE  HSSE ROBOTICS CHIP                Abbildung 7 18  Taster am FPGA     KeyFpga0 In Zusammenhang mit der Reset Taste kann die Hardware Boot Funktion des AVRs akti   viert werden  Mehr hierzu im Abschnitt 6 2 1     Au  erhalb des Reset deaktiviert ein Druck auf die Taste s  mtliche Servos  siehe Abschnitt 7 9      KeyFpgal Diese Taste erm  glicht den Wechsel in den Servogrundstellungsmodus und zur  ck  Eine  genaue Beschreibung ndet sich im Abschnitt 7 8     7 13 RC Empf  ngerdecoder    7 13 1 RC Empf  ngeranschluss    Der RC Empf  ngeranschluss  RC steht f  r Remote Control  also Fernsteuerung  dient zum Einlei   ten des PPM Signals  wie es nach der Demodulationsstufe eines handels  blichen RC Empf  ngers zur  Verf  gung steht  Auf diese Weise k  nnen bis zu 12 Kan  le empfangen werden  wobei die Kanalzahl  des Empf  ngers irrelevant ist  Empfangen werden auf diese Weise stets alle Kan  le des Senders  Dies  gilt auch  wenn der Empf  nger eine andere Kanalzahl als der Sender hat  AM Empf  nger sind jedoch  nicht mit FM Sendern mischbar  da die Demodulationsstufe des Empf  ngers nicht f  r die Demodu   lation von FM Signalen  FSK  geeignet ist  Angeschlossen wird der Empf  nger an die Buchse in  Bild 7 19                                   Abbildung 7 19  Anschluss f  r das Signal aus der Demodulationsstufe eines RC Empf  ngers     Bei den meisten Empf  ngern steht dieses Signal nicht 
263. usteins zur Folge  hat    Um die Stellung einer Taste auswerten zu k  nnen  ist der interne Pull Up Widerstand des entspre   chenden AVR Ports zu aktivieren  Solange die Taste nicht gedr  ckt und der Kontakt demnach ge  ffnet  ist  wird vom AVR ein 1 Bit eingelesen  Dr  ckt man die Taste  so liegt das Potential GND am Port  so  dass ein O Bit eingelesen wird     5 5 Status LED    Am Mikrocontroller stehen zwei LEDs  siehe Abb  5 13 zur Anzeige beliebiger Statusmeldungen zur       SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    5 6 ERWEITERUNGSSTECKER 71             Abbildung 5 13  LED am Mikrocontroller zur Anzeige von Statusmeldungen     Verf  gung  Die Anode jeder LED ist   ber einen Widerstand zur Strombegrenzung an einen Port des  AVRs angeschlossen  Der Port wird als Ausgang programmiert  Gibt man auf dem Port ein 1 Bit aus   so leuchtet die LED  w  hrend Sie bei Ausgabe einer 0 dunkel bleibt    Stellt man den Port als Eingang ein und aktiviert den zugeh  rigen Pull Up Widerstand  so kann  man hierdurch unter Umst  nden ein schwaches Glimmen der LED erzielen  Dessen Intensit  t h  ngt  stark vom Typ der best  ckten LED und sogar von Serienstreuungen in der LED Fertigung ab  Es kann  daher durchaus sein  dass die LED auf diese Weise   berhaupt nicht zum Leuchten gebracht werden  kann     5 6 Erweiterungsstecker    Auf dem AVR Erweiterungsstecker in Form einer 10 poligen Stiftwanne im 2 54 mm Raster  darge   stellt in Abb  5 14  ist sowohl die Batteriespannung als au
264. verwendet werden  wenn der entspre  A  chende Servo nicht belastet wird     auch nicht durch das Eigengewicht des Spinnenk  rpers     e Bevor diese Funktion verwendet werden kann  m  ssen SL2_Init    und RC  Init    aufge     rufen werden     Beispiel    Alle Servos in den PwmDirect Modus schalten     int main        uint8 t i   0       proxy function for whole initialization  Init          activate all servos  RC_SetGlobalServoMode  RC_SERVO_MODE_PWM_DIRECT                  move all servos to their middle position  for     0  i  RC NUMBER OF SERVOS    i                    RC_SetServoPwmDirect  1  2048            SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX                               176 9 SOFTWARE FUNKTIONSBIBLIOTHEK  while  1         return         9 8 6 RC_SetServoPwmDirect  inline void RC_SetServoPwmDirect   in  uint8_t ServoNumber    in  uint16 t Length   Beschreibung  Die Funktion erm  glicht die Bewegung eines Servos direkt   ber die Pulsl  nge zu steuern   Parameter Bedeutung  ServoNumber   Nummer des Servos  das bewegt werden soll  Die Nummerierung der Servos  ist in Abb  7 1 auf Seite 81 ersichtlich   Length Pulsl  nge  muss im Bereich 0     4095 liegen  R  ckgabewert  Diese Funktion hat keinen R  ckgabewert   Anmerkung  m  e Die Drehrichtung des Servos ist nicht bei allen Herstellern bzw  Servomodellen gleich     e Um      SetServoPwmDirect    verwenden zu k  nnen  muss der angegebene Servo zuvor       in den Modus RC  SI                MODI    E PWM DI
265. verwendet werden kann  muss SL2_Init    aufgerufen werden     Beispiel    Liest Daten aus der Datei    test c    im Root Directory der SD Karte  speichert diese im RAM zwischen  und   berschreibt die Datei auf der SD Karte mit eigenen Daten  Die auf die SD Karte geschriebe   nen Daten werden wieder mit den Ausgangsdaten verglichen und die Datei wird dann wiederherge   stellt     int main        uint8 t Data 512     his is a simple test  for  the SD card    uint8 t DataBackup 512    uint8 t DataReadback  512    uintl16 t ClusterVar   0   uint8 t DirAttrib   0   uint32 t Size   0   uint8 t ClusterSize Ore  uintl6_t BytesPerSec   0           SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    9 10 SD KARTE 215       uintl6_t Cnt   0   uint8 t Temp   0          function that has to b xecuted in every application to    initialize the interface with the FPGA  Init         initialize the USB port to send debug information to the PC  TextInterfaceInit  38400        initialize the memory card     this has to be done here AND before the memory card is    used because otherwise there occur problems with various    cards at power on   do              Temp   mmo init       while   Temp    SUCCESSFUL           clear all LEDs again  SetLedClearAll            wait until the key is released and pressed again  AvrWaitOnKey  KEY 1  KEY_NOT_PRESSED    AvrWaitOnKey  KEY 1  KEY PRESSED                                         initialize the memory card again       do     Temp   mmc_init        wh
266. vo  Der Sollwinkel wird durch eine Impulsdauer von  au  en vorgegeben  Der elektronische Regler misst den Ist Winkel des Hebelarms  wobei ein Potentiometer  als Sensor fungiert und stellt den Servoarm mittels eines Elektromotors mit nachgeschaltetem Geriebe so  ein  dass Soll  und Ist Winkel im Rahmen einer bestimmten Toleranz   bereinstimmen        SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    7 3 SERVOSTEUERUNG 91       In Summe ergeben sich Ungenauigkeiten  die zwar im Modellbaubereich meist tolerabel sind  aber  in der Robotik sehr st  rend wirken  In Abb  7 6 ist der Zusammenhang von Pulsl  nge und einge        74  200      190    2 180    170    160    150    140    130    120    110    100    90    80    70        50    40         30      20   g   10      Servohebelwinkel          Pulsl  nge  ms    l _         Abbildung 7 6  Gemessener Zusammenhang von Pulsl  nge    Soll Winkel  und resultierendem Servoar   meinstellwinkel bei einem idealen  blaue Gerade  und einem realen  rote gekr  mmte Linie  Servo  Im  Bild ist die Nichtlinearit  t des Zusammenhangs beim realen Servo zur Verdeutlichung etwas   bertrieben  dargestellt     stelltem Winkel  die sogenannte Servokennlinie  gemessen worden  Die Abweichung von der idealen  Kennlinie  blau  ist deutlich sichtbar    Das Bein eines Laufroboters etwa wird in seinen Gelenken so abgewinkelt  dass der Fu  punkt eine  bestimmte Raumkoordinate  x      z  erreicht  Die beschriebene Ungenauigkeit wirkt sich unmittelbar  auf 
267. voCurrentPwm   verwenden zu k  nnen  muss der angegebene Servo zu   vor in den Modus RC  SERVO  MODE PWM DIRECT geschalten werden           e Wenn RC GetServoCurrentPwm   direkt nach RC Set ServoPwmDirect    aufgeru   fen wird  so wird nicht der soeben geschriebene Wert zur  ckgegeben  sondern noch der    alte     Wert  da der RoboticsChip nur alle 20 ms die Daten aus den internen Registern    abholt        e Bevor diese Funktion verwendet werden kann  m  ssen 51 2 Init    und RC  Init    aufge   rufen werden   Beispiel    Schreiben einer PWM Pulsl  nge  diese wieder lesen und mit dem geschriebenen Wert verglei   chen        SVN 408  PFAFF  SEPTEMBER 20  2007 SBXS2MANUAL TEX    178    9 SOFTWARE FUNKTIONSBIBLIOTHEK       int main            uintl6_t Data      0       proxy function for whole initialization    Init          elear all LEDs  RC_SetLedClearAll       RC_SetServoMode  0  RC SERVO MODE PWM DIRECT    RC SetServoPwmDirect 0  1609        Delay is n                ded to ensure that the command         has been executed by the RoboticsChip    delay ms  100      Data   RC GetServoCurrentPwm 0        signal that everything is ok    if  Data          1609     RC_SetLedBrightness  0  255           while  1           return 0     9 8 8 RC_SetServoPhiSpeed    inline void RC SetServoPhiSpeed     Beschreibung    uint8 t ServoNumber    uintl6 t InitialAngle   int16 t DeltaPhi           16 t NumberOfDeltas         in    in    in    in        Erm  glicht die Bewegung eines Servos 
268. von der SD Karte gelesen und geschrieben werden  z B   um Positionsdaten f  r Servos einfach zu verwalten     Die einzelnen Schnittstellen und das jeweilige Verhalten werden im Folgenden erl  utert        SBXS2MANUAL TEX    SVN 408  PFAFF  SEPTEMBER 20  2007    9 1   BERSICHT DER SCHNITTSTELLEN    147       Vorab eine   bersicht   ber die Methoden bzw  Funktionen der einzelnen Schnittstellen     Modul     Funktionalit  t     Methoden     Funktionalit  t     Methoden     Funktionalit  t     Methoden     Funktionalit  t     Methoden     Modul     Funktionalit  t     Methoden     Modul     Funktionalit  t     Methoden     Modul     Funktionalit  t     Methoden     SandboxS2_lib    Initialisierung  SL2 Init    Tasten und Leuchtdioden des AVR  SL2 AvrSetMsgLed   SL2 AvrGetKey   SL2 AvrWaitOnKey    Lesen und Schreiben zus  tzlicher Pins  SL2_ExtAvrSetPinMode  SL2_ExtAvrGetPinValue  SL2_ExtAvrSetPin Value    Strom  und Spannungsmessung  SL2_GetCurrent  SL2_GetCurrentLowAmpli cation  SL2_GetCurrentHighAmpli cation  SL2_GetBattery Voltage  SL2_ExtAvrGetAdc Value    uart    UART Kommunikation  uart_init  uart_init_double_speed  uart_putc   uart_puts   uart_getc  uart_is_rx_empty  uart is tx full    uart usb lib    Virtuelle serielle Schnittstelle  vervendet USB  uart usb init   uart usb putchar   uart usb getchar   uart usb test hit   uart usb tx ready   uart usb flush    RoboticsChip    Initialisierung  RC Init       SVN 408  PFAFF  SEPTEMBER 20  2007    SBXS2MANUAL TEX    148    9 SO
269. while SL2 AvrGetKey SL2 KEY 0     SL2_AvrGetKey  SL2_KEY_1       delay loop 1 0xff    return SELECT      else if SL2 AvrGetKey SL2 KEY 0       for  i 0 i lt 0xfff  i                                     SBXS2MANUAL TEX SVN 408  PFAFF  SEPTEMBER 20  2007    8 3 HEXAPOD KALIBRIERUNG    141       _delay_loop_1 0xff    if  SL2_AvrGetKey  SL2_KEY_0     break            return INCREMENT      else if  SL2_AvrGetKey  SL2_KEY_1         for  i 0 i lt 0xfff  i                            delay  loop 1 0xff    if  SL2 AvrGetKey SL2 KEY 1    break           return DECREMENT                    return NO            LH  K  M      program entry point  int main  void          uintli6 t angle   1609   uint8 t servo   0       Initialize system  Init          copy the linearisation table into the RoboticsChip  RC SetGlobalServoAttributesTable P gTable        wait on key            SL2 MSG LED STATUS                                 512 AvrSetMsgLed  512 MSG LED 0  SL2 AvrWaitOnKey  512 KEY 0  SL2 KEY PRESSED    SL2 AvrWaitOnKey  512 KEY 0  SL2 K                   EY NOT PRESSED                 print welcome messag          fprintf  gStrmUSB   Hexapod calibration  program  n       fprintf  gStrmUSB   Press  AvrKeyO  for  angle  increment   hold  key       increase  speed     Nn       fprintf  gStrmUSB   Press  AvrKeyl  for  angle  decrement   hold  key  to  increase speed                  fprintf  gStrmUSB   Press AvrKeyO and  AvrKeyl together to_select_next_servo  n         set servo mode       RC_S
270. zu ist der Wert 0 einzustellen  was auch der Einstellung nach dem  Einschalten entspricht  Einige Fabrikate verwenden jedoch ein invertiertes Puls Pausen Signal   In diesem Fall muss InvPpm auf den Wert 1 eingestellt werden     Bits 3 bis 0     NrOfChannels Diese vier Bit breite vorzeichenlose Bin  rzahl gibt die Anzahl der  Kan  le an  welche der verwendete Sender hat  Die Einstellung nach dem Einschalten ist 0x2    Q      7 13 1 2 Registerblock RcRxChannel 1  bis RcRxChannel 12     Dieser Registerblock gibt die vom Fernsteuerempf  nger empfangenen Pulsl  ngen f  r die Senderkan     le 1 bis 12 jeweils mit einer 12 Bit breiten vorzeichenlosen Zahl an  Die Kanalzahl des Senders muss  zuvor im Register RcRxCtrl korrekt eingestellt worden sein  Das Format  in dem die Dauer der emp   fangenen Pulse angegeben wird  ist das gleiche  das auch beim Register PwmLen  Abschnitt 7 5 4 1   eingesetzt wird    Das Eintreffen eines vollst  ndigen Satzes neuer Werte  also Werte f  r alle Kan  le  wird mittels des  Interrupt Flags IFRc im Interrupt Flag Register IrqFlagsOthers  Abschnitt 7 2 1 4 angezeigt  Ob die  neuen Werte sich von den vorigen unterscheiden ist dabei nicht relevant  Dieses Interupt Flag l  st  einen Interrupt auf Leitung INTO aus  wenn das Interrupt Mask Bit ImRc im Register IrgMaskRcR   xCtrl  Abschnitt 7 13 1 1  gesetzt ist  Wert 1       Bit  Adr 1 unsigned 11 downto 8   Adr unsigned 7 downto 0              Tabelle 7 21  Register  RcRxChannel 1  bis RcRxChannel 12   Wert
    
Download Pdf Manuals
 
 
    
Related Search
    
Related Contents
Samsung BD-C5900 Наръчник за потребителя  AV2009/01 - Bitron Video  Stoves WD16v  Epson PowerLite 520  NEOSTAR ECO Anwenderhandbuch  HOUZER G-100U MIDNITE Instructions / Assembly  Keurig Special Edition/Signature Brewing System User Guide  第85回 電気用品調査委員会 議事要録  Les insertions lyriques dans les romans en vers du      Copyright © All rights reserved. 
   Failed to retrieve file