273 lines
8.3 KiB
C
273 lines
8.3 KiB
C
![]() |
/*
|
||
|
* c't-Sim - Robotersimulator fuer den c't-Bot
|
||
|
*
|
||
|
* 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 (at your
|
||
|
* option) any later version.
|
||
|
* This program is distributed in the hope that it will be
|
||
|
* useful, but WITHOUT ANY WARRANTY; without even the implied
|
||
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||
|
* PURPOSE. See the GNU General Public License for more details.
|
||
|
* You should have received a copy of the GNU General Public
|
||
|
* License along with this program; if not, write to the Free
|
||
|
* Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||
|
* MA 02111-1307, USA.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/*! @file ct-Bot.h
|
||
|
* @brief Demo-Hauptprogramm
|
||
|
* @author Benjamin Benz (bbe@heise.de)
|
||
|
* @date 26.12.05
|
||
|
*/
|
||
|
#ifndef CT_BOT_H_DEF
|
||
|
#define CT_BOT_H_DEF
|
||
|
|
||
|
#ifndef MMC_LOW_H_
|
||
|
#include "global.h" // denn in mmc-low.S sind typedefs unerwuenscht
|
||
|
#endif
|
||
|
|
||
|
/************************************************************
|
||
|
* Module switches, to make code smaller if features are not needed
|
||
|
************************************************************/
|
||
|
//#define LOG_CTSIM_AVAILABLE /*!< Logging ueber das ct-Sim (PC und MCU) */
|
||
|
//#define LOG_DISPLAY_AVAILABLE /*!< Logging ueber das LCD-Display (PC und MCU) */
|
||
|
//#define LOG_UART_AVAILABLE /*!< Logging ueber UART (NUR für MCU) */
|
||
|
#define LOG_STDOUT_AVAILABLE /*!< Logging auf die Konsole (NUR für PC) */
|
||
|
|
||
|
|
||
|
#define LED_AVAILABLE /*!< LEDs for local control */
|
||
|
|
||
|
#define IR_AVAILABLE /*!< Infrared Remote Control */
|
||
|
#define RC5_AVAILABLE /*!< Key-Mapping for IR-RC */
|
||
|
|
||
|
#define BOT_2_PC_AVAILABLE /*!< Soll der Bot mit dem PC kommunmizieren? */
|
||
|
|
||
|
//#define TIME_AVAILABLE /*!< Gibt es eine Systemzeit im s und ms? */
|
||
|
|
||
|
#define DISPLAY_AVAILABLE /*!< Display for local control */
|
||
|
#define DISPLAY_REMOTE_AVAILABLE /*!< Sende LCD Anzeigedaten an den Simulator */
|
||
|
#define DISPLAY_SCREENS_AVAILABLE /*!< Ermoeglicht vier verschiedene Screen */
|
||
|
//#define DISPLAY_SCREEN_RESETINFO /*!< Zeigt auf Screen 4 Informationen ueber Resets an */
|
||
|
//#define DISPLAY_ODOMETRIC_INFO /*!< Zeigt auf Screen 4 Positions- und Geschwindigkeitsdaten */
|
||
|
//#define DISPLAY_REGELUNG_AVAILABLE 3 /*!< Zeigt Reglerdaten auf Screen 4, wenn SPEED_CONTROL_AVAILABLE gesetzt ist*/
|
||
|
#define DISPLAY_MMC_INFO /*!< Zeigt auf Screen 4 die Daten der MMC-Karte an */
|
||
|
//#define DISPLAY_BEHAVIOUR_AVAILABLE /*!< Anzeige der Verhalten im Display Screen 3, ersetzt Counteranzeige */
|
||
|
#define DISPLAY_DYNAMIC_BEHAVIOUR_AVAILABLE /*!< Zustandsaenderungen der Verhalten sind direkt unter Umgehung der Puffervar sichtbar */
|
||
|
#define MEASURE_MOUSE_AVAILABLE /*!< Geschwindigkeiten werden aus den Maussensordaten berechnet */
|
||
|
//#define MEASURE_COUPLED_AVAILABLE /*!< Geschwindigkeiten werden aus Maus- und Encoderwerten ermittelt und gekoppelt */
|
||
|
|
||
|
|
||
|
//#define WELCOME_AVAILABLE /*!< kleiner Willkommensgruss */
|
||
|
|
||
|
#define ADC_AVAILABLE /*!< A/D-Converter */
|
||
|
|
||
|
#define MAUS_AVAILABLE /*!< Maus Sensor */
|
||
|
|
||
|
#define ENA_AVAILABLE /*!< Enable-Leitungen */
|
||
|
#define SHIFT_AVAILABLE /*!< Shift Register */
|
||
|
|
||
|
//#define TEST_AVAILABLE_ANALOG /*!< Sollen die LEDs die analoge Sensorwerte anzeigen */
|
||
|
#define TEST_AVAILABLE_DIGITAL /*!< Sollen die LEDs die digitale Sensorwerte anzeigen */
|
||
|
//#define TEST_AVAILABLE_MOTOR /*!< Sollen die Motoren ein wenig drehen */
|
||
|
//#define TEST_AVAILABLE_COUNTER /*!< Gibt einen Endlos-Counter auf Screen 3 aus und aktiviert Screen 3 */
|
||
|
//#define DOXYGEN /*!< Nur zum Erzeugen der Doku, wenn dieser schalter an ist, jammert der gcc!!! */
|
||
|
|
||
|
#define BEHAVIOUR_AVAILABLE /*!< Nur wenn dieser Parameter gesetzt ist, exisitiert das Verhaltenssystem */
|
||
|
|
||
|
#define MAP_AVAILABLE /*!< Aktiviere die Kartographie */
|
||
|
|
||
|
//#define SPEED_CONTROL_AVAILABLE /*!< Aktiviert die Motorregelung */
|
||
|
|
||
|
//#define SRF10_AVAILABLE /*!< Ultraschallsensor SRF10 vorhanden */
|
||
|
|
||
|
#define MMC_AVAILABLE /*!< haben wir eine MMC/SD-Karte zur Verfuegung */
|
||
|
#define MINI_FAT_AVAILABLE /*!< koennen wir sektoren in FAT-systemen finden */
|
||
|
//#define MMC_VM_AVAILABLE /*!< Virtual Memory Management mit MMC / SD-Card oder PC-Emulation */
|
||
|
/************************************************************
|
||
|
* Some Dependencies!!!
|
||
|
************************************************************/
|
||
|
|
||
|
#ifdef DOXYGEN
|
||
|
#define PC /*!< Beim generieren der Doku alles anschalten */
|
||
|
#define MCU /*!< Beim generieren der Doku alles anschalten */
|
||
|
#define TEST_AVAILABLE_MOTOR /*!< Beim generieren der Doku alles anschalten */
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#ifndef DISPLAY_AVAILABLE
|
||
|
#undef WELCOME_AVAILABLE
|
||
|
#undef DISPLAY_REMOTE_AVAILABLE
|
||
|
#undef DISPLAY_SCREENS_AVAILABLE
|
||
|
#undef DISPLAY_SCREEN_RESETINFO
|
||
|
#endif
|
||
|
|
||
|
#ifndef IR_AVAILABLE
|
||
|
#undef RC5_AVAILABLE
|
||
|
#endif
|
||
|
|
||
|
#ifndef MAUS_AVAILABLE
|
||
|
#undef MEASURE_MOUSE_AVAILABLE
|
||
|
#undef MEASURE_COUPLED_AVAILABLE
|
||
|
#endif
|
||
|
|
||
|
#ifdef PC
|
||
|
#ifndef DOXYGEN
|
||
|
#undef UART_AVAILABLE
|
||
|
#undef BOT_2_PC_AVAILABLE
|
||
|
#undef SRF10_AVAILABLE
|
||
|
#undef TWI_AVAILABLE
|
||
|
#undef SPEED_CONTROL_AVAILABLE // Deaktiviere die Motorregelung
|
||
|
#undef MMC_AVAILABLE
|
||
|
#endif
|
||
|
|
||
|
#define COMMAND_AVAILABLE /*!< High-Level Communication */
|
||
|
#undef DISPLAY_SCREEN_RESETINFO
|
||
|
#undef TEST_AVAILABLE_COUNTER
|
||
|
#endif
|
||
|
|
||
|
#ifdef MCU
|
||
|
#ifdef LOG_CTSIM_AVAILABLE
|
||
|
#define BOT_2_PC_AVAILABLE
|
||
|
#endif
|
||
|
#ifdef BOT_2_PC_AVAILABLE
|
||
|
#define UART_AVAILABLE /*!< Serial Communication */
|
||
|
#define COMMAND_AVAILABLE /*!< High-Level Communication */
|
||
|
#endif
|
||
|
// #undef MAP_AVAILABLE
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#ifdef TEST_AVAILABLE_MOTOR
|
||
|
#define TEST_AVAILABLE /*!< brauchen wir den Testkrams */
|
||
|
#define TEST_AVAILABLE_DIGITAL /*!< Sollen die LEDs die digitale Sensorwerte anzeigen */
|
||
|
#endif
|
||
|
|
||
|
#ifdef TEST_AVAILABLE_DIGITAL
|
||
|
#define TEST_AVAILABLE /*!< brauchen wir den Testkrams */
|
||
|
#undef TEST_AVAILABLE_ANALOG
|
||
|
#endif
|
||
|
|
||
|
#ifdef TEST_AVAILABLE_ANALOG
|
||
|
#define TEST_AVAILABLE /*!< brauchen wir den Testkrams */
|
||
|
#endif
|
||
|
|
||
|
#ifdef TEST_AVAILABLE_COUNTER
|
||
|
#define TEST_AVAILABLE /*!< brauchen wir den Testkrams */
|
||
|
#define DISPLAY_SCREENS_AVAILABLE
|
||
|
#define DISPLAY_SCREEN_RESETINFO
|
||
|
#endif
|
||
|
|
||
|
#ifdef DISPLAY_ODOMETRIC_INFO
|
||
|
#undef DISPLAY_SCREEN_RESETINFO /*!< Wenn Odometrieinfos, dann keine Resetinfos */
|
||
|
#endif
|
||
|
|
||
|
#ifndef SPEED_CONTROL_AVAILABLE
|
||
|
#undef DISPLAY_REGELUNG_AVAILABLE
|
||
|
#endif
|
||
|
|
||
|
#ifdef LOG_UART_AVAILABLE
|
||
|
#define LOG_AVAILABLE
|
||
|
#endif
|
||
|
#ifdef LOG_CTSIM_AVAILABLE
|
||
|
#define LOG_AVAILABLE
|
||
|
#endif
|
||
|
#ifdef LOG_DISPLAY_AVAILABLE
|
||
|
#define LOG_AVAILABLE
|
||
|
#endif
|
||
|
#ifdef LOG_STDOUT_AVAILABLE
|
||
|
#define LOG_AVAILABLE
|
||
|
#endif
|
||
|
|
||
|
#ifndef MMC_AVAILABLE
|
||
|
#undef MINI_FAT_AVAILABLE
|
||
|
#ifdef MCU
|
||
|
#undef MMC_VM_AVAILABLE
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#ifdef LOG_AVAILABLE
|
||
|
#ifdef PC
|
||
|
/* Auf dem PC gibts kein Logging ueber UART. */
|
||
|
#undef LOG_UART_AVAILABLE
|
||
|
#endif
|
||
|
|
||
|
#ifdef MCU
|
||
|
/* Mit Bot zu PC Kommunikation auf dem MCU gibts kein Logging ueber UART.
|
||
|
* Ohne gibts keine Kommunikation ueber ct-Sim.
|
||
|
*/
|
||
|
#undef LOG_STDOUT_AVAILABLE /*!< MCU hat kein STDOUT */
|
||
|
#ifdef BOT_2_PC_AVAILABLE
|
||
|
#undef LOG_UART_AVAILABLE
|
||
|
#else
|
||
|
#undef LOG_CTSIM_AVAILABLE
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
/* Ohne Display gibts auch keine Ausgaben auf diesem. */
|
||
|
#ifndef DISPLAY_AVAILABLE
|
||
|
#undef LOG_DISPLAY_AVAILABLE
|
||
|
#endif
|
||
|
|
||
|
/* Logging aufs Display ist nur moeglich, wenn mehrere Screens
|
||
|
* unterstuetzt werden.
|
||
|
*/
|
||
|
#ifndef DISPLAY_SCREENS_AVAILABLE
|
||
|
#undef LOG_DISPLAY_AVAILABLE
|
||
|
#endif
|
||
|
|
||
|
/* Es kann immer nur ueber eine Schnittstelle geloggt werden. */
|
||
|
|
||
|
#ifdef LOG_UART_AVAILABLE
|
||
|
#define UART_AVAILABLE
|
||
|
#undef LOG_CTSIM_AVAILABLE
|
||
|
#undef LOG_DISPLAY_AVAILABLE
|
||
|
#undef LOG_STDOUT_AVAILABLE
|
||
|
#endif
|
||
|
|
||
|
#ifdef LOG_CTSIM_AVAILABLE
|
||
|
#undef LOG_DISPLAY_AVAILABLE
|
||
|
#undef LOG_STDOUT_AVAILABLE
|
||
|
#endif
|
||
|
|
||
|
#ifdef LOG_DISPLAY_AVAILABLE
|
||
|
#undef LOG_STDOUT_AVAILABLE
|
||
|
#endif
|
||
|
|
||
|
// Wenn keine sinnvolle Log-Option mehr uebrig, loggen wir auch nicht
|
||
|
#ifndef LOG_CTSIM_AVAILABLE
|
||
|
#ifndef LOG_DISPLAY_AVAILABLE
|
||
|
#ifndef LOG_UART_AVAILABLE
|
||
|
#ifndef LOG_STDOUT_AVAILABLE
|
||
|
#undef LOG_AVAILABLE
|
||
|
#endif
|
||
|
#endif
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#ifdef SRF10_AVAILABLE
|
||
|
#define TWI_AVAILABLE /*!< TWI-Schnittstelle (I2C) nutzen */
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#define F_CPU 16000000L /*!< Crystal frequency in Hz */
|
||
|
#define XTAL F_CPU /*!< Crystal frequency in Hz */
|
||
|
|
||
|
#define LINE_FEED "\n\r" /*!< Windows und Linux unterscheiden beim Linefeed. Windows erwarten \n\r, Linux nur \n */
|
||
|
|
||
|
#ifdef MCU
|
||
|
#ifndef MMC_LOW_H_
|
||
|
#include <avr/interrupt.h>
|
||
|
#endif
|
||
|
#ifdef SIGNAL
|
||
|
#define NEW_AVR_LIB
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#endif
|