//// Impulse erzeugen mittels Timer Interrupt //////////// #ifndef F_CPU /* prevent compiler error by supplying a default */ #define F_CPU 1000000UL #endif #include #include volatile char Pulslaenge = 0; // Volatile aufgrund von Interrupt char S1 = 0; // Impulssignal char ImpulseStarten = 1; // Impulserzeugung starten mit PD4 ////////////////////////////////////////////////////////////////////////////////////////////// // ADC auslesen: ISR(ADC_vect)-Routine wird ausgeführt, wenn ADC Wandlung fertig ist! /////// ////////////////////////////////////////////////////////////////////////////////////////////// ISR(ADC_vect) { Pulslaenge = ADCH; // Nur die obersten 8 Bit werden übernommen } /////////////////////////////////////////////////////////////////////////////////////////////// // Timer0 interrupt für ADC : alle 5 ms wird der ADC gestartet! /////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////// ISR(TIMER0_OVF_vect ) { ADCSRA |= (1< kalkuliere nächstes Signal ///////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////// ISR(TIMER2_OVF_vect ) { //Impulse starten if (ImpulseStarten) { ___ ___ if (S1==1) { S1 = 0; } // Mit jedem neuen Interrupt wird entweder High oder Low erzeugt __| |___| |__ else { S1 = 1; } } // Ansonsten mach nix else if (!ImpulseStarten){;} if (S1) { PORTD |= (1<