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