// Titel : Analog-Digital //------------------------------------------------------------------------- // Funktion : Analog Wandler. // Schaltung : //------------------------------------------------------------------------- // Prozessor : ATmega328P // Takt : 3686400 Hz // Sprache : C // Datum : 19.7.2017 // Version : 1.0 // Autor : Peter // Programmer: // Port : //------------------------------------------------------------------------- // created by myAVR-CodeWizard //------------------------------------------------------------------------- // #define F_CPU 3686400 #include #include #define an_SA PORTD |=0b00010000 // D4 Out an #define aus_SA PORTD &=0b11101111 // D4 Out aus #define an_TA PORTD |=0b00100000 // D5 Out an #define aus_TA PORTD &=0b11011111 // D5 OUT aus #define an_RA PORTB |=0b00000010 // B1 OUT an #define aus_RA PORTB &=0b11111101 // B1 OUT aus //------------------------------------------------------------------------ // Initialisierungen //------------------------------------------------------------------------ void init() { // Ports initialisieren cbi(DDRC,1); // PORTC1 auf Eingang ohne PullUp sbi(DDRD,4); // PORTD4 auf Ausgang sbi(DDRD,5); // PORTD5 auf Ausgang sbi(DDRB,1); // PORTB1 auf Ausgang ADMUX=0xE1; // Port, Referenzspannung und Auflösung ADCSRA=0xED; // Modus, Interrupt und Start //--- Interrupts erlauben --- sei(); } int daemmerungStatus =0; //-------------------------------------------------------------------- // ADC_vect - Interrupt bei ADC Wandlung komplett //-------------------------------------------------------------------- ISR(ADC_vect) { // Beginn der Ereignisbehandlung unsigned char wert=ADCH; // Einlesen des Analogwertes if ((wert < 5)) { daemmerungStatus =1; } if ((wert > 18)) { daemmerungStatus =0; } } ///////////////////////////////////////////////////////////////////////////// // Main-Funktion ///////////////////////////////////////////////////////////////////////////// main() { init(); // Initialisierungen while (1) // Mainloop-Begin { if (daemmerungStatus==1) { aus_SA; an_RA; an_TA; } else { an_SA; aus_RA; aus_TA; } } // Mainloop-Ende }