Routinen zur Kommunikation mit dem NDS3 Modul. Da die Kommunikation über die I²C Schnittstelle abgewickelt wird, muss vor der Benutzung der Funktionen i2c_init() aufgerufen werden.  
Mehr ...
#include <stdint.h>
gehe zum Quellcode dieser Datei
Routinen zur Kommunikation mit dem NDS3 Modul. Da die Kommunikation über die I²C Schnittstelle abgewickelt wird, muss vor der Benutzung der Funktionen i2c_init() aufgerufen werden. 
- Autor
 - Nils Springob (nils@.nosp@m.nica.nosp@m.i-sys.nosp@m.tems.nosp@m..de) 
 
- Datum
 - 2009-07-02 
 
 
Akualisiere Data Direction Register (DDR) des NDS3 Die globale Variable nds3_ddr wird zum NDS3 übertragen 
 
 
      
        
          | void nds3_distcalib_commit  | 
          ( | 
           | ) | 
           | 
        
      
 
Übertrage Distanz-Kalibrierwerte aus den Variablen zum NDS3 
 
 
      
        
          | void nds3_distcalib_update  | 
          ( | 
           | ) | 
           | 
        
      
 
Übertrage Distanz-Kalibrierwerte vom NDS3 in die Variablen. Die Werte werden im EEPROM gespeichert. Die Formel lautet: d = alpha/(v-v0) - d d: Distanz (*cm) v: Spannung (*5.0/1024 V) 
 
 
      
        
          | uint16_t nds3_get_analog  | 
          ( | 
          uint8_t  | 
          idx | ) | 
           | 
        
      
 
Liefert den Wert des Analog-Eingangs Idx zurück idx: 0-3 Spannung am Portpin A0-A3 (DDR muss auf Eingang geschaltet sein!) 
 
 
      
        
          | uint8_t nds3_get_busy  | 
          ( | 
           | ) | 
           | 
        
      
 
Prüfen, ob das NDS3 Modul ein (Bewegungs-)Kommando bearbeitet. 
- Rückgabe
 - 0: untätig 
 
 
 
      
        
          | uint8_t nds3_get_dist  | 
          ( | 
           | ) | 
           | 
        
      
 
Liefert die aktuell gemessene Distanz 
- Rückgabe
 - Distanz in cm 
 
 
 
Liefert die aktuelle Position 
- Rückgabe
 - Richtung in Grad [0 ... 180] 
 
 
 
      
        
          | void nds3_measure  | 
          ( | 
          uint8_t  | 
          dir,  | 
        
        
           | 
           | 
          int8_t  | 
          step  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Startet einen Scan. Der Sensor wird von der aktuellen Richtung mit der Schritweite Step zur angegebenen Richtung gedreht. Die Messung ist abgeschlossen, sobald nds3_get_busy() 0 zurück gibt. 
- Parameter
 - 
  
    | dir | Richtung in Grad [0 ... 180]  | 
    | step | Schrittweite in Grad  | 
  
   
 
 
      
        
          | void nds3_move  | 
          ( | 
          uint8_t  | 
          dir | ) | 
           | 
        
      
 
Startet eine Drehung in die angegeben Richtung. Die Drehung ist abgeschlossen, sobald nds3_get_busy() 0 zurück gibt. 
- Parameter
 - 
  
    | dir | Richtung in Grad [0 ... 180]  | 
  
   
 
 
      
        
          | void nds3_move_servo  | 
          ( | 
          uint16_t  | 
          usecs | ) | 
           | 
        
      
 
Rohpulsweite des Servos in Microsekunden setzen 
 
 
Aktualisiere lokales Port Input Register (PIN) Die globale Variable nds3_pin wird vom NDS3 aktualisiert 
 
 
      
        
          | void nds3_port_commit  | 
          ( | 
           | ) | 
           | 
        
      
 
Akualisiere Ausgabe Register (PORT) des NDS3 Die globale Variable nds3_port wird zum NDS3 übertragen 
 
 
      
        
          | void nds3_read  | 
          ( | 
          uint8_t  | 
          dir,  | 
        
        
           | 
           | 
          uint8_t  | 
          step  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
Liefert die Ergebnisse des letzten Scans zurück. Dir ist die Startrichtung, step die Schrittweite. Beispiel: 
 - Parameter
 - 
  
    | dir | Richtung in Grad [-90 ... 90]  | 
    | step | Schrittweite in Grad  | 
  
   
 
 
Setzt das aktuelle Kommando zurück, nds3_get_busy() wird anschliessend 0 zurück geben. 
 
 
      
        
          | void nds3_servocalib_commit  | 
          ( | 
           | ) | 
           | 
        
      
 
Übertrage Servo-Kalibrierwerte aus den Variablen zum NDS3 
 
 
      
        
          | void nds3_servocalib_update  | 
          ( | 
           | ) | 
           | 
        
      
 
Übertrage Servo-Kalibrierwerte vom NDS3 in die Variablen 
 
 
Data Direction Register (DDR) Wenn das zugehörige Bit den Wert 0 hat, kann der Pin als Eingang verwendet werden, hat er den Wert 1 ist es ein Ausgang Bits (7-0): –B2–B0–A3A2A1A0 
 
 
      
        
          | uint16_t nds3_distcalib_alpha | 
        
      
 
 
      
        
          | uint16_t nds3_distcalib_d0 | 
        
      
 
Voltage - Offset für Distanzmessung (* 1 cm) 
 
 
      
        
          | uint16_t nds3_distcalib_v0 | 
        
      
 
Voltage - Offset für Distanzmessung (* 5.0/1024 V) 
 
 
Port Input Register (PIN) Eingangs-Logikpegel am Portpin: 0 =^ 0V / 1 =^ 5V Bits (7-0): –B2–B0–A3A2A1A0 
 
 
Ausgabe Register (PORT) Wert für die Ausgabe 0 =^ 0V / 1 =^ 5V Bits (7-0): –B2–B0–A3A2A1A0 
 
 
      
        
          | uint16_t nds3_servocalib_hi | 
        
      
 
Maximale Pulsweite des Servos in Microsekunden 
 
 
      
        
          | uint16_t nds3_servocalib_lo | 
        
      
 
Minimale Pulsweite des Servos in Microsekunden 
 
 
      
        
          | uint16_t nds3_servocalib_mid | 
        
      
 
Mittlere Pulsweite des Servos in Microsekunden