ALso ich hab mir alles nochmal sehr genau angesehen und dabei festgestellt, dass eine hälfte des Diodenarrays von mir falschrum eingelötet wurde. Hab die Dioden also richtig herum positioniert. Mit dem +5V Netz sind die aber gar nicht verbunden und so besteht das Problem weiterhin.

Widerstandsarray, ICs und Elkos sind alle richtigrum drin!

Edit:
So ich hab nochmal einen kleinen Test gewagt.

Wenn ich +UB und Vcc an einen Batterieblock anschließe (etwa 5,5V), dann lässt sich folgendes beobachten:
1. Ist der Takt Pin (Pin 1) nicht angeschlossen, dann vibriert der Motor, der L298 wird ordentlich warm.
2. Liegt an dem Takt PIN (Pin 1) 5V an (angeschlossen an Vcc), dann vibriert der Motor nicht. Der L298 wird ordentlich warm.
3. Liegt an dem Takt Pin 0V an (angeschlossen auf GND), dann vibriert der Motor nicht, der L298 erhitzt sich wieder.
4. Schalte ich einen uC mit an, der einen Ausgang immer wieder an und aus schaltet und an den Ausgang kommt der Takt Pin, dann vibriert der Motor im Takt, also immer wenn der Ausgang ein ist. Nach kurzer Zeit stürzt der uC ab und der Ausgang wird sehr schnell getoggelt.

Dieses Verhalten ist für mich völlig unverständlich!

Das Programm des uC:
Code:
// 
// Programm zum Test der Schrittmotorsteuerung RN Stepp297
// von Jakob Garbe (2009)
//
// F_CPU = 16 000 000
// PB1 sollte in immer kürzer werdenden Intervallen ein und aus geschaltet werden.



#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <util/delay.h>


volatile uint8_t a;
volatile uint8_t SubCount;
volatile uint8_t Sekunden;
volatile uint8_t Flag;


ISR (TIMER1_COMPA_vect){
	SubCount++;
	if ( SubCount == a){                // durch verringern von a wird Flag
		a=a-1;                            // schneller gesetzt und der Port
		if(a<=1){                        // schneller getoggelt
			a=60;
		}
		SubCount = 0;
		Sekunden++;
		Flag = 1;
	}
}

int main(void)
{
    // *** Timer-Einstellung ***
	
	TCCR1B = (1 << WGM12) | ( 1 << CS11);	// CTC-Mode Enable / Prescaler = 8
	TIMSK = (1 << OCIE1A);					// Compare A Match Interrupt Enable

	OCR1A = 19999;							// Interrupt jede 1/100 Sekunde

	sei();									// Global Enable Interrupts

	// *** Initialisierungen ***
	
	DDRB = (1 << PB1);
		
	a=60;
	SubCount=0;
	Sekunden=0;
	

    while(1)
    {
		if ( Flag == 1)
		{
			PORTB ^= (1<<PB1);
			Flag = 0;	
		}
	}
 
    return 0;
}