Moin!
Bin wohl noch nicht ganz wach
Vielen Dank für's schauen, ich fasse nochmal zusammen :
Das doppelte Einlesen war nur ein Unfall, eigentlich soll das so aussehen:
Code:
void grab()
{
	unsigned int cnt;
	unsigned char pixel;
	uint8_t daten[512],*zeiger;
	zeiger=&daten[0];

	cli();

	while (ADCH > 30); while (ADCH < 40); //Zeile abwarten 

	
	for (cnt=0;cnt<512;cnt++)
	{
		*zeiger++=ADCH;
	}
	
	for (cnt=0;cnt<512;cnt++)
	{
		pixel=daten[cnt];
		txd(pixel);
	}
}
Also ich warte im Moment eigentlich den Anfang einer (beliebigen) Zeile ab und erfasse danach einfach 512 bytes, das müßten ja ein paar Zeilen sein. Diese will ich mir erst einmal am PC (also in Rohform) anschauen.
Interrupts brauche ich im Moment nicht, die Funktion 'txd()' ist ein Mini Software UART, der einfach das übergebene Byte an 'nem Pin rausschreibt und irgendwas anderes macht der µC im Moment auch erstmal nicht.

Automatic Gain Control kann man bei dem Modul mit einem Pin an und abschalten, zur Zeit ist das deaktiviert, als Kontrolle lasse ich mir das Bild über den Video-In von meinem Compi hier anzeigen, das sieht auch richtig aus. Den Beginn einer Zeile kann ich auch erkennen, aber den Anfang des Bildes krieg ich nicht raus.
Folgendermaßen habe ich mal versucht, dahinterzusteigen :
Code:
void synctest()
{
	uint8_t h_sync;
	uint8_t daten[512];
                unsigned int cnt;
	cli();

	//auf bildanfang warten
	for (cnt=0;cnt<512;cnt++)
	{
		h_sync=0;
		while (ADCH > 50); // Zeile abwarten	
		{
			while (ADCH < 50) h_sync++;	//Syncs zählen
		}
		daten[cnt]=h_sync;
	}

	//debugging...
	for (cnt=0;cnt<512;cnt++)
	{
		txd(daten[cnt]);
	}
}
Damit zähle ich ja quasi die Dauer der Sync-signale, und bei 512 Messungen sollte doch eigentlich immer mindestens ein Bildrücklauf vorhanden sein, richtig? Naja, da ich morgen arbeiten muß, werde ich mich den Daten wohl morgen Abend wieder widmen.

Vielen Dank für die Ausführungen!!

MfG Volker