int geht von -32768 bis 32767... falls ich das richtig kapiert habe...

Die asuro.h hab ich asuro-wiki... also nicht mehr die originale:
Code:
/*!
 * \file asuro.h
 * \brief Definitionen und Funktionen der ASURO Bibliothek
 *
 * $Revision: 2.60 $
 * $Date: 27. September 2005 $
 * $Author: Jan Grewe, Robotrixer, Waste, Stochri, Andun, m.a.r.v.i.n $
 *
 * 
 */

/****************************************************************************
*
* File Name:   asuro.c
*
*
* Ver.     Date         Author           Comments
* -------  ----------   --------------   ------------------------------
* 1.00	   14.08.2003   Jan Grewe		 build
* 2.00     14.10.2003   Jan Grewe        RIGHT_VEL -> MotorSpeed(unsigned char left_speed, unsigned char right_speed);
*                                        LeftRwd(),LeftFwd(),RightRwd(), LEFT_VEL, 
*                                        RigthFwd() -> MotorDir(unsigned char left_dir, unsigned char right_dir);
*                                        GREEN_ON,GREEN_OFF,RED_ON,RED_OFF -> StatusLED(unsigned char color);
*                                        LED_RED_ON, LED_RED_OFF -> FrontLED(unsigned char color);
*                                        Blink(unsigned char left, unsigned char right) -> 
*                                         BackLED(unsigned char left, unsigned char right);
*                                        Alles in Funktionen gefasst => leichter verständlich ?!?!
* 2.10     17.10.2003   Jan Grewe        new Timer funktion void Sleep(unsigned char time36kHz)  
*
*
* Copyright (c) 2003 DLR Robotics & Mechatronics
*****************************************************************************/
/****************************************************************************
*
* File Name:   asuro.c
* Project  :   asuro library "Robotrixer Buxtehude"
*
* Description: This file contains additional functions:
*
* signal (SIG_ADC)                 interrupt/signal routine for encoder-counter
* signal (SIG_INTERRUPT1)          signal for switches
* Encoder_Init()                   initializing encoder-counter
* Encoder_Start()                  start autoencoding
* Encoder_Stop()                   stop autoencoding
* Encoder_Set(int,int)             set encodervalue
* Msleep(int delay)                wait for delay in milliseconds
* Gettime()                        get systemtime in milliseconds
* PrintInt(int)
*
* modifications in Sleep, SIG_OUTPUT_COMPARE2, PollSwitch, LineData
*
* Ver.     Date         Author           Comments
* -------  ----------   --------------   ------------------------------
* beta1	   31.03.2005   Robotrixer	 asuro library
* -------  ----------   --------------   ------------------------------
* the encoder source is based on RechteckDemo.c ver 2.0 by Jan Grewe 22.10.2003 
* Copyright (c) 2003 DLR Robotics & Mechatronics

*****************************************************************************/
/****************************************************************************
*
* File Name:   asuro.c
* Project  :   asuro library modified for IR collision detector
*
* Description: modifications made in following functions:
*
* SIGNAL (SIG_OUTPUT_COMPARE2)	->	SIGNAL (SIG_OVERFLOW2)
* Gettime()				counts now 36kHz
* Init()				timer2 modified for adjustable duty cycle
* Batterie()				bug fixed
* Sleep()				counts now 36kHz
* Msleep()				counts now 36kHz
*
* Ver.     Date         Author           Comments
* -------  ----------   --------------   ------------------------------
* beta2	   11.06.2005   Waste   	 asuro library
* -------  ----------   --------------   ------------------------------
*****************************************************************************/
/****************************************************************************
*
* File Name:   asuro.c
* Project  :   asuro library 
*
* Description: This file contains additional functions:
*
* motor control functions 29.7.2005 stochri
* void Go(int distance)
* void Turn(int degree)
*
* unsigned char Wheelspeed[2]		measured Wheelspeed by interupt
*
* Ver.     Date         Author           Comments
* -------  ----------   --------------   ------------------------------------------
* sto1     29.07.2005   stochri		 asuro library with motor control functions
* -------  ----------   --------------   ------------------------------------------
*****************************************************************************/
/****************************************************************************
*
* File Name:   asuro.c
* Project  :   asuro library "Robotrixer Buxtehude"
*
* Description: modifications made in following function:
*
* Go (int distance, int speed)           Added Speed and Odometrie
* Turn (int degree, int speed)           Added Speed and Odometrie
*
* modifications in Sleep, SIG_OUTPUT_COMPARE2, PollSwitch, LineData
*
* Ver.     Date         Author           Comments
* -------  ----------   --------------   ------------------------------
* And1	   31.07.2005   Andun		 See above
* -------  ----------   --------------   ------------------------------
* 
*****************************************************************************/
/****************************************************************************
*
* File Name:   asuro.c
* Project  :   asuro library 
*
* Description: modifications made in following functions:
*
* void PrintInt(int wert)
*
* unsigned char Wheelspeed[2]	 	 removed
*
* Ver.     Date         Author           Comments
* -------  ----------   --------------   ------------------------------------------
* 2.60     28.09.2005   m.a.r.v.i.n      doxygen comments 
* -------  ----------   --------------   ------------------------------------------
*****************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   any later version.                                                    *
 ***************************************************************************/

#ifndef ASURO_H
#define ASURO_H

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <stdlib.h>

#define  FALSE	0
#define  TRUE	1

#define  OFF    0
#define  ON     1

#define GREEN	1
#define RED	2
#define YELLOW  3

/* neue Funktionen und Variablen*/
#define LEFT    0
#define RIGHT   1

/* --- Globale Variablen -----------------------------------*/
/*! 
 * Tastsensor Wert bei Interrupt Betrieb. 0=keine Taste, 1= Taste gedrueckt
 */
int switched;
/*! 
 * Odometriesensor Werte bei Interrupt Betrieb. encoder[0] links, encoder[1] = rechts. (Wertebereich 0..1023)
 */
int encoder[2]; 

// Wheelspeed variables 29.7.2005 stochri
// removed not referenced 29.09.2005 m.a.r.v.i.n
//unsigned char Wheelspeed[2];

// motor control functions 29.7.2005 stochri
// motor control functions 31.7.2005 edited by Andun
/*! 
 * Faehrt eine bestimmte Strecke mit einer bestimmten Geschwindigkeit.
 * Benutzt die Odometrie Sensoren im Interrupt Betrieb.
 * \param distance Distanz (- rueckwaerts, + = vorwaerts)
 * \param speed Geschwindigkeit (Wertebereich 0...255)
 */
void Go(int distance, int speed);

/*! 
 * Dreht um einen bestimmten Winkel mit einer bestimmten Geschwindigkeit.
 * Benutzt die Odometrie Sensoren im Interrupt Betrieb.
 * \param degree Winkel (- rechts, + links)
 * \param speed Geschwindigkeit (Wertebereich 0...255)
 */
void Turn(int degree, int speed);

/*! 
 * gibt die aktuelle Zeit zurueck
 * \return aktuelle Zeit in Millisekunden
 */
unsigned long Gettime(void);

/*! 
 * Wartefunktion. Delay
 * \param dauer Wartezeit in Millisekunden. \see Sleep
 * 
 * Beispiel: Warte 500ms
 * \verbatim
	Msleep(500);
   \endverbatim
 */
/* 
*/
void Msleep(int dauer);

/*! 
 * Initialisiert und startet die Odometriesensor Messung im Interrupt Betrieb. 
 * \see encoder  
 */
void Encoder_Init(void);

/*! 
 * Odometriesensoren Werte zuruecksetzen für Interrupt Betrieb. 
 * \param setl Wert für links
 * \param setr Wert für rechts
 * \see encoder  
 */
void Encoder_Set(int setl,int setr);

/*! 
 * Odometriesensoren Messung Interrupt Betrieb anhalten
 */
void Encoder_Stop(void);

/*! 
 * Odometriesensoren Messung Interrupt Betrieb starten
 */
void Encoder_Start(void);

/*! 
 * Ausgabe eines Integer Wertes als String ueber die serielle Schnittstelle.  
 */
void PrintInt(int wert);

/*! 
 * gibt den Wert der Batteriespannung zurueck
 * \return A/D Wandler Wert (Wertebereich 0..1023)
 */
int  Batterie(void);


/*! Initialisiert die Hardware (Ports, A/D Wandler, Serielle Schnittstelle, PWM) 
 *  Die Init Funktion, muss von jeden Programm beim Start aufgerufen werden */
void Init(void);

/*! 
 * Setzen der Status LED.\n
 * \param color Farbe (OFF,GREEN,RED,YELLOW) 
 * 
 * Beispiel: setze Status LED GREEN
   \verbatim
	StatusLED(GREEN); 
   \endverbatim
 */
inline void StatusLED(unsigned char color);

/*! 
 * Setzen der Front LED\n
 * \param status Zustand (OFF,ON)
 * 
 * Beispiel: Front LED On
   \verbatim
	FrontLED(ON); 
   \endverbatim
 */
inline void FrontLED(unsigned char status);

/*! 
 * Setzen der Back LEDs\n 
 * \param left linke Back LED (OFF,ON)
 * \param right rechte Back LED (OFF,ON)
 * 
 *  Beispiel: Rechte LED an, linke LED aus
 *  \verbatim
	BackLED(OFF,ON); 
   \endverbatim
 */
void BackLED(unsigned char left, unsigned char right);

/*! 
 * Setze Motor Richtung\n
 * \param left_dir Richtung linker Motor (FWD,RWD,BREAK,FREE)
 * \param right_dir Richtung rechter Motor (FWD,RWD,BREAK,FREE)
 * 
 * Beispiel: setze Richtung fuer rechten Motor auf Rueckwaerts
   \verbatim
	MotorDir(BREAK,RWD); 
   \endverbatim
 */
inline void MotorDir(unsigned char left_dir, unsigned char right_dir);

/*! 
 * Setze Motor Geschwindigkeit. 0= Stop, 255=Vollgas\n
 * \param left_speed Geschwindigkeit linker Motor (Wertebereich 0..255)
 * \param right_speed Geschwindigkeit rechter Motor (Wertebereich 0..255)
 * 
 * Beispiel:  setzt Geschwindigkeit fuer linken Motor auf 150
   \verbatim
	MotorSpeed(150,0); 
   \endverbatim
 */
inline void MotorSpeed(unsigned char left_speed, unsigned char right_speed);

/*! 
 * Ausgabe von Zeichen ueber die serielle Schnittstelle 
 * \param data Zeiger auf die auszugebenden Daten
 * \param length Anzahl der Zeichen
 */
void SerWrite(unsigned char *data,unsigned char length);
/*! 
 * Einlesen von Zeichen ueber die serielle Schnittstelle 
 * \param data Zeiger auf die einzulesenden Daten
 * \param length Anzahl der Zeichen
 * \param timeout 0 = blockierender Mode
 */
void SerRead(unsigned char *data, unsigned char length, unsigned int timeout);

/*! 
 * Linienfolger Daten auslesen. Photosensoren links und rechts
 * \param data Zeiger auf die zu lesenden Daten data[0] links, data[1] rechts (Wertebereich 0..1023)
 */
void LineData(unsigned int *data);

/*! 
 * Odometrie Daten auslesen Polling Betrieb. Photosensoren links und rechts
 * \param data Zeiger auf die zu lesenden Daten data[0] links, data[1] rechts (Wertebereich 0..1023)
 */
void OdometrieData(unsigned int *data);

/*! 
 * Tastsensor Abfrage Polling Betrieb
 * \return Tastenwert bitorientiert, K1 = Bit5, K2 = Bit4, K3 = Bit3, K4 = Bit2, K5 = Bit1, K6 = Bit0
 */
unsigned char PollSwitch (void);

/*! 
 * Tastsensor Abfrage Interrupt Betrieb starten. 
 * \see switched
 */
void StartSwitch(void);

/*! 
 * Tastsensor Abfrage Interrupt Betrieb anhalten.
 * \see switched
 */
void StopSwitch(void);

/*! 
 * Wartefunktion\n
 * \param time36kHz Wartezeit x/36kHz (sec)
 * 
 * Beispiel: 1 Millisekunde warten
   \verbatim
	Sleep(36); 
   \endverbatim
 * \see Sleep
 */
/* 
*/
void Sleep(unsigned char time36kHz);
/* ----------- END ------------ */


/* --------------- INTERNAL ------------- */
#define GREEN_LED_ON  PORTB |=  GREEN_LED	/*!< Gruene Status LED an */
#define GREEN_LED_OFF PORTB &= ~GREEN_LED	/*!< Gruene Status LED aus */
#define RED_LED_ON    PORTD |=  RED_LED		/*!< Rote Status LED an */
#define RED_LED_OFF   PORTD &= ~RED_LED		/*!< Rote Status LED aus */

#define FWD	(1 << PB5) 			/*!< Motor vorwaerts */
#define RWD	(1 << PB4) 			/*!< Motor rueckwaerts */
#define BREAK	0x00				/*!< Motor bremsen */
#define FREE	(1 << PB4) | (1 << PB5)  	/*!< Motor freilaufend */

#define IRTX        (1 << PB3)			/*!< PB3 Port fuer Infrarot Transmitter LED */
#define GREEN_LED   (1 << PB0)          	/*!< PB0 Port fuer Gruene Status LED */
#define RED_LED     (1 << PD2)			/*!< PD2 Port fuer Rote Status LED */

#define PWM 	  (1 << PB1) | (1 << PB2)	/*!< PB1, PB2 Ports fuer Pulsweitenmodulation der Motor Geschwindigkeit */
#define RIGHT_DIR (1 << PB4) | (1 << PB5)	/*!< PB4, PB5 Ports fuer Drehrichtung rechter Motor */
#define LEFT_DIR  (1 << PD4) | (1 << PD5)	/*!< PD4, PD5 Ports fuer Drehrichtung linker Motor */

#define SWITCHES   (1 << PD3)			/* PD3 Port fuer Tastsensor */
#define SWITCH_ON  PORTD |= SWITCHES		/* Tastsensor an  */
#define SWITCH_OFF PORTD &= ~SWITCHES		/* Tastsensor aus */

#define BATTERIE  (1 << MUX0) | (1 << MUX2) 	/*!< ADC5 A/D Wandler Port fuer Batterie Abfrage */
#define SWITCH    (1 << MUX2)			/*!< ADC4 A/D Wandler Port fuer Tastsensor */
#define IR_LEFT	  (1 << MUX0) | (1 << MUX1)	/*!< ADC3 A/D Wandler Port fuer Linienfolger Fototransistor links */
#define IR_RIGHT  (1 << MUX1)			/*!< ADC2  A/D Wandler Port fuer Linienfolger Fototransistor rechts */
#define FRONT_LED (1 << PD6)			/*!< PD6 Port fuer Front LED */

#define ODOMETRIE_LED 	  (1 << PD7)			/*!< PD7 Port fuer  Odometrie LED */
#define ODOMETRIE_LED_ON  PORTD |= ODOMETRIE_LED	/*!< Odometrie LED an  */
#define ODOMETRIE_LED_OFF PORTD &= ~ODOMETRIE_LED	/*!< Odometrie LED aus */

#define WHEEL_LEFT   (1 << MUX0)		/*!< ADC1 A/D Wandler Port fuer Odometrie Sensor links*/
#define WHEEL_RIGHT  0				/*!< ADC0 A/D Wandler Port fuer Odometrie Sensor rechts */

#endif /* ASURO_H */