diff -Nru Flash.orig/default/Makefile Flash/default/Makefile
--- Flash.orig/default/Makefile	2012-07-24 19:03:02.000000000 +0200
+++ Flash/default/Makefile	2013-03-27 03:05:48.000000000 +0100
@@ -4,7 +4,8 @@
 
 ## General Flags
 PROJECT = Synthesizer-Flash
-MCU = atmega328p
+MCU ?= atmega328p
+F_CPU ?= 20000000UL
 TARGET = Synthesizer-Flash.elf
 CC = avr-gcc
 
@@ -15,7 +16,7 @@
 
 ## Compile options common for all C compilation units.
 CFLAGS = $(COMMON)
-CFLAGS += -Wall -gdwarf-2 -std=gnu99 -DF_CPU=25000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
+CFLAGS += -Wall -gdwarf-2 -std=gnu99 -DF_CPU=$(F_CPU) -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
 CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d 
 
 ## Assembly specific flags
diff -Nru Flash.orig/Synth_config.h Flash/Synth_config.h
--- Flash.orig/Synth_config.h	2012-07-24 18:43:08.000000000 +0200
+++ Flash/Synth_config.h	2013-03-27 03:07:57.000000000 +0100
@@ -11,7 +11,8 @@
 #warning "F_CPU wird auf 16Mhz gesetzt."
 #endif
 
-#if defined(__AVR_ATmega48__)		\
+#if defined(__AVR_ATmega8__)		\
+ || defined(__AVR_ATmega48__)		\
  || defined(__AVR_ATmega88__)		\
  || defined(__AVR_ATmega168__)		\
  || defined(__AVR_ATmega328__)		\
@@ -20,7 +21,9 @@
 	#define PWM_PIN 1
 	//#define PWM_DDR DDRB
 	//#define PWM_PIN 2
-#elif defined(__AVR_ATmega164__)	\
+#elif defined(__AVR_ATmega16__)		\
+ || defined(__AVR_ATmega32__)		\
+ || defined(__AVR_ATmega164__)		\
  || defined(__AVR_ATmega324__)		\
  || defined(__AVR_ATmega644__)		\
  || defined(__AVR_ATmega1284__)
@@ -42,15 +45,22 @@
  * Timer
  */
 
-#define TIMER1				//Timer auswählen
-#define PWMA				//PWM-Channel auswählen (A/B)
+#define TIMER1				//Timer auswaehlen
+#define PWMA				//PWM-Channel auswaehlen (A/B)
 #define PWM_REG OCR1A		//PWM-Register
 #define PWM_REGL OCR1AL		//PWM-Low-Register
 #define PWM_REGH OCR1AH		//PWM-High-Register
 
-//Hier den Code für die (De-)Aktivierung des ausgewählten Timers eintragen
+//Hier den Code fuer die (De-)Aktivierung des ausgewaehlten Timers eintragen
+#if   defined(__AVR_ATmega8__) \
+   || defined(__AVR_ATmega16__)  \
+   || defined(__AVR_ATmega32__)
+#define START_SYNTH() TIMSK |= (1<<OCIE1A)
+#define STOP_SYNTH() TIMSK &= ~(1<<OCIE1A)
+#else
 #define START_SYNTH() TIMSK1 |= (1<<OCIE1A)
 #define STOP_SYNTH() TIMSK1 &= ~(1<<OCIE1A)
+#endif
 
 
 /*
@@ -58,7 +68,7 @@
  */
 
 #define SAMPLE_FREQ		44100				//Samplefrequenz in Hz
-#define CHANNELS		37					//Maximal mögliche Kanäle. Je mehr, desto mehr Leistung wird benötigt
+#define CHANNELS		37					//Maximal mögliche Kanaele. Je mehr, desto mehr Leistung wird benötigt
 #define BUF_LEN 		128					//Funktioniert zurzeit nur mit 128
 
 
@@ -118,7 +128,7 @@
 #define TOP_V ((F_CPU+SAMPLE_FREQ/2) / SAMPLE_FREQ)
 
 #if TOP_V >= (1<<TIMER_SIZE)
-	#error "F_CPU zu hoch fuer gewählten Timer!"
+	#error "F_CPU zu hoch fuer gewaehlten Timer!"
 #endif
 
 #if TOP_V < 64
diff -Nru Flash.orig/Synthesizer.c Flash/Synthesizer.c
--- Flash.orig/Synthesizer.c	2012-07-24 17:21:06.000000000 +0200
+++ Flash/Synthesizer.c	2013-03-26 23:05:40.000000000 +0100
@@ -25,7 +25,19 @@
 
 	//PWM
 	PWM_DDR |= 1<<PWM_PIN;
-	#if defined(__AVR_ATmega48__)		\
+	#if defined(__AVR_ATmega8__) \
+	 || defined(__AVR_ATmega16__) \
+	 || defined(__AVR_ATmega32__)
+	        TCCR1B = (1<<WGM12) | (1<<WGM13) | (1<<CS10);
+		ICR1 = TOP_V;
+                #if defined(PWMA)
+		        TCCR1A = (1<<COM1A1) | (1<<WGM11);
+			TIMSK = 1<<OCIE1A;
+		#else
+			TCCR1A = (1<<COM1B1) | (1<<WGM11);
+			TIMSK = 1<<OCIE1B;
+		#endif
+	#elif defined(__AVR_ATmega48__)		\
 	 || defined(__AVR_ATmega88__)		\
 	 || defined(__AVR_ATmega168__)		\
 	 || defined(__AVR_ATmega328__)		\
diff -Nru Flash.orig/Synthesizer.h Flash/Synthesizer.h
--- Flash.orig/Synthesizer.h	2012-07-24 17:07:38.000000000 +0200
+++ Flash/Synthesizer.h	2013-03-26 22:18:49.000000000 +0100
@@ -4,7 +4,7 @@
 
 #include <avr/io.h>
 #include <avr/pgmspace.h>
-#include "synth_config.h"
+#include "Synth_config.h"
 
 void synth_init(void);
 void synth_load(uint16_t* data);
