
#define F_CPU 1000000										// int.Takt auf 1MHz gestellt
#include <avr/io.h>
#include <util/delay.h>

// SpgUeberwachung // General-Vorgaben (Präprozessor-Makro)
#define SCHWELLE_OBER_SPG (11.8)							// Obere Schwellwert-Spg.
#define SCHWELLE_UNTER_SPG (10.8)							// Untere Schwellwert-Spg.
#define SCHWELLE_LAD_SPG (13.0)								// Oberer Schwellwert der Ladespannung
#define PORT_BATT_SPG (0)									// überwachter Analog-Port, (x)...ADCx, Bsp: 1 = ADC1
#define PORT_LADE_SPG (1)									// überwachter Analog-Port, (x)...ADCx, Bsp: 1 = ADC1

#define PORT_BATT_OUT (PORTA,PA4)							// Ausgang Batterie Ein/Aus

#define WARTE_LED_WECHSEL (1000)							// Übergangszeit 0-65535 [ms], Sprung Led_high <-> Led_low
#define WARTE_MESS_INTERVALL (100)							// Wartezeit Messwertauswertung, 0-65535 [ms]
#define MITWERT_INTERVALL (0)								// Wiederholzeit 0-255[us], bei starkem Signalrauschen
#define MITWERT_DURCHLAUF (100)								// Schleifenanzahl 0-255[us], höher=genaueren Mittelwert
#define BLINK_FREQ (200)									// Blink-Frequenz 0-65535 [ms]

// Berechnungen (Präprozessor-Makro)
#define AUSGANG_SET_HIGH(port,mask) ((port) |= (1<<mask))	// Ausgangs-Port einschalten
#define AUSGANG_SET_LOW(port,mask) ((port) &= ~(1<<mask))	// Ausgangs-Port ausschalten
#define AUSGANG_TOGGLE(port,mask) ((port) ^= (1<<mask))		// Ausgangs-Port togglet Ein/Aus

#define SCHWELLE_OBER_BEREICH (int16_t)(SCHWELLE_OBER_SPG*1024/15)	// oberen Spg-Schwellwert definieren, Formel: OW.MBg*AL/MBg, wird vom Compiler nur ein mal berechnet
#define SCHWELLE_UNTER_BEREICH (int16_t)(SCHWELLE_UNTER_SPG*1024/15)// unteren Spg-Schwellwert definieren, Formel: UW.MBg*AL/MBg, wird vom Compiler nur ein mal berechnet

#define LED_HIGH (AUSGANG_SET_HIGH(PORTA,PA5)); (AUSGANG_SET_LOW(PORTA,PA6)); (AUSGANG_SET_LOW(PORTA,PA7))	// LED_high (Spg. Oberbereich) ein, Rest aus
#define LED_MID (AUSGANG_SET_LOW(PORTA,PA5)); (AUSGANG_SET_HIGH(PORTA,PA6)); (AUSGANG_SET_LOW(PORTA,PA7))	// LED_mid (Spg. Mittelbereich) ein, Rest aus
#define LED_LOW (AUSGANG_SET_LOW(PORTA,PA5)); (AUSGANG_SET_LOW(PORTA,PA6)); (AUSGANG_SET_HIGH(PORTA,PA7))	// LED_low (Spg. Unterbereich) ein, Rest aus
#define LED_OFF (AUSGANG_SET_LOW(PORTA,PA5)); (AUSGANG_SET_LOW(PORTA,PA6)); (AUSGANG_SET_LOW(PORTA,PA7))	// alle LEDs werden gelöscht

#define BATT_ON (AUSGANG_SET_HIGH(PORT_BATT_OUT))			// "Batterie"-Ausgang ein
#define BATT_OFF (AUSGANG_SET_LOW(PORT_BATT_OUT))			// "Batterie"-Ausgang aus

//#define BATT_ON (AUSGANG_SET_HIGH(PORTA,PA4))				// "Batterie"-Ausgang ein
//#define BATT_OFF (AUSGANG_SET_LOW(PORTA,PA4))				// "Batterie"-Ausgang aus

