Liste der Anhänge anzeigen (Anzahl: 1)
Gameboy Camera, Probleme bei dem Auslesen des Bildes
Hi!
Ich versuche momentan eine Cam für meinen Roboter zu bauen, die ich direkt über den TWI ansteuern kann.
Habe eine Schaltung gebaut, die aus einer GB-Cam, einer PCF8574P Porterweiterung sowie den PCF8591 AD-Wandler besteht.
Dank des wirklich guten Tutorials von
http://www.destroy-yourself.de/julia.../amr/gbcam.htm
schien das Ansteuern der Cam recht einfach.
So, und nun zum Problem:
Reset'te die Cam, lade die Register und warte dann darauf das der READ-Pin auf High geht.
Dies passiert nach so ca. 15sek. , unabhängig davon wie ich mein delay einstelle... (1. Frage dauert das bei euch auch so lange?)
Dann lese ich solange die Spannung am Vout aus, bis READ wieder aus low zurück geht (und dies ist nach 128x128 Pixeln der Fall).
Soweit alles ok, nur die Spannungen die ich auslese sind konstant bei nahezu 5V. Messe also die Versorgungsspannung der Cam.
Der AD-Wandler funktioniert richtig (habe nach dem Bau der Schaltung als erstes ein paar Spannungen gemessen).
Ein Nachmessen der Spannung an Vout ergibt 4.95V.
Besitze kein Oszi, kann also nicht testen ob es sich um ein "getaktetes" Signal handelt.
Hatte jemand schonmal die selben Probleme?
Oder sogar Ahnung woran das liegen könnte?
mfG
Batti
Liste der Anhänge anzeigen (Anzahl: 1)
RE: SourceCode
Hier der noch nicht ganz Fertige aber funktionstüchtige Source Code!
Mfg Ulrich
Liste der Anhänge anzeigen (Anzahl: 3)
Habe jetzt mal bisschen rumgebastelt, so dass man sehen kann was für "Bilder" die Cam schießt.
Die Belichtungszeit muss ich absolut minimal halten, damit die Cam nicht gleich ein weißes Bild schießt (d.H. Register 2 = 0, Register 3 max 5).
Habe mal ein paar Shots gemacht, wie man sieht ist das 0_0 (Register2=0 Register 3 = 0) das beste Ergebnis, da es am dunkelsten ist.
Danach "reißt" das Bild immer mehr ein...
Kann jemand dieses Ergebniss deuten?
Komme da momentan überhaupt nicht mehr mit klar, überlege schon ob ich nicht eine CMU-Cam kaufen sollte....
mfG
Batti
Liste der Anhänge anzeigen (Anzahl: 1)
Hier der benutzte Wichtige Code, wie gesagt die Timings sind egal.
Kann da einstellen was ich will.
Die delay_us Funktion sieht wie folgt aus:
void delay_us( unsigned short us )
{
while( us ) us--;
}
Nachtrag:
Ohne die Übertragung per Uart brauch der µC fast genau so lange auch über 10 sek.
Ich glaube es liegt einfach daran, das ich 2 unterschiedliche Module per I2C Ansprechen muss, und immer wieder eine Start-Bedingung auf den Bus legen muss, und zum Schluss eine Stop-Bedingung.
Die Zeit dafür scheint einfach zu lange zu dauern, besonders weil man ja immer warten muss bis der Slave antwortet...