/* * PorscheATMEGA16.c * * Created: 11.01.2014 00:41:47 * Author: Tim */ ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////// INCLUDES ///////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include #include /////////////////////////////////////////////////////////// ////////////////////// !ACHTUNG! //////////////////////// ///////// Auf 8 MHz für ATMEGA16A eingestellt! ////////// /////////////////////////////////////////////////////////// #include "util/delay.h" #define ABBLENDLICHT_VORNE PD1 #define ABBLENDLICHT_HINTEN PD4 #define RUECKFAHRLICHT PD6 #define WARNBLINKER PD0 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////// VARIABLES //////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// volatile uint8_t blaulicht_an = 0; volatile uint8_t warnblinker_an = 0; volatile uint8_t rueckfahrt_ja = 0; volatile uint8_t vorfahrt_ja = 0; volatile uint8_t elev_up_reset_needed = 0; volatile uint8_t elev_down_reset_needed = 0; volatile uint8_t ovr_count_warnb = 0; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////// FUNCTIONS //////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// void init_io() { ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////Initialisiere alle DDRs und Ports//////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Blaulicht LEDs: PA0-PA7, PB0, PC0-PC7, PD7 // Blaulicht DDRs als Ausgang DDRA |= ( (1 << DDA0) | (1 << DDA1) | (1 << DDA2) | (1 << DDA3) | (1 << DDA4) | (1 << DDA5) | (1 << DDA6) | (1 << DDA7) ); DDRB |= (1 << DDB0); DDRC |= ( (1 << DDC0) | (1 << DDC1) | (1 << DDC2) | (1 << DDC3) | (1 << DDC4) | (1 << DDC5) | (1 << DDC6) | (1 << DDC7) ); // Warnblinker LEDs: PD0 // Warnblinker DDR als Ausgang DDRD |= (1 << DDD0); // Abblendlicht LEDs: Vorne PD1 und Hinten PD4 // Abblendlicht DDR als Ausgang DDRD |= ( (1 << DDD1) | (1 << DDD4) ); // Bremslicht LEDs (extra LEDs + kleiner Widerstand für Abblendlicht hinten): PD5 // Bremslicht DDR als Ausgang DDRD |= (1 << DDD5); // Rückfahrlicht LED: PD6 // Rückfahrlicht DDR als Ausgang DDRD |= (1 << DDD6); // Interrupt Pins als Eingänge um diese auszulesen //DDRD &= ~( (1 << DDD2) | (1 << DDD3) ); //DDRD |= ( (0 << DDD2) | (0 << DDD3) ); } void init_timer() { // 8-Bit Timer 0 konfigurieren für PWM-Messung // CPU Takt: 8 MHz // Vorteiler auf 256: Timer inkrementiert alle 32 us TCCR0 = (1< 57) { PORTD |= (1< 57) { PORTD |= (1<