Hallo
wenn ich an der chinch buchse meines rp6 mit dem multimeter mess hab ich bei licht um die 1,4volt und bei abgedecker kammerea um die 0,4volt
Miss mal am Ende des Verbindungskabels, 1,4V bringt die Kamera nur im "Leerlauf" ohne 75Ohm-Last.
Wie lang ist denn die Verbindungsleitung zwischen RP6-Cinch und TV? Das Signal ist scheinbar zu schwach für die Zeilenansteuerung des TV.
Wenn ich meine Verbindungsleitung in den TV-Eingang stecke, kann ich am freien Ende mit dem Ohmmeter die 75Ohm messen. Ich weiß aber nicht, ob dass immer so messbar ist.
Das einfachste Testprogramm ist im Moment das ohne Dateierzeugung. Es werden nur 254 Werte nacheinander eingelesen und zum Terminal gesendet. Start ist Bildschirmzeile 100:
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; // oje
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);
}
(Das ist die Kopie von hier)
Gruß
mic
Lesezeichen