wieso verschwendest du soviel zeit damit den takt über I2C herzustellen nehm doch dafür direkt die AVR pins!!!!!
und genau deswegen kann ich nich sagen obs schnell genug ist usw. du verwendest zeit in die sub zu springen (ist ja beim AVR rechtl nagsam in den standartoptionen da erst alle register gespeichert/widerhergestllet) werden
mach einfach liber direkt über die pins vom AVR die signale und dirket die pause rein! auf 2us secs ssetzen fürn anfang und des passt!
und wieso machst du ne schleife in erdu auf die genau pixelzahl 128*128 wartest? es gibt auch bilder mit weniger Pixeln!
Aber allgemein gesagt du scheinst überhaupt nich auf dei TImings der Cam geschaut zu haben, jeder Pegelwechsel hat ne definierte Periode!
Nochmal zu der Sache :
Denke es handelt sich einfach um einen Konstruktionsfehler meines Cam-Boards. Werde es wohl nicht hinbekommen die Cam nur über diese beiden I2C Bausteine in den Bus zu bekommen, da muss wohl ein eigener µC her...
Falls mich niemand (tolles wortspiel) vom Gegenteil überzeugen kann, werd ich mir wohl mal heut abend ein neues Board aufbauen um die Auslese Zeit zu verkürzen, d.H. mit einem µC und nur dem I2C AD-Wandler...
Zu den Timings:
Ich habe am Anfang sehr genau versucht die Timings "nachzubauen".
Als ich aber keine guten Ergebnisse erhalten habe, habe ich begonnen mit den Timings rumzuspielen. Wie ich bei dem Code beigeschrieben habe ist es total egal wie ich die Timings einstelle, und wo ich noch delays einbaue, das Ergebniss ist immer das gleiche.Desweiteren wusste ich auch nicht wie lange die jeweiligen Operationen auf den I2C Bus dauern...(Anscheinend dauern diese ja länger als die 2us, da ich ja weit länger als die 2sek. für ein Auslesen des Bildes benötige)
Zu den for-Schleifen:
Habe ja normalerweise auch eine While-Schleife benutzt, die solange lief wie die Cam ein Bild sendete(was 128x128 Pixeln entsprach).
Die For-Schleifen habe ich nur genommen, um an der Stelle ein wenig Zeit zu sparen, dadurch das ich diese Überprüfung (Abfrage der Porterweiterung übern I2C-Bus) weglasse.
Werde aber deinen Rat befolgen und die Timings direkt über einen µC machen
(siehe vorherige Antwort).
So, ich habe jetzt mal wieder größer getestet.
Habe die Cam direkt an den µC angeschlossen (Atmega 8, 4Mhz, 9600Baud).
Als AD-Wandler dient aber immernoch der PCF8591.
Habe eigenen Code benutzt, sowie den für mich angepassten Code von Uli (danke für den Code!). Die Ergebnisse sind die selben:
Das Auslesen eines Bildes dauert immernoch deutlich über 10 Sek.
Schuld scheint das UART zu haben, wenn ich die Pixel nicht übers UART versende dauert das Auslesen nur 3Sek.
Daraufhin habe ich einfach mal 128*128 Werte unabhängig von der Cam per UART verschickt, dies dauerte ca. 15Sek.!!!!!!!!!! bei 9600Baud
Kann so also garnicht auf eine kurze Zeit kommen...
Die Bilder an sich sind zum Großteil Müll, nur ein kleiner Teil am Rand (der "eingerissene" Teil) zeigt ein Abbild der Umgebung. Habe Bilder die eindeutig den Trafo meiner Deckenlampe zeigen(siehe Anhang).
Mr. Niemand, du meintest das du am Anfang auch dieses Einreißen hattest.
Ein Verändern der Pixelverstärkung bringt zwar schöne Konturverbesserungen, allerdings bleibt die Größe des Eingerissenen Bereiches die selbe.
Wie konntest du das Problem abschalten?
Liegt dies an dem Timing?
Was passiert bei dir, wenn du ein Bild in 15sek aussliest?
jo dieses einreisen am anfang hat mich davon abgebracht total auszuflippen und zu fluchen weil es net funzt, weil ich durch zufall gesehen habe das es ein teil der umgebung ist.
Selbst so ne lange lesedauer sollte noch machbar sein.
Wenn das der Trafo der Deckenlampe ist, war die Lampe dann an?
Mit den Beleuchtungszuständen meines Zimmers hat es nichts zu tun. Die Lampe war dieganze Zeit aus, die Halogenstrahler sind auf den Bildern auch garnicht erkennbar, weil sie nicht im Bereich des Bildes liegen.Habe die ersten Bilder meiner Lampe tagsüber (Zimmer im Sonnenlicht) gemacht. Abends als es dunkel war habe ich die Belichtungszeit erhöht, und hatte die selben Ergebnisse.
Hast du denn dieses Einreißen nur dadurch wegbekommen das du an der Belichtungszeit oder der Pixelverstärkung rumgespielt hast?
am anfang hab ich nur die helligkeit im zimmer verrringert. und bei ziemlich wenig licht im zimmer kam dann ein erstes erkennbares bild, dann hab ich die Pixelverstärkung geändert!°
Was meinst du mir 01?
Das steht in dem Datenblatt für die Kamera auch drin, du meinst doch sicher 0x01 also = 1, oder?
Hier sind erstmal meine Einstellungen:
Reg0 = 0x80
Reg1 = 0x14
Reg2 = 0x00
Reg3 = 0x0E // bei dieser Belichtungszeit ist das Bild am besten (siehe Anhang)
Reg4 = 0x01
Reg5 = 0x00
Reg6 = 0x01
Reg7 = 0x01 // möglichst niedirge Vref, bei 0x00 funktionierte es irgendwie garnicht
Ich bekomme es nicht hin eine Belichtungszeit zu finden, bei der ich ein sauberes Bild bekomme. Die unteren Bilder sind bei normaler Beleuchtung gemacht worden, und es gab keine Lichtquelle die die Cam blenden konnte...
Lesezeichen