/*
------------------------------------------------------------------------------------------------------------------------
------------------------------------------- APPLICATION_GENERAL_HEADER_DATEI -------------------------------------------
************************************************* application.h ** V1.1 ************************************************
------------------------------------- Ausgangs-Datei fuer jedes AVR-Projekt durch --------------------------------------
-------------------------------- Aufhebung der Kommentierungen benoetigter Definitionen --------------------------------
------------------------------------------------------------------------------------------------------------------------
 Modul-Teil C.........: application.c
 Header.(*.h).........: typedefs.h (ruft weitere Header auf)
 Version..............: 1.1
 Compiler.............: CodeVisionAVR
 Chip.................: ATmega88
 Datum................: Juni 2009
 Autor................: Alwin Lenck (ALE23) basierend auf allen Modulen von Udo Juerss
------------------------------------------------------------------------------------------------------------------------
GENERAL-APPLICATION-HEADER-DATEI
Alle nicht verwendeten Definitionen bleiben je nach Anwendung "auskommentiert". Mit dieser Gesamt-Darstellung wird 
eine einheitliche Application-Header-Datei als Grundlage fuer alle verwendeten application.h zur Verfuegung gestellt,
d.h. wenn ein neues Projekt begonnen wird, wird diese Datei zunaechst als application.h in den Projekt-Ordner kopiert
und dann werden Zug um Zug die benoetigten Definitionen von ihren Zeilenkommentar-Zeichen // "befreit".
------------------------------------------------------------------------------------------------------------------------
ZUSAMMENSTELLUNG ALLER DEFINITIONEN AUS ALLEN APPLICATION-HEADER-DATEIEN DER ANWENDUNGEN (AVR-PROJEKTE)
Sie besteht aus einzelnen Abschnitten, die besonderen Funktionsgruppen bzw. Hardware-Ressourcen zugeordnet werden. So
sind z.B. dem ADC (Analog Digital Converter), dem USART (Universal Synchronous and Asynchronous Serial Receiver and
Transmitter) sowie den Tasten und LEDs eigene Abschnitte zugewiesen.

Definitionen, die nicht in den betreffenden Abschnitten der "alten" application.h-Dateien der Module auftauchen,
sind hier ebenfalls aufgefuehrt. Definitionen einzelner Anwendungs-Header-Dateien sind hier natuerlich nicht
enthalten!

Im Falle, dass die Preprozessor-Anweisung #define kein Replacement besitzt, wirkt der Identifier als Schalter und wird
durch das Entfernen der Zeilen-Kommentierung // auf TRUE gesetzt. Er wird im Regelfall im korrespondierenden 
*.c-Programm abgefragt.

Beispiel: Die Schalter fuer die einzusetzende Hardware werden hier bei den Hardware-Ressourcen gesetzt und dann in der
application.c abgefragt und fallweise aktiviert, d.h. dort werden die benoetigten Bits im Register PRR auf 0 gesetzt.

------------------------------------------------------------------------------------------------------------------------
Liste der Abschnitte:
------------------------------------------------------------------------------------------------------------------------
   Hardware-Module definieren. Dieser Abschnitt wird von allen Applikationen angesprochen.                           001
   Tasten S1, S2 und S3 definieren                                                                                   002
   LEDs jeweils fuer Datenrichtungsregister, Port- und Bit-Nummer definieren                                         003
   LED-Pins-Definitionen                                                                                             004
   LEDs am Port C definieren                                                                                         005
   LC-Display definieren                                                                                             006
   Keyboard-Definitionen                                                                                             007
   Magnet Leviation Controller - Definitionen von Kp und Kd (Kp = Proportional Gain, Kd = Derivative Gain)           008
   Timer2-Sound-Definition                                                                                           009
   SPI-Definitionen (Serial Peripheral Interface)                                                                    010
   USART0-Definitionen (Universal Synchronous and Asynchronous Serial Receiver and Transmitter)                      011
   AC-Definitionen (Analog Comparator)                                                                               012
   ADC-Definitionen (Analog Digital Converter)                                                                       013
   RC5-Dekoder-Definitionen (Remote Control)                                                                         014
   One-Wire-Definitionen                                                                                             015
   One-Wire - Erweiterte Definitionen                                                                                016
   Reaction - Definitionen der Anwendung                                                                             017
   Servo - Definitionen                                                                                              018
   ADNS-5020-Definition                                                                                              019
   IRDMS - Definitionen fuer den Sharp IRDMS (InfraRed Distance Measurment Sensor)                                   020
   PPM-Decoder-Definitionen                                                                                          021
   WII-Position-Data-Filter-Definitionen                                                                             022
   DCF77-Definitionen (Zeitsignalsender DCF77 - Langwellensender in Mainflingen)                                     023
   Rotary-Encoder-Definitionen                                                                                       024
   Port-Expander-Definitionen                                                                                        025
   DS1820-Simulation-Definitionen                                                                                    026
*/

//----------------------------------------------------------------------------------------------------------------------
// Abfrage, ob diese Header-Datei bereits aufgerufen wurde. Wenn JA, dann alle Anweisungen ignorieren!
//----------------------------------------------------------------------------------------------------------------------
#ifndef __APPLICATION_H
#define __APPLICATION_H                          // Wenn NEIN, dann wird hier der Schalter gesetzt, dass zukuenftig
                                                 // diese Header-Datei nicht noch einmal hinzugefuegt wird.

//----------------------------------------------------------------------------------------------------------------------
// Header-Datei einfuegen
//----------------------------------------------------------------------------------------------------------------------
#include "typedefs.h"

//----------------------------------------------------------------------------------------------------------------------
// Einstellung des System-Taktes
//----------------------------------------------------------------------------------------------------------------------
#define F_CPU         (_MCU_CLOCK_FREQUENCY_)
#define F_CPU_KHZ     (F_CPU / 1000)
#define F_CPU_MHZ     (F_CPU_KHZ / 1000)

//----------------------------------------------------------------------------------------------------------------------
// Hardware-Ressourcen definieren. Dieser Abschnitt wird von allen Applikationen angesprochen.                       001
// Hier sollen nur die wirklich benutzten Statements durch Beseitigung der Zeilen-Kommentierung // aktiviert werden!
//----------------------------------------------------------------------------------------------------------------------

//#define USE_TWI                                // Soll das TWI-(I2C-)Modul benutzt werden?
//#define USE_TIMER2                             // Soll der Timer2 benutzt werden?
//#define USE_TIMER1                             // Soll der Timer1 benutzt werden?
//#define USE_TIMER0                             // Soll der Timer0 benutzt werden?
//#define USE_SPI                                // Soll das SPI benutzt werden?
//#define USE_USART0                             // Soll der USART0 benutzt werden?
//#define USE_ADC                                // Soll der Analog Digital Converter benutzt werden?
//#define USE_ACO                                // Soll der Analog Comparator benutzt werden?
//#define USE_WATCHDOG                           // Soll der Watchdog Timer benutzt werden?
//#define USE_CRYSTAL_CLOCK                      // Soll der Quarz- oder RC-Systemtakt benutzt werden?

//----------------------------------------------------------------------------------------------------------------------
// Tasten S1, S2 und S3 definieren                                                                                   002
// Anwendung in den Projekten (indirekt ueber S1_INIT(), S2_INIT(), S3_INIT() in main.c => switches.h):
// PB_LED // Sound
//----------------------------------------------------------------------------------------------------------------------

//#define S1_DDR                       DDRB      // S1 an Port B Data Direction Register
//#define S1_PRT                       PINB      // S1 an Port B Input Pins Address
//#define S1_BIT                       BIT3      // S1 an Bit3 von PINB

//#define S2_DDR                       DDRB      // S2 an Port B Data Direction Register
//#define S2_PRT                       PINB      // S2 an Port B Input Pins Address
//#define S2_BIT                       BIT4      // S2 an Bit4 von PINB

//#define S3_DDR                       DDRB      // S3 an Port B Data Direction Register
//#define S3_PRT                       PINB      // S3 an Port B Input Pins Address
//#define S3_BIT                       BIT5      // S3 an Bit5 von PINB

//----------------------------------------------------------------------------------------------------------------------
// LEDs jeweils fuer Datenrichtungsregister, Port- und Bit-Nummer definieren                                         003
// Anwendung im Projekt (direkt ueber main.c) PB_LED
//----------------------------------------------------------------------------------------------------------------------

//#define LED1_DDR                     DDRC      // LED1 an Port C Data Direction Register
//#define LED1_PRT                     PORTC     // LED1 an Port C Input Pins Address
//#define LED1_BIT                     PC2       // LED1 an PC2 = PINC2 = Bit2

//#define LED2_DDR                     DDRC      // LED2 an Port C Data Direction Register
//#define LED2_PRT                     PORTC     // LED2 an Port C Input Pins Address
//#define LED2_BIT                     PC3       // LED2 an PC3 = PINC3 = Bit3

//#define LED3_DDR                     DDRC      // LED3 an Port C Data Direction Register
//#define LED3_PRT                     PORTC     // LED3 an Port C Input Pins Address
//#define LED3_BIT                     PC4       // LED3 an PC4 = PINC4 = Bit4

//----------------------------------------------------------------------------------------------------------------------
// LED-Pins-Definitionen                                                                                             004
// Anwendung im Projekt (indirekt ueber led_photo.h) LED_Photo
//----------------------------------------------------------------------------------------------------------------------

//#define LED_ANODE_DDR                DDRD      // LED-Anode an Port D Data Direction Register
//#define LED_ANODE_PRT                PORTD     // LED-Anode an Port D Data Register
//#define LED_ANODE_PIN                PIND      // LED-Anode an Port D Input Pins Address
//#define LED_ANODE_BIT                PD6       // LED-Anode an PD6 = PIND6 = Bit6

//#define LED_CATHODE_DDR              DDRD      // LED-Kathode an Port D Data Direction Register
//#define LED_CATHODE_PRT              PORTD     // LED-Kathode an Port D Data Register
//#define LED_CATHODE_PIN              PIND      // LED-Kathode an Port D Input Pins Address
//#define LED_CATHODE_BIT              PD5       // LED-Kathode an PD5 = PIND5 = Bit5

//----------------------------------------------------------------------------------------------------------------------
// LEDs am Port C definieren                                                                                         005
// Anwendung im Projekt (ueber main.c) RC5_Decoder
//----------------------------------------------------------------------------------------------------------------------

//#define LED_DDR                      DDRC      // LEDs an Port C Data Direction Register
//#define LED_PRT                      PORTC     // LEDs an Port C Data Register
//#define LED_PINS (PC5 | PC4 | PC3 | PC2 | PC1 | PC0) // PINC-Output-Pins fuer LED1 bis LED6

//----------------------------------------------------------------------------------------------------------------------
// LC-Display definieren                                                                                             006
// Anwendung in den Projekten (indirekt ueber lcd_init() im Hauptprogramm main.c):
// 2_Draht_LCD // RC5_Decoder // MLC_RC5 // PWM // Reaction_LCD // Servo_Control // Servo_Control_8C // Cap_Meter
// EEPROM_LCD // Keyboard // Mouse // OMS_ADNS5020 // IRDMS_GP2xxx // PPM_Decoder // WII_Nunchuck
// WII_Remote_IR_Sensor // Chrono_Term // DCF77 // Servo_Tester // Rotary_Encoder // RC5_Relais // DS1820_Network
//----------------------------------------------------------------------------------------------------------------------

//#define LCD_POWER_UP_DELAY_MS       50         // LCD-Einschalt-Verzoegerung von 50 ms
//#define LCD_INIT_DELAY_MS            5         // Verzoegerung zwischen den Initialisierung-Schritten von 5 ms

//#define LCD_COLS                    20         // Anzahl Display-Spalten (20 Zeichen pro Zeile)
//#define LCD_ROWS                     4         // Anzahl Display-Zeilen  ( 4 Zeilen)

// LCD clock pin definitions
//#define LCD_CLOCK_DDR                DDRB      // LCD-Takt an Port B Data Direction Register
//#define LCD_CLOCK_PRT                PORTB     // LCD-Takt an Port B Data Register
//#define LCD_CLOCK_BIT                PB1       // LCD-Takt an PB1 = PINB1 = Bit1 (CLK-PIN)

// LCD data pin definitions
//#define LCD_DATA_DDR                 DDRB      // LCD-Daten an Port B Data Direction Register
//#define LCD_DATA_PRT                 PORTB     // LCD-Daten an Port B Data Register
//#define LCD_DATA_BIT                 PB2       // LCD-Daten an PB2 = PINB2 = Bit2 (DATA-PIN)

//----------------------------------------------------------------------------------------------------------------------
// Keyboard-Definitionen                                                                                             007
// Anwendung nur im Projekt (indirekt ueber lcde_init() im Hauptprogramm main.c) Keyboard
//----------------------------------------------------------------------------------------------------------------------

//#define LCDE_FILL_CHAR               ' '       //Leer-Zeichen zum Fuellen

// Anwendung nur im folgenden Projekt (indirekt ueber kbd_init() im Hauptprogramm main.c):
// 08_06_03 AVR-Projekt Keyboard

//#define KBD_CLOCK_DDR                DDRD      // KBD-Takt an Port D Data Direction Register
//#define KBD_CLOCK_PRT                PORTD     // KBD-Takt an Port D Data Register
//#define KBD_CLOCK_PIN                PIND      // KBD-Takt an Port D Input Pins Address
//#define KBD_CLOCK_BIT                PD2       // KBD-Takt an PD2 = PIND2 = Bit2

//#define KBD_DATA_DDR                 DDRD      // KBD-Daten an Port D Data Direction Register
//#define KBD_DATA_PRT                 PORTD     // KBD-Daten an Port D Data Register
//#define KBD_DATA_PIN                 PIND      // KBD-Daten an Port D Input Pins Address
//#define KBD_DATA_BIT                 PD3       // KBD-Daten an PD3 = PIND3 = Bit3

//#define KBD_USE_EXTENED_FKEYS

//----------------------------------------------------------------------------------------------------------------------
// Magnet Leviation Controller - Definitionen von Kp und Kd (Kp = Proportional Gain, Kd = Derivative Gain)           008
// Anwendung nur im Projekt (indirekt ueber mlc_init() im Hauptprogramm main.c) MLC_RC5
//----------------------------------------------------------------------------------------------------------------------

//#define MLC_BUTTON_DELAY            25         // Scan interval of pushbuttons

//#define MLC_KP_MIN                 0.0
//#define MLC_KP_START               0.0
//#define MLC_KP_MAX                 2.0
//#define MLC_KP_STEP                0.02

//#define MLC_KD_MIN                 0.0
//#define MLC_KD_START              10.0
//#define MLC_KD_MAX                25.0
//#define MLC_KD_STEP                0.1

//----------------------------------------------------------------------------------------------------------------------
// Timer2-Sound-Definition                                                                                           009
// Anwendung in den Projekten (indirekt ueber beep_init() im Hauptprogramm main.c):
// Beeper // Chrono_Term // DCF77
//----------------------------------------------------------------------------------------------------------------------

//#define BEEP_TIMER2_CLOCK_DIVIDER    8         // Gueltige Teiler: 1, 8, 32, 64, 128, 256, 1024

//----------------------------------------------------------------------------------------------------------------------
// SPI-Definitionen (Serial Peripheral Interface)                                                                    010
// Anwendung in den Projekten (indirekt ueber spi_init() im Hauptprogramm main.c):
// OMS_ADNS5020 // SPI_Tester
//----------------------------------------------------------------------------------------------------------------------

//#define SPI_SS_DDR                   DDRB      // SPI-Slave-Selekt an Port B Data Direction Register
//#define SPI_SS_PRT                   PORTB     // SPI-Slave-Select an Port B Data Register
//#define SPI_SS_BIT                   PB2       // SPI-Slave-Select an PB2 = PINB2 = Bit2

//----------------------------------------------------------------------------------------------------------------------
// USART0-Definitionen (Universal Synchronous and Asynchronous Serial Receiver and Transmitter)                      011
// Anwendung in den Projekten (indirekt ueber usart_init() im Hauptprogramm main.c):
// RC5_Decoder // Reaction_USART // Cmd_Interpreter // Servo_Control // Servo_Control_8C // I2C_Tester
// WII_Nunchuck // WII_Remote_IR_Sensor // Servo_Tester // DS1820_Network // 1_Wire_Tester // SPI_Tester
//----------------------------------------------------------------------------------------------------------------------

//#define USART_RX_BUFFER_SIZE        64         // Receive-Buffer-Size
//#define USART_BAUDRATE           38400         // USART-Baudrate
//#define USART_BIT_TIME (1000000 * (float)(1.0  / USART_BAUDRATE)) // 
//#define USART_USE_TX                           // Soll Transmitter benutzt werden, dann USART_USE_TX auf TRUE setzen
//#define USART_USE_RX                           // Soll Receiver benutzt werden, dann USART_USE_RX auf TRUE setzen
//#define USART_USE_RX_IRQ                       // Soll RX-Interrupt benutzt werden, dann USART_USE_RX_IRQ auf TRUE
//#define USART_USE_UPPERCASE                    // Sollen empfangene Zeichen konvertiert werden, dann auf TRUE setzen

//----------------------------------------------------------------------------------------------------------------------
// AC-Definitionen (Analog Comparator)                                                                               012
// Anwendung im Projekt (indirekt ueber ac_init() oder direkt im Hauptprogramm main.c) Cap_Meter
//----------------------------------------------------------------------------------------------------------------------

//#define AC_TEST_PIN_DDR              PORTD     // AC-Test-Pin an Port D Data Register
//#define AC_TEST_PIN_PRT              PORTD     // AC-Test-Pin an Port D Data Register
//#define AC_TEST_PIN_BIT              PD5       // AC-Test-Pin an PD5 = PIND5 = Bit5

//#define AC_TEST_TIMEOUT            244         // Time is 244 * 4,096ms = ~1s
//#define AC_TEST_RESISTANCE     10000.0         // 10 kOhm
//#define AC_TAU_COEFF               0.93        // 
//#define AC_CAP_OFS                 0.23        // 

//#define AC_IIR_COEFF               0.90        // 
//#define AC_IIR_DIFF_COEFF (1.0 - AC_IIR_COEFF) // 

//----------------------------------------------------------------------------------------------------------------------
// ADC-Definitionen (Analog Digital Converter)                                                                       013
// Anwendung in den Projekten (indirekt ueber adc_init() im Hauptprogramm main.c):
// MLC_RC5 // PWM // IRDMS_GP2xxx (nur ueber application.h - s.u.) // Servo_Tester
// 1_Wire_Emulator (direkt im Hauptprogramm main-c gesetzt - s.u.)
//----------------------------------------------------------------------------------------------------------------------

//#define ADC_SENSOR_CHANNEL           6         // ADC-Eingangs-Pin fuer Hall-Sensor
//#define ADC_SERVO_A_CHANNEL          6         // ADC-Eingangs-Pin fuer Servo_A
//#define ADC_SERVO_B_CHANNEL          7         // ADC-Eingangs-Pin fuer Servo_B
//#define ADC_BUFFER_ITEMS             8         // Groesse des ADC-Puffers
//#define ADC_BUFFER_SIZE             32         // Groesse des ADC-Puffers
//#define ADC_PWM_DUTY_CHANNEL         6         // ADC-Eingangs-Pin fuer PWM Duty Control
//#define ADC_IIR_COEFF            (0.95)        //   nur fuer Projekt IRDMS_GP2xxx
//#define ADC_IIR_COEFF_DIFF (1.0 - ADC_IIR_COEFF) // nur fuer Projekt IRDMS_GP2xxx
//#define ADC_TEMP_CHANNEL             6         // Temporaerer ADC-Eingangs-Pin (nur fuer Projekt 1_Wire_Emulator)

//----------------------------------------------------------------------------------------------------------------------
// RC5-Dekoder-Definitionen (Remote Control)                                                                         014
// Anwendung in den Projekten (indirekt ueber rc5d_init() im Hauptprogramm main.c):
// RC5_decoder // RC5_Relais
//----------------------------------------------------------------------------------------------------------------------

//#define RC5D_SIGNAL_TOLERANCE       50         // Signal time tolerance in percent
//#define RC5D_START_BIT_VALUE         0         // Change to 1 if receiver has active high output

//----------------------------------------------------------------------------------------------------------------------
// One-Wire-Definitionen                                                                                             015
// Anwendung in den Projekten (indirekt ueber ow_init() im Hauptprogramm main.c):
// Chrono_Term // DS1820_Network // 1_Wire_Tester
//----------------------------------------------------------------------------------------------------------------------

//#define OW_DDR                       DDRD      // One-Wire an Port D Data Direction Register
//#define OW_WPR                       PORTD     // One-Wire an Port D Data Register
//#define OW_RPR                       PIND      // One-Wire an Port D Input Pins Address
//#define OW_BIT                       PD5       // One-Wire an PD5 = PIND5 = Bit5

//#define OW_MAX_DEVICES               8

//----------------------------------------------------------------------------------------------------------------------
// One-Wire - Erweiterte Definitionen                                                                                016
// Anwendung im Projekte (indirekt ueber owe_init() im Hauptprogramm main.c) 1_Wire_Emulator
//----------------------------------------------------------------------------------------------------------------------

//#define OWE_DQ_DDR                   DDRD      // One-Wire-Extended an Port D Data Direction Register
//#define OWE_DQ_PRT                   PORTD     // One-Wire-Extended an Port D Data Register
//#define OWE_DQ_BIT                   PD3       // One-Wire-Extended an PD3 = PIND3 = Bit3

//#define OWE_USE_EXTERNAL_MOSFET                // Nur wenn externes MOSFET benutzt werden soll, dann hier aktivieren

//----------------------------------------------------------------------------------------------------------------------
// Reaction - Definitionen der Anwendung                                                                             017
// Anwendung in den Projekten (indirekt ueber sw_init() im Hauptprogramm main.c):
// Reaction_LCD // Reaction_LED // Reaction_USART
//----------------------------------------------------------------------------------------------------------------------

//#define REACTION_MAX_TIMEOUT        76         // 5s Timeout (65.536ms * 76)
//#define REACTION_LATENCY_TIME     3000         // 3 chars         - nur fuer Reaction_LCD !!
//#define REACTION_LATENCY_TIME (U16)(USART_BIT_TIME * 40)  // 4 chars, 10 bit - nur fuer Reaction_USART !!

//----------------------------------------------------------------------------------------------------------------------
// Servo - Definitionen                                                                                              018
// Anwendung in den Projekten (indirekt ueber servo_init() im Hauptprogramm main.c):
// Servo_Control // Servo_Control_8C // Servo_Tester
//----------------------------------------------------------------------------------------------------------------------

//#define SERVO_MAX                    4
//#define SERVO_MAX                    8

//#define SERVO_LOWEST_TIME          850
//#define SERVO_HIGHEST_TIME        2150

//#define SERVO_0_DDR                  DDRC      // Servo-0 an Port C Data Direction Register
//#define SERVO_0_PRT                  PORTC     // Servo-0 an Port C Data Register
//#define SERVO_0_BIT                  PC0       // Servo-0 an PC0 = PINC0 = Bit0

//#define SERVO_1_DDR                  DDRC      // Servo-1 an Port C Data Direction Register
//#define SERVO_1_PRT                  PORTC     // Servo-1 an Port C Data Register
//#define SERVO_1_BIT                  PC1       // Servo-1 an PC1 = PINC1 = Bit1

//#define SERVO_2_DDR                  DDRC      // Servo-2 an Port C Data Direction Register
//#define SERVO_2_PRT                  PORTC     // Servo-2 an Port C Data Register
//#define SERVO_2_BIT                  PC2       // Servo-2 an PC2 = PINC2 = Bit2

//#define SERVO_3_DDR                  DDRC      // Servo-3 an Port C Data Direction Register
//#define SERVO_3_PRT                  PORTC     // Servo-3 an Port C Data Register
//#define SERVO_3_BIT                  PC3       // Servo-3 an PC3 = PINC3 = Bit3

//#define SERVO_4_DDR                  DDRC      // Servo-4 an Port C Data Direction Register
//#define SERVO_4_PRT                  PORTC     // Servo-4 an Port C Data Register
//#define SERVO_4_BIT                  PC4       // Servo-4 an PC4 = PINC4 = Bit4

//#define SERVO_5_DDR                  DDRC      // Servo-5 an Port C Data Direction Register
//#define SERVO_5_PRT                  PORTC     // Servo-5 an Port C Data Register
//#define SERVO_5_BIT                  PC5       // Servo-5 an PC5 = PINC5 = Bit5

//#define SERVO_6_DDR                  DDRD      // Servo-6 an Port D Data Direction Register
//#define SERVO_6_PRT                  PORTD     // Servo-6 an Port D Data Register
//#define SERVO_6_BIT                  PD5       // Servo-6 an PD6 = PIND6 = Bit6

//#define SERVO_7_DDR                  DDRD      // Servo-7 an Port D Data Direction Register
//#define SERVO_7_PRT                  PORTD     // Servo-7 an Port D Data Register
//#define SERVO_7_BIT                  PD6       // Servo-7 an PD7 = PIND7 = Bit7

//----------------------------------------------------------------------------------------------------------------------
// ADNS-5020-Definition                                                                                              019
// Anwendung in den Projekten (indirekt ueber servo_init() im Hauptprogramm main.c):
// Servo_Control // Servo_Control_8C
//----------------------------------------------------------------------------------------------------------------------

//#define ADNS5020_RESOLUTION       1000         // Resolution (500 or 1000 counts per inch)

//----------------------------------------------------------------------------------------------------------------------
// IRDMS - Definitionen fuer den Sharp IRDMS (InfraRed Distance Measurment Sensor)                                   020
// Anwendung im Projekt (direkt ueber das Hauptprogramm main.c) IRDMS_GP2xxx
//----------------------------------------------------------------------------------------------------------------------

//#define IRDMS_ADC_CHANNEL 5                    // ADC channel for Sharp IR sensor

//#define IRDMS_UPPER_LIMIT_DDR        DDRC      // IRDMS-Upper-Limit an Port C Data Direction Register
//#define IRDMS_UPPER_LIMIT_PRT        PORTC     // IRDMS-Upper-Limit an Port C Data Register
//#define IRDMS_UPPER_LIMIT_BIT        PC0       // IRDMS-Upper-Limit an PC0 = PINC0 = Bit0

//#define IRDMS_LOWER_LIMIT_DDR        DDRC      // IRDMS-Lower-Limit an Port C Data Direction Register
//#define IRDMS_LOWER_LIMIT_PRT        PORTC     // IRDMS-Lower-Limit an Port C Data Register
//#define IRDMS_LOWER_LIMIT_BIT        PC1       // IRDMS-Lower-Limit an PC1 = PINC1 = Bit1

//#define IRDMS_IIR_COEFF              0.95
//#define IRDMS_IIR_DIFF_COEFF (1.0 - IRDMS_IIR_COEFF)

//#define IRDMS_DEFAULT_UPPER_LIMIT  900
//#define IRDMS_DEFAULT_LOWER_LIMIT  700
//#define IRDMS_DEFAULT_HYSTERESE      5

//----------------------------------------------------------------------------------------------------------------------
// PPM-Decoder-Definitionen                                                                                          021
// Anwendung im Projekt (indirekt ueber ppm_init() im Hauptprogramm main.c) PPM_Decoder
//----------------------------------------------------------------------------------------------------------------------

//#define PPM_CHANNELS                 9
//#define PPM_BUFFER_ITEMS             4

//----------------------------------------------------------------------------------------------------------------------
// WII-Position-Data-Filter-Definitionen                                                                             022
// Anwendung im Projekt (indirekt ueber wii_nunchuk_init() im Hauptprogramm main.c) WII_Nunchuck
//----------------------------------------------------------------------------------------------------------------------

//#define WII_IRS_IIR_COEFF            0.75
//#define WII_IRS_IIR_DIFF_COEFF (1.00001 - WII_IRS_IIR_COEFF)

//----------------------------------------------------------------------------------------------------------------------
// DCF77-Definitionen (Zeitsignalsender DCF77 - Langwellensender in Mainflingen)                                     023
// Anwendung in den Projekten (indirekt ueber dcf_init() im Hauptprogramm main.c):
// Chrono_Term // DCF77
//----------------------------------------------------------------------------------------------------------------------

//#define DCF_SECOND_INDICATOR_DDR     DDRC      // DCF-Sekunden-Indikator an Port C Data Direction Register
//#define DCF_SECOND_INDICATOR_PRT     PORTC     // DCF-Sekunden-Indikator an Port C Data Register
//#define DCF_SECOND_INDICATOR_BIT     PC0       // DCF-Sekunden-Indikator an PC0 = PINC0 = Bit0

//----------------------------------------------------------------------------------------------------------------------
// Rotary-Encoder-Definitionen                                                                                       024
// Anwendung in den Projekten (indirekt ueber servo_init() im Hauptprogramm main.c):
// Rotary_Encoder // Servo_Control_8C
//----------------------------------------------------------------------------------------------------------------------

//#define RE_SIGNAL_90_DDR             DDRD      // Rotary-Encoder-Signal an Port D Data Direction Register
//#define RE_SIGNAL_90_PRT             PORTD     // Rotary-Encoder-Signal an Port D Data Register
//#define RE_SIGNAL_90_PIN             PIND      // Rotary-Encoder-Signal an Port D Input Pins Address
//#define RE_SIGNAL_90_BIT             PD3       // Rotary-Encoder-Signal an PD3 = PIND3 = Bit3

//#define RE_PUSHBUTTON_DDR            DDRD      // Rotary-Encoder-Taste an Port D Data Direction Register
//#define RE_PUSHBUTTON_PRT            PORTD     // Rotary-Encoder-Taste an Port D Data Register
//#define RE_PUSHBUTTON_PIN            PIND      // Rotary-Encoder-Taste an Port D Input Pins Address
//#define RE_PUSHBUTTON_BIT            PD4       // Rotary-Encoder-Taste an PD4 = PIND4 = Bit4

//#define RE_DOUBLE_COUNT // Comment out for single resolution

//----------------------------------------------------------------------------------------------------------------------
// Port-Expander-Definitionen                                                                                        025
// Anwendung im Projekt (indirekt ueber pe_init() im Hauptprogramm main.c) RC5_Relais
//----------------------------------------------------------------------------------------------------------------------

// Clock pin
//#define PE_CLOCK_DDR                 DDRD      // Port-Expander-Takt an Port D Data Direction Register
//#define PE_CLOCK_PRT                 PORTD     // Port-Expander-Takt an Port D Data Register
//#define PE_CLOCK_PIN                 PD5       // Port-Expander-Takt an PD5 = PIND5 = Bit5

// Data pin
//#define PE_DATA_DDR                  DDRD      // Port-Expander-Daten an Port D Data Direction Register
//#define PE_DATA_PRT                  PORTD     // Port-Expander-Daten an Port D Data Register
//#define PE_DATA_PIN                  PD6       // Port-Expander-Daten an PD6 = PIND6 = Bit6

//#define PE_SIGNAL_DELAY_US           1

//----------------------------------------------------------------------------------------------------------------------
// DS1820-Simulation-Definitionen                                                                                    026
// Anwendung in den Projekten (indirekt ueber ds1820_init() im Hauptprogramm main.c):
// Chrono_Term // DS1820_Network
//----------------------------------------------------------------------------------------------------------------------

//#define DS1820_TEMP_RANGE            (float)(360.0)
//#define DS1820_ZERO_VALUE            (float)(110.0)
//#define DS1820_LSB                   0
//#define DS1820_MSB                   1
//#define DS1820_COUNT_REMAIN          6
//#define DS1820_COUNT_PER_C           7

//----------------------------------------------------------------------------------------------------------------------
// Extern angesprochene globale Variable
//----------------------------------------------------------------------------------------------------------------------
extern volatile U08 app_reset_source;

//----------------------------------------------------------------------------------------------------------------------
//Funktions-Prototypen: FUNKTIONEN ZUR INITIALISIERUNG DER APPLICATION (Anwendung)
//----------------------------------------------------------------------------------------------------------------------
void app_init(void);                                         // Initialize application
void app_set_watchdog_prescaler(tWDT_PRESCALE wdt_prescale); // Set watchdog prescale

//----------------------------------------------------------------------------------------------------------------------
// Mit #endif endet jede Header-Datei
//----------------------------------------------------------------------------------------------------------------------
#endif

