-
also hab jetzt mal alles ersetzt und make und clean neu zugewiesen, jetzt kommt das selbe wie bei köpi am anfang. Aber weiss jetzt net wie er es geschafft hat. Aber hier ist mal die asuro.h
Code:
#ifndef ASURO_H
#define ASURO_H
#include <avr/io.h>
#include <avr/interrupt.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 */
-
-
aehnliches Problem
Ich habe ein aehnliches Problem. Auch nach dem #include asuro.h kriege ich die Fehlermeldung es fehlt asuro.o. Wie kann ich asuro.c compilieren, um ein asuro.o Object file zu generieren.
Gruesse von einen C- und Asuro-Anfaenger.
-
installiere den compiler, und schreibe dein programm. speichere es als test.c. das programm muss mitbeginnen. NUR KLEINBUCHSTABEN!
dann sollte es laut anleitung funktionieren. öffne mal von der cd die datei test.c im ordner asuro_src\firsttry. da ist alles richtig.
-
möglicherweise geht es, wenn du eine neue version von winavr installierst.