Einfaches Nachladen der Akkus reicht völlig. Volle Akkus werden bei meinem RP6 mit ca. 8,4V gemessen.

Natürlich könnte ich auch schnell mit C/C++ ein neues Proggi schreiben und den Quellcode öffentlich machen.
Ich kann das leider nicht, dafür kann ich in drei Minuten ein passendes Tool ergooglen ;)

Beim cam2bmp-Programm kann man die seriellen Daten auch im RP6Loader betrachten. Allerdings nur, wenn man man nach der Ausgabe den RP6 mit [STRG-R] wieder stoppt um einen Zeilenvorschub zu erzwingen. Beim einfachen Testprogramm sollte man sofort etwas sehen. Obwohl es etwas ungeschickt programmiert ist sollte es trotzdem funktionieren:
Code:
// Kleines Testprogramm zur Funktionsprüfung                            1.4.10 mic

#include "RP6RobotBaseLib.h"

void ADC_Init(void)
{
	extIntOFF(); // schaltet den E_INT1-Port auf Eingang für den ADC

// ADC interne Referenz 2,56V, Ergebniss linksbündig, Kanal ADC4 (E_INT1)
	ADMUX = (1<<REFS1) | (1<<REFS0)  | (1<<ADLAR) | 4;
// setze free running triggern
	SFIOR = (0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);
// kein Interupt, Wandler einschalten, prescaler /2, ADC läuft nun mit 4MHz!
	ADCSRA = (0<<ADIE) | (1<<ADEN) | (0<<ADPS2) | (0<<ADPS1)  | (1<<ADPS0);
// Autotriggern bedeutet jetzt free running aktivieren, altes Flag löschen
	ADCSRA |= (1<<ADATE) | (1<<ADIF);
// Initialisierung starten
	ADCSRA |= (1<<ADSC);
// und noch die empfohlene Initiallesung
	while (!(ADCSRA & (1<<ADIF)));
	ADCSRA |= (1<<ADIF);
}

int main(void)
{
	uint8_t bildspeicher[1024], *bildzeiger; // 1KB * 8Bit Bildspeicher bereitstellen
	uint8_t spalte, zeile, sync, c;

	initRobotBase();
	ADC_Init();
	
	while(1)
	{
		writeString_P("---------------------------\n");
		for(c=0; c<255; c++) // Bildspeicher löschen (mit Byte-Variable)
		{
	   	bildspeicher[c]=bildspeicher[256+c]=\
			bildspeicher[2*256+c]=bildspeicher[3*256+c]=0;
		}

		for(c=0; c<4; c++) // viermal den selben Bereich einlesen
		{
		   bildzeiger=&bildspeicher[256*c]; // Zeiger auf Start des Bildspeicherbereich
		   cli();
			do // Warten auf langen Syncbereich = Bildstart
			{
				sync=0;
				while (ADCH > 20); // warten solange Bilddaten erkannt werden
				while (ADCH < 30) sync++; // Länge des Sync-Signal zählen
			}while (sync < 40); // größer 40 bedeutet Bildstart
		
			zeile=150; // durchhangeln bis Zeile 150
			while(zeile--)
			{
				while (ADCH > 20); // Bilddaten
				while (ADCH < 30); // Sync
			}
		
			spalte=255;
			do *bildzeiger++=ADCH; while(spalte--); // 254 Werte einlesen
			//while(spalte--) *bildzeiger++=ADCH; // dito
			//do *bildzeiger=ADCH; while(*bildzeiger++ > 20); // schneller ;)
			sei();
		}
		
		for(spalte=0; spalte != 255; spalte++) // Alle Durchgänge gemeinsam ausgeben
		{
		   writeInteger(spalte, 10);
		   writeString_P(": ");
		   writeInteger(bildspeicher[spalte], 10);
			writeString_P(" ");
		   writeInteger(bildspeicher[256+spalte], 10);
		   writeString_P(" ");
		   writeInteger(bildspeicher[2*256+spalte], 10);
		   writeString_P(" ");
		   writeInteger(bildspeicher[3*256+spalte], 10);
		   writeString_P("\n");
		}
		while(!(getBumperLeft() || getBumperRight())); // Nochmal? Terminal löschen!
	}
	return(0);
}
Es werden viermal hintereinander ab dem Start der 150. Zeile jeweils 255 Werte eingelesen und dargestellt. Die Ausgabe beginnt mit:
writeString_P("---------------------------\n");

Wenn danach nichts mehr kommt bleibt das Programm irgendwo bei der Syncsuche stecken. Hier könnte man vielleicht mit geänderten Abfragen weiterkommen:
while (ADCH > 25); // Bilddaten
while (ADCH < 35); // Sync