Arduino + OV7670 - Ohne FIFO - Snapshot Lesen

Ich weiß, dass es eine Menge im internet (http://forum.arduino.cc/index.php?topic=159557.0 zum Beispiel) über OV7670 und ich lese viel darüber, aber es scheint etwas fehlt.

Zuerst habe ich einen Blick in die Art und Weise, wie können wir Lesen, pixel für pixel von der Kamera zu bauen, der rechteckig 600 X 480 Bild, und dies war ganz einfach zu verstehen, angesichts HREF, VSYNCH und PCLOCK beschrieben auf die Dokumentation hier: http://www.voti.nl/docs/OV7670.pdf. Ich verstehe XCLOCK als input ich geben müssen OV7670 als eine Art von Zyklus-controller und RESET wäre etwas, um es zurückzusetzen.

Also an diesem Punkt dachte ich, dass die Funktionalität einer solchen Kamera wäre abgedeckt durch die Verdrahtung der folgenden pins:

  • D0..D7 - für die Daten (pixel) in Verbindung mit arduino digital pins 0 bis 7 als EINGANG auf dem arduino-board
  • XCLK - für Kamera-Uhr angeschlossen an arduino digital-pin 8 als AUSGANG vom arduino-board
  • PCLK - für-pixel-clock angeschlossen an arduino digital pin 9 als EINGABE auf dem arduino-board
  • HREF - zu definieren, Wann eine Linie startet /endet, angeschlossen an arduino digital pin 10 als EINGABE auf dem arduino-board
  • VSYCH - zu definieren, Wann ein Rahmen beginnt /endet, angeschlossen an arduino digital pin 11 als INPUT an arduino-board
  • GRD - groud verbunden arduino GRD
  • 3V3 - 3,3-EINGANG angeschlossenen arduino 3,3 v
  • RESET - verbunden mit arduino RESET -
  • PWDN - verbunden mit arduino GRD

Die Umsetzung für einen solchen Ansatz aus meiner Sicht wäre so etwas wie:
Code:

for each loop function do
   write high to XCLK

   if VSYNCH is HIGH 
      return;

   if HREF is LOW 
      return;

   if lastPCLOCK was HIGH and currentPCLOCK is LOW 
      readPixelFromDataPins();

end for

Meine readPixelFromDataPins() im Grunde lese gerade das erste byte (da bin ich einfach nur testen ob ich auch etwas gelesen von der Kamera), und es ist wie folgt geschrieben:

Code:

byte readPixelFromDataPins() {
  byte result = 0;
  for (int i = 0; i < 8; i++) {
    result = result << 1 | digitalRead(data_p[i]);
  }
  return result;
}

Um zu überprüfen, ob etwas gelesen wird, von der Kamera, die ich nur drucken Sie es an die Serielle 9600, die byte-Lesen von Daten-pins als eine Nummer. Aber derzeit bin ich empfangen nur null-Werte. Der code, den ich verwende, um ein Bild abzurufen wird hier gespeichert: https://gist.github.com/franciscospaeth/8503747.

Hat jemand das macht OV7670 Arbeit mit Arduino schon herausfinden, was mache ich falsch? Ich nehme an, ich bin mit dem XCLOCK Unrecht Recht? Was soll ich tun, um es zu arbeiten?

Ich suchte eine Menge und ich habe keine gefunden SSCCE (http://sscce.org/) für diese Kamera mit arduino, wenn jemand es haben, lassen Sie es mich bitte wissen.


Diese Frage ist auf arduino-forum (http://forum.arduino.cc/index.php?topic=211741.0) zu.

Schreibe einen Kommentar