Ausschnitte aus einem Sourcecode zum jitterfreien Einlesen des AD-Wandlers im ATmega16: SIGNAL(SIG_OUTPUT_COMPARE0) /* TimerInterrupt 0: 16000 Hz // Sampling-Interrupt und Debugging-Sampleausgabe (der ADC synchronisiert auf diesen Timer - siehe Initialisierung) */ { adc = inw(ADCL); // ADC-Wert einlesen // // und anschließend in einen Puffer schreiben (...) // bzw. weiter verarbeiten (hier nicht dargestellt) } // ADC initialisieren // outp(0x00, PORTA); outp(0xFE, DDRA); outp(0x60, SFIOR); // ADC free running, synced to timer-0-outp-comp outp(0xA5, ADCSRA); // ADC enable, prescaler 1/32, auto trigger outp(0x20, ADMUX); // select ADC ch. 0, select AREF, left adjust // Timer0-Outputcompare-Interrupt initialisieren // outp(0, TCNT0); // Reset Timer outp(124, OCR0); // 16,000kHz => Output Compare Reg. Timer 0 outp(0x02|(1<