PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gameboy Camera, Probleme bei dem Auslesen des Bildes



Seiten : 1 [2] 3

roboter
28.06.2005, 14:35
Ich benutze schon einen ganz normalen Takt, aber ich habe dein "RUHEMÄßIG" nicht so ganz verstanden und dachte du meinst den XCKPin wenn man gar nichts mit der Kamera macht.

Mit den zwei Takten vor dem Reset muß man anscheinend machen. Wurde mir zumindest in einem anderen Forum so gesagt. Obs stimmt weiß ich nicht, aber schaden kanns ja auch nicht.

tobimc
28.06.2005, 14:39
Hi Roboter!

Hm. Ich werds mal austesten, ob man das braucht...
Soderle! Mal testen!

>>meinst den XCKPin wenn man gar nichts mit der Kamera macht.
Genau das. Den Ruhepegel... :D

Viele liebe Grüße,
Tobi

roboter
28.06.2005, 14:44
Was für Register nimmst du denn im Moment?

Meine 176-179 ist immer noch da...

tobimc
28.06.2005, 14:48
Hi!

Hm. Ich probiere gerade rum...
Ich probiere gerade noch ein paar Registerwerte aus dem Thread.

Welchen Viewer benutz du gerade?

Viele liebe Grüße,
Tobi

tobimc
28.06.2005, 16:10
Hi!

Also wenn ich beide Belichtungsregister auf 255 setze, dann ist das Bild so komisch grauschwarz.
Was interessant ist ist, dass wenn ich beide Register auf 0 setze, dass dann ein kompletely WEIßES Bild rauskommt...

VLG Tobi

roboter
28.06.2005, 17:20
Im Moment benutze ich gar keinen Viewer sondern ein stinknormales Hyberterminal.

Ich werd dann auch nochmal ein bißchen probieren.

tobimc
28.06.2005, 17:59
Hi roboter!

Benutz mal meinen Viewer. Dann kannst ja sehen, was da herauskommt (grau, dunkelgrau, weiss).
Bei mir kommt ein recht helles grau heraus.

Also ich musste jetzt gerade C0 auf 0 setzen, und C1 auf 50.

Gibt kein schlechtes Bild. Allerdings scheint die Cam Pixel in der horizontalen zu vergessen...

Hat die CAM really 128*128 Pixel? Ich habe was von 128*123 in nem DS gelesen...

VLG Tobi

roboter
28.06.2005, 18:28
Also ich habe mal deinen GB-Cam Viewer (beta) 0.4 ausprobiert, aber irgendwie funktioniert der bei mir nicht. Das Programm hängt sich immer auf. Muß ich das irendwas beim benutzen beachten?

tobimc
28.06.2005, 18:32
Hi roboter!

Du musst die GB-Cam Viewer 0.5c beta nehmen.
Und NUR die!
Alle anderen haben nämlich mehr oder weniger schwere Bugs..... :D

So langsam beginnt sich meine CAM wie ein Foto zu verhalten *riesigfreu*
Gerade wars unterbelichtet!!!!!

Viele liebe Grüße,
Tobi

roboter
28.06.2005, 18:41
Wo ist den die 0.5c ???
Ich finde grad nur die 0.5b und die geht bei mir nicht.

tobimc
28.06.2005, 19:24
Hi roboter!

Ooopppsss! Mein Fehler! b natürlich!
Gib mir mal deine Mailadresse.....

Wie muss eigentlcih Verstärkung im verhältniss zum Gewinn stehen?

VLG
Tobi

roboter
28.06.2005, 19:27
Hab dir grad ne pn geschickt O:)

tobimc
28.06.2005, 19:32
Hi
OK.

Sendest du zwischen jedem Pixelwert auch einen Semikolon (ASCII 59)??

VLG Tobi

roboter
28.06.2005, 19:59
Ja das Simikolon sende ich.

Aber irgendwas stimmt noch nicht. Wenn ich C0 und C1 auf 255 setze, bekomme ich Werte, die ungefähr so aussehen:
177;178;178;177;178;177;177;177;179;178;177;176;17 8;177;177;177;

Ich müßte aber eigentlich ein weißes Bild kriegen...

Und das Bild das ich kriege, hab ich mal angehängt:

tobimc
28.06.2005, 20:03
Hi!

Hm. Sieht doch garnicht so schlecht aus...

Sagmal, wie bekommst du das Bild in das Ram des 8515?
Du bezeichnest in deinem Programm einen XRAM-Bereich, der für das XRAM viel zu groß ist!!

Probier vllt. erst mal auslesen->verschicken ohne Zwischenspeichern...

VLG
Tobi

roboter
28.06.2005, 20:07
Ich benutze einen externen 32k Ram.
Darum nehme ich ja auch den 8515 weil der eine Schnittstelle dafür hat.

Und ein Array mit 16284 Bytes passt doch in 32K rein?

tobimc
28.06.2005, 20:24
Hi!

Achso. Alles klar.
Klar passt das da rein!

So: An alle Experten, bei denen's schon funktioniert... :D
Das Bild sieht so aus:
http://www.tobias-schlegel.de/PublicData/gbcv/2/16.jpg
Da bin ich drauf, und die weisen Einschnitte scheinen Die Dachbalken zu sein. Ausserdem ist da Bild greulich verzogen (nur 128*123 Pixel?!)
Ich habe das mal verdeutlicht:
http://www.tobias-schlegel.de/PublicData/gbcv/2/16b.jpg
Grün bin ich, blau die Verschiebung und rot die dachbalken.

Könte es sein, dass 255 = weiss eigentlcih schwarz heißen soll und 0 = weiss? Irgend ein Variablenüberlauf vllt. im ADC?

Wär nett, wenn ihr da mal eure Meinung beisteuern könntet!

VLG
Tobi

pebisoft
28.06.2005, 20:38
hallo tobi, du sagst man muss ein ";" senden. ich sende keins und trotzdem erscheint eins in deinem gespeicherten daten, schön brav immer eins nach dem zahlenwert. wie komms.
stell jetzt einmal dein programm von bascom rein, nachdem du ein bild erkannt hast. ich möchte deine ansteuerungsreihenfolge in winavr umsetzen.
vorerst möchte ich aber ein bild bei mir auf dem pc erzeugen mit deinem bascomprogramm
mfg pebisoft

tobimc
28.06.2005, 20:44
Hi pebisoft!

Ja, man muss pwar eins senden, aber die Logfiles werden automatisch kreiert.
Die ; werden erst weggeschnitten, aber im Logfile kommen sie wieder dazu.

Im Logfile erscheinen die Semikolons als '59'.

Du solltest sie unbedingt senden, wobei das Programm das glaube ich verzeiht, wenn man sie nicht sendet (wenn ich mir das recht überlege und mir die Einleseprozedur nochmal durch den Kopf gehen lasse...).

Ich glaube mein Problem könnte an den 2 Takten vor dem Reset liegen.
Habe sie jetzt mal weggelassen, ich muss jetzt nur die Register neu einstellen, mach ich morgen!

Belichtungsregister lassen sich jetzt wunderbar einstellen!

Ich muss jetzt nur noch ein Bisschen "Reli" lernen... *kotz*

Viele liebe Grüße und GUTE NACHT!
Tobi

roboter
28.06.2005, 21:33
@tobimc:
Naja, mit viel Fantasie kann man eine Person auf dem Bild erkennen :D
Immerhin schonmal ein Anfang.

Ich habe immer noch das Problem mit dieser verdammten 177-179.
Ich bekomme einfach kein weißes Bild. ](*,) Also ist irgendwas falsch :-s

Welche Einstellungen nimmst du denn jetzt?



@pebisoft:

stell jetzt einmal dein programm von bascom reintobimc's Programm ist doch schon drin.
Schau mal ein paar Seiten weiter vorher.
Bei ihm war aber das Problem, das die Adressbits der Register in der falschen Reihenfolge gesendet wurden, das mußte dann noch ändern.

Warum willste das eigentlich von Bascom auf C umschreiben??? Es gibt hier doch schon mehere verschiedene C Programme. Zum Beispiel das von Kjion funktioniert.

pebisoft
28.06.2005, 22:12
bei mir funktioniert das bild nicht vom programm von kjion. weil ich ohne sram sofort sende, kommen andere zeiten zustande. wenn das so einfach wär, hätte ich schon ein bild. das war bei tobi nicht das einzige problem, das er jetzt ein bild bekommt. ich habe vorher die register schon umgestellt gehabt und es kam immer noch kein bild. ich schreibe es nach c um, weil bascom zuviel zeit verschlabbert und zu langsam ist und weil ich durch das umschreiben immer sattelfester mit dem winavr-c werde.
mfg pebisoft

pebisoft
28.06.2005, 22:19
hallo tobi es gibt ein registerwert, wo man das bild als negativ schalten kann.
vieleicht hast du dieses bit ausversehen gesetzt.
mfg pebisoft

roboter
29.06.2005, 09:47
Bei mir wirds langsam was.

Man kann schon erkennen wovon ein Bild gemacht wurde. Jetzt werde ich nochmal ein bißchen weiter rumprobieren. Wenn was ordentliches bei rauskommt poste ichs mal O:)

tobimc
29.06.2005, 10:37
HI!

pebisoft, es ist egal wie LANGE du für das Bild brauchst, du darfs es nur nicht schneller wie mit 500KHz (= ca. 2µs) auslesen. Eine minimale Geschwindigkeit ist nicht bekannt (steht keine im DS...).
Ergo kannst du die Pixel theoretisch auch von Hand mit Schaltern auslesen... :D

>>Wenn was ordentliches bei rauskommt poste ichs mal
Bin schon gespannt!

Hast diese 2 Takte mal weggelassen?

Ich habe in dem DS, das ich habe nachgeschaut, und da steht nix von 2 Takten drin...........!!

Viele liebe Grüße,
Tobi

roboter
29.06.2005, 11:02
Om Moment fange ich so an:

Xckpin = 1
Waitus 5
Xckpin = 0
Waitus 2
Resetpin = 0
Waitus 3
Xckpin = 1
Waitus 2
Resetpin = 1
Waitus 3
Xckpin = 0
Waitus 2

tobimc
29.06.2005, 11:04
Hi!

Meine Bilder die ich bekomme, sind inzwischen garnicht schlecht!!
ABER: Die sind verschoben. Ich poste das gleich mal...

Mach das doch mal so:

Xckpin = 0
Waitus 2
Resetpin = 0
Waitus 3
Xckpin = 1
Waitus 2
Resetpin = 1
Waitus 3
Xckpin = 0
Waitus 2

VLG!

roboter
29.06.2005, 11:13
Irgendwie werden meine Bilder immer schlechter...

Im ersten Bild ist das gelbe ein weißes Din A4 Blatt mit einem Schwarzen Rechteck in der Mitte und das rote könnte mein Bein sein...


Im zweiten Bild kann man oben Rechts eine Hand erkennen. Die Finger sind aber nicht ganz mit auf das Bild gekommen...

Welche Werte hast du im Moment eigentlich für die Register?
Ich habe diese:
Regwert(1) = 3
Regwert(2) = 1
Regwert(3) = 0
Regwert(4) = 1
Regwert(5) = 0
Regwert(6) = 1
Regwert(7) = 1
Regwert(8) = 128

tobimc
29.06.2005, 11:14
HI!

Also. Hier sind die Bilder:
http://www.tobias-schlegel.de/PublicData/gbcv/2/17.jpg http://www.tobias-schlegel.de/PublicData/gbcv/2/17b.jpg

So. Ihr seht diese schreckliche Verschiebung.
AN WAS KANN DAS LIEGEN? Datenverlust? Camera?
Buffer overflow im COM-FIFO des PCs? Was denkt ihr?

Folgende Registerwerte:



Regadr = 1 'Register NUMMER 1:
Regvalue = 0 oder 1

Regadr = 2 'Register NUMMER 2:
Regvalue = 0

Regadr = 3 'Register NUMMER 3:
Regvalue = 75

Regadr = 4 'Register NUMMER 4:
Regvalue = 1

Regadr = 5 'Register NUMMER 5:
Regvalue = 0

Regadr = 6 'Register NUMMER 6:
Regvalue = 1

Regadr = 7 'Register NUMMER 7:
Regvalue = 7

Regadr = 0 'Register NUMMER 0:
Regvalue = 0 oder 1


Was sagt ihr dazu?

Viele liebe Grüße,
Tobi

tobimc
29.06.2005, 11:24
Hi !

Hast du den TURN 90°-Button probiert?

DAS SIEHT DOCH SCHON KLASSE AUS!!!

Es gibt tatsächlich diese Einstellungsmöglichkeit:
Das wird im Register1 (VH0(=Bit5) und VH1(=Bit6)) festgelegt.
Aber das kann bei diesem Registerwert garnicht sein...
AUSSER...
Du überträgst die Bits schön von DB7 bach DB0, gell!!
Und selbst dann...
...wäre es der "Vertical edge mode"...

OH!! FANG MAL BEI DEN REGISTERN MIT NULL = 0 AN ZU ZÄHLEN!!!!!!!!!!!!!!!!!

Reg0 = ...
Reg1 = ...
...
Reg7 = ...

Mit 3 Bit kann maximal 7 dargestellt werden.

VLG Tobi

roboter
29.06.2005, 11:24
Deine Einstellungen sind ja super! Meine Bilder sind jetzt top! O:) Sind nur ein bißchen überbelichtet. Stell gleich mal was rein.

Ist dein Bild vielleicht verzogen, weil du nicht genau 16384 Pixel kriegst?


Das auf dem Bild bin übrigens ich. Das im Hintergrund ist die Decke.
(Das Kabel vom ISP ist nur ca. 15cm lang und deshalb liegt meine Kamera neben dem PC auf dem Biden O:) )

tobimc
29.06.2005, 11:47
!!ACHTUNG ACHTUNG!!
AN ALLE GB-CAM VIEWER-USER!!!

Mir ist ein dummer, blöder DENKFEHLER unterlaufen!
Alle Versionen vom GBCV schneiden alle Bytes vom COM mit dem Wert 59 weg. AUCH Pixel!!

Deshalb: Sendet bitte KEINE Semikolons mehr zwischen den Bytes!!
Und VERWENDET NUR noch die aktuellste Version GB-Cam Viewer 0.5e (final beta) (Anhang). In dieser Version ist dieser Bug behoben!!

Desweiteren empfehle ich, zwischen dem Senden der Pixelwerte 5ms zu warten, um COM-FIFO Buffer overflows zu vermeiden.

Letztenendes bin ich durch meine Verschiebungen im Bild und pebisofts Problem draufgekommen.

Sorry. Das ist die Fehlerhafteste Software, die ich je programmiert habe!!

Aber jetzt bekomme auch ich tolle Bilder!!
(Sogar mit BASCOM!)

Also, BENUTZT UNBEDINGT DIESE VERSION!!

DIESE VERSION ENTHÄLT EIN SEHR WICHTIGES UPDATE!

...Und ein neues Feature: Man kann die Bilder der Cam jetzt direkt im programm drehen!!

Danke für euer Verständniss!!

Viele liebe Grüße,
Tobi

tobimc
29.06.2005, 13:26
Hi!

REVISION B
-> Kleines Bugfix!

Auf anraten von Roboter (DANKE!!) habe ich noch ein paar Sachen verbessert.
Das jetzt gibt es den "No signal detected"-Fehler am Ende des Bildes nichtmehr.

Das Drehen um 90° Funktioniert leider nur einmal.
Ich arbeite dran.

GB-Cam Viewer 0.5 final beta revision b
Heißt es jetzt(!!) und hat stolze 1487 C-Zeilen (neuer pers. Rekord).

Viele liebe Grüße,
Tobi

tobimc
29.06.2005, 13:46
Hi Jungs!

SO SIEHTS AUS:
MEINE CAMERA FUNKTIONIERT!!
http://www.tobias-schlegel.de/PublicData/gbcv/2/18.jpg

VLG Tobi

michaelb
29.06.2005, 13:50
Hi Tobi,
des Bild ist ja perfekt!! Glückwunsch!
Gruß Michi

DerInder
29.06.2005, 13:52
Na das sieht doch SUPER aus.
Herzlichen Glückwunsch!

tobimc
29.06.2005, 13:58
Hi!

DANKE!!
Habe auch scon mein Bildalgorithmus-Testprogramm drüberlaufen lassen,... SUPER!

Habt ihr euch auch alle brav die Bugfixes heruntergeladen? :D :D

Viele liebe Grüße,
Tobi

michaelb
29.06.2005, 14:03
Hi Tobi,
gibt es irgendwo einen Kompletten Schaltplan für die Gameboycam? Ich meine mit RAM, und so...! Welchen hast du ? Kannst du den mal posten?
Hasch du nen Bildauswertungsalgorithmus gemacht? Oder was für einen Algorithmus?
Gruß Michi

tobimc
29.06.2005, 14:07
Hi!

Kjion hat einen auf seiner hp.
Meiner ist leider geheim wegen JuFo.
Kjions ist aber einfacher... :D

>>Hasch du nen Bildauswertungsalgorithmus gemacht?
Hmmmmmmmm.... *geheim wg. JuFo*

Sorry!!! Muss aber sein!

VLG Tobi

michaelb
29.06.2005, 14:12
Des ist ne Frage an Roboter:
Welchen Schaltplan hast du?
Gruß Michi

roboter
29.06.2005, 14:18
@tobimc: Nicht schlecht die Bilder! Glückwunsch! O:)

@michaelb: Den Schaltplan stell ich gleich wohl rein.

@alle:

Also meine Kamera funktioniert jetzt fast. Ich habe nur noch ein Problem: Meine Bilder werden nicht richtig scharf. Woran kann das liegen?
Und was ich noch nicht verstehe:
Wofür sind bei den Registern die G, O und V Bits? Das habe ich irgendwie noch nicht so ganz begriffen...

roboter
29.06.2005, 14:23
So, hier ist dann mein Plan und mein Programm.

Der Plan passt nicht ganz zu dem Programm. Das liegt daran, das ich meine Schaltung im Moment noch auf nem Steckbrett habe und noch nicht geätzt habe.

Wer aber das Programm mit dem Schaltplan nutzen will, muß nur die Pins des A/D-Wandlers und die Pins der Cam anpassen. Sonst passt alles.


'Gameboy Kamera

$regfile = "m8515.dat" 'ATmega8515-Deklarationen
$crystal = 4000000 'Quarz: 4 MHz
$baud = 9600

Declare Sub Register_laden(addr As Byte , Wert As Byte)

Dim Regwert(8) As Byte
Dim Regaddr(8) As Byte

Dim I As Byte

Dim Bild(16384) As Xram Byte
Dim Z As Word

'Register festlegen:
Regaddr(1) = 1
Regaddr(2) = 2
Regaddr(3) = 3
Regaddr(4) = 4
Regaddr(5) = 5
Regaddr(6) = 6
Regaddr(7) = 7
Regaddr(8) = 0

Regwert(1) = 0
Regwert(2) = 0
Regwert(3) = 15
Regwert(4) = 0
Regwert(5) = 0
Regwert(6) = 0
Regwert(7) = 7
Regwert(8) = 0

Main:

'C1 und C0 laden:
I = 0
Do
If Ucsra.rxc = 1 Then
Regwert(2) = Udr
I = 255
End If
Loop Until I <> 0
I = 0
Do
If Ucsra.rxc = 1 Then
Regwert(3) = Udr
I = 255
End If
Loop Until I <> 0
Wait 5


Config Scl = Portb.2
Config Sda = Portb.3

'A/D-Wandler einstellen:
I2cinit
I2cstart
I2cwbyte &B10010000
I2cwbyte &B00000000
I2cstop


Config Portb.0 = Output 'XCK
Config Portb.1 = Output 'Reset
Config Portb.4 = Output 'Sin
Config Portd.3 = Input 'read
Config Portd.4 = Output 'Load
Config Portd.5 = Output 'Start

Config Portd.2 = Output
Portd.2 = 1

Xckpin Alias Portb.0
Resetpin Alias Portb.1
Sinpin Alias Portb.4
Loadpin Alias Portd.4
Startpin Alias Portd.5
Readpin Alias Pind.3

Resetpin = 1 'Reset High
Xckpin = 1 'XCK High
Loadpin = 0 'Load Low
Startpin = 0 'Start Low

'Reset:

Waitus 5
Xckpin = 0
Waitus 2
Resetpin = 0
Waitus 3
Xckpin = 1
Waitus 2
Resetpin = 1
Waitus 3
Xckpin = 0
Waitus 2

'Register Laden
Call Register_laden(regaddr(1) , Regwert(1))
Call Register_laden(regaddr(2) , Regwert(2))
Call Register_laden(regaddr(3) , Regwert(3))
Call Register_laden(regaddr(4) , Regwert(4))
Call Register_laden(regaddr(5) , Regwert(5))
Call Register_laden(regaddr(6) , Regwert(6))
Call Register_laden(regaddr(7) , Regwert(7))
Call Register_laden(regaddr(8) , Regwert(8))

'Start:
Startpin = 1
Waitus 3
Xckpin = 1
Waitus 2
Startpin = 0
Waitus 3
Xckpin = 0
Waitus 4

'Warten Bis Bild Fertig:
While Readpin = 0
Xckpin = 1
Waitus 4
Xckpin = 0
Waitus 4
Wend

Z = 0
I2cstart
I2cwbyte &B10010001
I2crbyte I , 8
While Readpin = 1
Xckpin = 1
Waitus 1
Incr Z
I2crbyte I , 8
Bild(z) = I
Xckpin = 0
Waitus 1
Wend
I2crbyte I , 9
Incr Z
Bild(z) = I
I2cstop
Portd.2 = 0

For Z = 1 To 16384
Printbin Bild(z);
Next

I = 0
Portd.2 = 1
Do
If Ucsra.rxc = 1 Then
I = Udr
End If
Loop Until I = 1

Goto Main

Do
Loop

End 'end program

Sub Register_laden(addr As Byte , Wert As Byte)
'Registeraddr übertragen:
For I = 2 To 0 Step -1
Sinpin = Addr.i
Waitus 3
Xckpin = 1
Waitus 5
Xckpin = 0
Waitus 2
Next
'Registerwert übertragen:
For I = 7 To 0 Step -1
Sinpin = Wert.i
Waitus 3
Xckpin = 1
Waitus 2
If I = 0 Then
Loadpin = 1
End If
Waitus 3
Xckpin = 0
Waitus 2
Loadpin = 0
Next
Sinpin = 0
End Sub

michaelb
29.06.2005, 19:22
Hi Roboter,
danke dass du den Schaltplan und deinen Code reingestellt hast!!
Ich verstehe Tobi schon dass er seinen Schaltplan nicht reinstellt sonst klaut jemand noch sein Jufo Projekt!!
Gruß Michi

pebisoft
30.06.2005, 07:40
hallo, meine bilder von der gameboycam sind noch nicht verwerdbar für den robby für die selbstständige reaktion. habe aber trotzdem eine v0-messung durch geführt für bestimmte anzufahrende flächen. der avr ist zu langsam für die auswertung. die helligkeitswertenkontrolle für ein vernünftiges bild ist zu krass, man kann garnictt so schnell reagieren, wie sich die kontrastwerte der game-cam ändern, es müssen dauernd neue messregeln reingeschmissen werden. ich habe noch kein bild zur kontrolle, abe die messwerte schwanken wie verrückt . als alternative könnte die c-controlII in frage kommen, die ist aber zu teuer mit dem weiteren zubehör, der robby hat zuviel pause. eine weitere möglich wäre einen teil-pc auf dem robby zu setzen ist nicht so teuer.
ein pda zur auswertung schlägt immerhin mit mindestens 250 euro zu buche. also bleibt die gameboy-cam nur als anschauungsobjekt für bilder zur verfügung.
da ich mich damit nicht zu frieden gab, habe ich mir die cmucam 2 angeschafft.
ich spare eine weitere platine, einen pc auf dem robby oder einen pda.
habe eine farbliche visuelle kontrolle auf dem pc im visualbasic-fenster (life)..
die cam hat einen festwertspeicher für die abgelegten bilder, die einmal die cam bearbeiten kann zur objektkontrolle (robby bekommt ein signal, wenn ein bestimmter farbwert erkannt wird, bzw in das bild hineinkommt und aus dem bild verschwindet), man weiss denn genau aus welcher richtung der farbpunkt kommt und der robby kann nach diesem signal links rechts vorwärts oder rückwärts fahren. weiterhin kann ich aus neugierde dann auch die bilddaten als digitale werte über die serielle schnittstelle übertragen zum visual-basic-programm. die experiemente mit der cmucam 2 sind erste sahne, freu..freu. ich kann mich jetzt auf die experiementielle auswertung konzentrieren im zusammenhang mit der robbysteuerung.
das ansprechen der camera mit visualbasic ist wunderbar, obwohl eine visuelle steuerung in java dabei ist, die auch auf anhieb lief und ich sogar die java-programme selber ändern kann und neu compilieren für die eigenen bedürfnisse. werde aber trotzdem auf dem visualbasic-trip bleiben, weil es darauf wunderbar geht.
werde aber weiterhin die experiemente der gameboy-cam weitermachen.
schwerpunkt ist jetzt aber die cmucam2 im zusammenhang mit dem robby.
mfg pebisoft

tobimc
30.06.2005, 16:09
HI!

@roboter:
Kannst du mal ein Bild posten? Hast du Staub auf der Linse?

@Michi:
Hast Recht! Genau deshalb!

@pebisoft:
Naja, die Sache mit der Belichtung Kontrast usw. ist schon schwer, habe da aber eine tolle Idee... :D (wg. JuFo kann ich die euch leider auch erst in nem 3/4 Jahr verzapfen...)
We'll see...

Habe vor, das gesamte JuFo Projekt nach JuFo auf meine Homepage zu stellen.

VLG Tobi

roboter
30.06.2005, 16:38
HI!
Naja, die Sache mit der Belichtung Kontrast usw. ist schon schwer, habe da aber eine tolle Idee...

Haben wir da vielleicht dir gleiche Idee? :mrgreen:

tobimc
30.06.2005, 16:44
Hi roboter!

Hm... kommt drauf an. Hat deine Idee mit speziellen Siliziummischungen zu tun?

VLG Tobi

pebisoft
30.06.2005, 18:46
hallo tobi, zeig mir mal wie die cam funktioniert mit direktübertragung ohne ram für die 16k. würde mich freuen.
mfg pebisoft
ps: die gamecam wird knapp!!!!. bei ebay gib es noch eine für 9,99 sofortkauf.
hast du die genehmigung, die ganzen jufo-projekte zu veröffentlichen.
ich vermute, das auch einige firmen an der sache zum kauf interessiert sind.
viele firmen schicken ihre adju als interessenten und kupfern das konzept, ohne das du es sofort merken tust. erst nach einer gewissen zeit sieht du auf dem markt projekte , wo du dann sagt:" die kenn ich doch, das habe ich auch gemacht". teilweise sind die leute, die die auswertung betreiben auch bei bestimmten firmen ansässig.

Z80
30.06.2005, 19:26
Ich versuche gerade eine GB-Cam mit einer C-Control auszulesen. Dies sollte teoretisch kein Problem sein da die Cam keinen wirklichen mindesttakt hat. Jedoch scheitere ich schon am read signal. Das signal geht sechs täkte nach reset wieder auf HI.

Das CCBasic Programm:

define start port[16]
define sin port[15]
define load port[14]
define rst port[13]
define xck port[12]
define reade port[11]
define pixel ad[1]

define addr byte
define wert byte

define x byte

#reset
rst = 0
xck = 0
rst = 0
xck = 1
rst = 1
xck = 0

#Register
addr = 0
wert = 0
gosub reg_write
addr = 1
wert = 0
gosub reg_write
addr = 2
wert = 15
gosub reg_write
addr = 3
wert = 0
gosub reg_write
addr = 4
wert = 0
gosub reg_write
addr = 5
wert = 0
gosub reg_write
addr = 6
wert = 7
gosub reg_write
addr = 7
wert = 0
gosub reg_write
goto start

#reg_write
'send addr'
sin = &H30 - ((addr AND &H04)<>0)
xck = 1
xck = 0
sin = &H30 - ((addr AND &H02)<>0)
xck = 1
xck = 0
sin = &H30 - ((addr AND &H01)<>0)
xck = 1
xck = 0
'send wert'
sin = &H30 - ((wert AND &H80)<>0)
xck = 1
xck = 0
sin = &H30 - ((wert AND &H40)<>0)
xck = 1
xck = 0
sin = &H30 - ((wert AND &H20)<>0)
xck = 1
xck = 0
sin = &H30 - ((wert AND &H10)<>0)
xck = 1
xck = 0
sin = &H30 - ((wert AND &H08)<>0)
xck = 1
xck = 0
sin = &H30 - ((wert AND &H04)<>0)
xck = 1
xck = 0
sin = &H30 - ((wert AND &H02)<>0)
xck = 1
xck = 0
sin = &H30 - ((wert AND &H01)<>0)
xck = 1
load = 1
xck = 0
load = 0
return

#start
start = 1
xck = 1
start = 0
xck = 0

#wait
xck = 1
if reade = -1 then goto scan
xck = 0
goto wait

#scan
xck = 1
print pixel
xck = 0
if reade = 0 then end
goto scan

Das Problehm

define start port[16]
define sin port[15]
define load port[14]
define rst port[13]
define xck port[12]
define reade port[11]
define pixel ad[1]

define addr byte
define wert byte

define x byte

#reset
rst = 0
xck = 0
rst = 0
xck = 1
rst = 1
xck = 0 'read geht low wenn er nicht von anfang an low war'

pause 100 'pause um zu messen

xck = 1
xck = 0
xck = 1
xck = 0
xck = 1 'read geht HI'
xck = 0

pause 1000 'noch eine pause um zu messen

pebisoft
30.06.2005, 19:36
hallo, z80 es geht nur mit der control-II nicht mit der c-control I.
das basic in der c-control I ist zu langsam. die c-control II wird in c-ähnlichen-code geproggt und die v0 reicht da aus, natürlich ist der interne adc auch da wieder zu langsam.
mfg pebisoft

tobimc
30.06.2005, 19:37
Hi!


hallo tobi, zeig mir mal wie die cam funktioniert mit direktübertragung ohne ram für die 16k. würde mich freuen.
Klar, kann ich machen, muss nur etwas Zeit haben... (morgen Französisch Klassenarbeit... :( )


hast du die genehmigung, die ganzen jufo-projekte zu veröffentlichen.
Wie meinst du das?


viele firmen schicken ihre adju als interessenten und kupfern das konzept, ohne das du es sofort merken tust.
Tjaja... C'est la vie. Da kann man nix machen.
Aber daran kann man gut sehen, warum ich das so geheim halte...

@Z80:
Leider kenne ich mich mit der CControl nicht so aus... :(
Aber wie meinst du das nach Reset auf high?

Viele liebe Grüße,
Tobi

tobimc
30.06.2005, 19:39
Hi!

pebisoft, es ist EGAL wie LANGSAM die Prozessoren zum Auslesen sind, sie dürfen nur nicht ZU SCHNELL sein.
Das ist der Witz an der Sache.

Das Bild verrottet nicht in der Camera.

VLG Tobi

pebisoft
30.06.2005, 19:43
hallo tobi, die cmucam I schafft es nicht mit dem basic was eingebaut ist, null chancen. es geht nicht um das verrotten des bildes, sondern um das einlesen der steuerungsdaten und das zeitliche korrekte abstimmen von den leitungen von 1 und 0.
mfg pebisoft
ps: aber auch ohne externen adcchip ( ertes thema).

Z80
30.06.2005, 19:55
Mein Problem ist: Wenn ich die Cam resete und sechs impulse auf der Tacktleitung (Xck) gebe oder die Register beschreibe wobei ich auch einige Täkte gebe, bringt die Readleitung ein signal, dass teoretisch erst NACH dem Startsignall kommen sollte.

Es sollte meiner Meinung möglich sein:

Alle Ein - und Ausgaben sind immer mit dem Takt syncronisiert. Hierbei ist die maximale Taktfrequenz 500kHz. Die minimale ist leider unbekannt, aber sie kann um einiges langsamer sein.
Quelle: http://www.destroy-yourself.de/julian/juliprograms/amr/gbcam.htm

pebisoft
30.06.2005, 20:31
wenn du die zeit von der c-control (c-control-basic) umrechnen tust, reicht diese knapp für 150khz, es ist so.
in der c-control 1 läuft ein inpreterprogramm ab. es sei denn , du benutzt die 255 byte für asm.
wenn du ein roboter zusätzlich steuern möchtest, steht du damit auf dem schlauch.
mfg pebisoft

tobimc
30.06.2005, 20:36
Hi pebisoft!

Na und?
Wie gesagt, du kannst die Gameboycam theoretisch auch mit Schaltern und Multimeter auslesen... (Viel Spaß...)

Z80:
Warum generierst du den Takt für die cam nicht mit ner DO...LOOP Schleife, die so viele Takte generiert, bis READ auf HIGH geht?
So hab's ich gemacht, und so sollte man es machen, da es ja Pro Belichtungszeit mehr Takte kostet... :D

VLG
Tobi

Z80
30.06.2005, 20:44
Ich habe eine loop schleife eingebaut aber die ist erst nach den Register und dem Startsignal. In Meinem Programm ist es der Bereich #wait.

EDIT: Ich weiss wie besch**n die C-Control ist. bis zu den AVR's geht es noch eine weile.

](*,) EDIT: Das Readsignal geht schon nach drei täckten auf HI!

Z80
30.06.2005, 21:21
Noch eine Frage: Wie muss man bei dem neuen Programm von tobimc die Werte Trennen? Nicht das ein dreistelliger Wert zu drei pixel wird.

pebisoft
01.07.2005, 07:13
du musst einfach die daten (pro adc-wert) als string übermitteln, den rest macht das programm alleine.
versuch einmal einpaar routinen in den 255-byte grossen speicher als asm reinzubringen.
mfg pebisoft
ps: bei mir klappt das auslesen auch noch nicht so einwandfrei, ich habe einen avr mit 8mhz laufen und schicke die daten direkt vom adc über rs232 zum pc nach tobis programm rüber.
wahrscheinlich ist mienns zu schnell, weil ich in winvr-c progge.

Kjion
01.07.2005, 07:52
wahrscheinlich ist mienns zu schnell, weil ich in winvr-c progge.
Welches Programm benutzt du den im Moment ?? Das das du aus meinem Quelltext zusammengestückelt hattest ?? Die Ur-Funktionen davon sollten funktionieren, hab sie immerhin schon mehrfach getestet ;-)

Das auslesen der GBCam sollte auch mit einer C-Control funktionieren, allerdings wird es ne ganze Weile dauern bis man bei 9600 Baud die Daten übertragen hat.

MfG Kjion

tobimc
01.07.2005, 11:49
HI

Z80, du musst die 8-Bit ADC-Werte in einem Byte senden.
N I C H T (!!!!!!!!!!!!!) als String!!!
Du musst desweiteren aufpassen, dass die Ausgabefunktion (print?!?!?!?!)
kein \cr \lf mitsendet.
Einfach die gabzen Pixel als Bytes senden. Für jedes Pixel ein Zeichen.

pebisoft: Wenn du das als String überträgst, haben wir den Fehler gefunden....... :D
WIe gesagt, um die maximale Frequenz nicht zu übersvhreiten, musst du bei jedem Takt ca. 2µs warten.


Viele liebe Grüße,
Tobi

pebisoft
01.07.2005, 12:02
ich arbeite mit winavr-c , auf seite 11 habe ich es mal reingestellt.
ich speichere die daten nicht zwischen, sondern die gehen gleich zum pc
mfg pebisoft

OldBug
01.07.2005, 12:31
Na wenn ich denn mal grad helfen darf... ;)

pebisoft:

Ändere einfach folgende Zeilen:




// Daten einlesen
itoa( adc_wert,wert_str, 10);
usart_writeString(wert_str);


...in:



// Daten einlesen
usart_writeChar(adc_wert); /* sende Byte an PC */

Kjion
01.07.2005, 13:03
ich arbeite mit winavr-c , auf seite 11 habe ich es mal reingestellt.
Ja genau, das ist ja das Programm von mir. Änder mal das was tobimc bzw. OldBug vorgeschlagen haben, dann sollte es funktionieren ;-)

MfG Kjion

pebisoft
01.07.2005, 13:18
ja,das war ein fehler. die daten die ich aber vorher zum terminal gesendet habe sind string-daten zur ausgabe. für tobi sind imer 1-byte.
bild ist aber noch grau.
mfg pebisoft

michaelb
01.07.2005, 13:33
Hallo Zusammen,
frage an Kjion:
Wo gibt's deinen Quelltext? Kannst du ihn mal posten?
Gruß michi

roboter
01.07.2005, 14:18
Hallo Zusammen,
frage an Kjion:
Wo gibt's deinen Quelltext? Kannst du ihn mal posten?
Gruß michi

Schau mal auf www.kreatives-chaos.com
Da gibts seinen Code + Schaltung O:)

michaelb
01.07.2005, 14:26
Hi Roboter,
da war ich auch schon hab da aber nur Schaltplan + Board gefunden!!
Gruß Michi

Z80
01.07.2005, 15:21
Das auswerten würde jetzt funktionieren, wenn das read-Problem nicht wäre.

Ich bekomme im moment eine Graue fläche weil meinem Programm egal ist, dass der readpegel zu früh HI geht.

tobimc
01.07.2005, 15:31
Hi!

Also bei mir hat mein Programm immer so ca. 10 Zyklen erzeugt. Wenn er zu früh auf HIGH geht, dann sol er halt.
wichtig ist nur, dass er wieder auf LOW geht............

Michi, wenn Kjion zustimmt, kann ich ihn dir auch schicken.


Es freut mich, dass ihr alle meine Software benutzt!
D A N K E !!

Viele liebe GBC-Grüße,
Tobi

Z80
01.07.2005, 15:52
Hab nochmals im Forum gesucht und ich vermute, mein problem könnte das hier sein: https://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=86746

@tobi du kennst dich doch damit aus? Was war genau das Problem/Lösung?

Kjion
01.07.2005, 15:53
Wo gibt's deinen Quelltext? Kannst du ihn mal posten?
Das hatte ich schonmal in den Tiefen diese Threads getan ;-)


Schau mal auf www.kreatives-chaos.com
Da gibts seinen Code + Schaltung
Das hatte ich auch gedacht. Ich hatte vor kurzem einiges geändert und war der Ansicht auch den Code online gestellt zu haben. Aber siehe da: auf meiner lokalen Kopie ist er da, hab nur vergessen das ganze auch hochzuladen http://www.elektronik-projekt.de/images/smilies/wallbash.gif

Jetzt gibts den Code also auch auf der Seite:
http://www.kreatives-chaos.com/index.php?seite=gbcam
( Jetzt auch mit automatischen Belichtungsabgleich )

MfG Kjion

tobimc
01.07.2005, 17:42
HI!

Z80, bei mir nuss es wohl an einer falschen Registerprogrammierung gelegen haben.
(Weis es nicht, ob es an den Registerwerten oder der Programmierung gelegen hat.)

VLG Tobi

pebisoft
02.07.2005, 16:36
hallo, habe heute mein erste bild von der gameboy-cam reingestellt in "album, persönliche galerie, pebisoft".
geschrieben mit winavr-c (mit prog-teilen aus dem winavr-forum zusammengesetzt).
man sieht meinen fahrrad-trainer, den ich auch einmal mit der cmucam präsentiert hatte in verbindung mit visualbasic-steuereinheit für den robby.
woher kommen die ränder, vielleicht könnt ihr weiterhelfen.
reg-daten 0-7 : 128, 4, 0, 21, 1 ,0, 1, 3.
wenn der wunsch besteht, werde ich dieses zusammengestellte winavr-c-prog reinstellen. es läuft bei mir auf : avr16 mit 8mhz, 9600baud, avr-eigenen adc.
mfg pebisoft

tobimc
02.07.2005, 17:45
Hi pebisoft!

Mach mal die Verstärkung auf 0, Belichtung (Insgesamt) auf 60 also C0 ist 0 und C1 ist 60 und alles andere so, wie es auf juliprograms.de steht.

So bekomme ich ein wunderbare Bilder...

Viele liebe Grüße,
Tobi

pebisoft
02.07.2005, 18:06
hallo tobi, wenn ich die camera bewege, wird das bild nach dieser neuen bewegungsausrichtung aufgebaut, also ab diesen zeitpunkt zeichnet dein programm die neue situation. ist es darum ein grund, das die bilder so schnell als möglich in einem ram gschrieben werden müssen. das heisst, dieser camerakopf ist alleine nicht in der lage dieses bild stabil festzuhalten sondern nur im zusammenhang mit den restlichen bauteilen (ram usw mit batteriepufferung, batterie befindet sich auf dem rest des bauteil von der cam).
oder liegt es woanders dran.
mfg pebisoft

pebisoft
02.07.2005, 18:12
hallo tobi, c1 ist aber das höherwertige bit und c0 das nierderwertige bit.
dann ist die belichtung 60 x255.
mfg pebisoft

tobimc
02.07.2005, 18:27
Hi pebisoft!

Dann muss C1 null sein, und C0 60, ist ja egal, Hautsache, du weist, wie ich das meine...!

Das Problem habe ich auch. Aber ich schreibe es in mein RAM. Ist also egal, während der Auslesephase darf das Bild wohl nicht bewegt werden...

@kjion: Ist das bei dir auch so?

Funktionierts mit dem Registerwert?

VLG Tobi

pebisoft
02.07.2005, 19:00
hallo, tobi, ich habe ein 2. bild reingestellt. bild ist dunkler, aber die überbelichteten flächen sind neutral. eine weisser fleck auf dem trainer ist besonders hell und wird auch sofort überbelichtet dargestellt.
kannst du dein programm nicht so ändern, das eine überbelichtung nicht so dargestellt wird sondern nach weiss hin.
tobi wenn du die cam bewegst hast du auch den veränderungseffekt während deiner aufzeichnung mit deinem programm, liegt es irgendwie daran das evtl die clk beim festhalten des bildes nicht stimmt.
mfg pebisoft

tobimc
02.07.2005, 19:07
Hi pebisoft

OK, prober mal 75.

DIese Überbelichtung ist deshalb schwarz, weil die Variable in deinem ADC übergalaufen ist. Das kann ich in meiner Software nicht ausschalten, weil sonst alle schwarzen Bereiche (=0) auch weiß wären.

Dass könntest du aber auch mit deinem AVR-Programm machen.

if(pixel == 255){
pixel = 0;
}

VLG Tobi

pebisoft
02.07.2005, 19:21
hallo tobi, meine zahlen liegen so zwischen 102 und 248, davon ist das zweite bild entstanden, was ich in meine galerie reingestellt habe.
die zahlen über 240 werden überbelichtet dargestellt. die zahlen zwischen 130 und 230 sind hervorragend. mit der einstellung der gameboy werden eigentlich nur die ganzen daten nach oben oder untern verschoben. es müsste doch programmtechnisch mit deinem auswerteprogramm gehen, oder nicht.
mfg pebisoft

tobimc
02.07.2005, 20:01
Hi pebisoft!

>>meine zahlen liegen so zwischen 102 und 248
Das kann ehrlichgesagt nicht sein.
Welcher Wert ist er niedrigste?

Das Programm stellt stur dar, was über den COM übertragen wird.

Klar kann dieses Problem über die Software ausgeglichen werden, aber das bringt doch nix, weil die Camera bei den richtigen Registerwerten brauchbare Werte liefert.
Dein ADC läuft über, und deshalb steht in der Zone, wo absolute Helligkeit gegeben ist 0 statt 255.
Du must die Belichtung nach dem hellsten Punkt im Bild ausrichten.
geh aml auf 70 und dann auf 65.

VLG Tobi

pebisoft
02.07.2005, 20:41
hallo tobi, meine zahlen kommen nicht über 255, sondern die höchste ist 249.
ansonsten funktioniert das auslesen und das darstellen des bildes jetzt mit winavr-c hervorragend. das programm ist sehr schnucklig klein und übersichtlich hinsichtlich der struktur.
bekommst du das bild beim aufnehmen eingefroren oder muss deine cam immer noch feststehen bis die daten einlesen worden sind.
mfg pebisoft

tobimc
02.07.2005, 20:47
Hi pebisoft!

Komen auch Zahlen um 0 vor?
(es müssen welche vorkommen...!)

Ja, ich muss meine Camera immernoch festhalten. Wie ist das bei dir?
(wenn du so fragst... :D )

VLG Tobi

pebisoft
02.07.2005, 21:13
hallo, habe noch mal ein bild in meine persönliche galerie von der gameboycam reingestellt. sehr schön geworden. setze jetzt die zahlen
über 245 auf den wert 245, keine überbelichtung mehr.
diese erste hürde mit winavr-c für die gameboycam ist genommen (freu).
jetzt geht es weiter mit winavr-c und der cmucam 2 von roboterteile.de und dem küchenbrettroboter. habe dort auch schon erste sehr,sehr kleine erfolge mit winavr-c. das problem ist, das die software in java ist. aber man wurschtelt sich so durch.
tobi, ich habe keine zahl unter 100. liegt wohl am adc.
mfg pebisoft

Kjion
03.07.2005, 01:20
..., während der Auslesephase darf das Bild wohl nicht bewegt werden...
@kjion: Ist das bei dir auch so?

Jep,
wenn man das Bild nur ganz langsam ausließt und dabei die Kamera verschiebt kann man sehr lustige Effekte erziehlen ;-)

MfG Kjion

tobimc
03.07.2005, 07:44
HI Kjion!

Naja, bei mir geht das so schnell wie's eben geht.
Ich könnte zwar die Pausen noch herunterfahren, aber die sind schon auf 2µs. Man könnt's mal probieren, beil BASCOM ja tatsächlich mit den ganzen Subprogrammen etwas wartet...

Naja, wenn das Bildeinlesen bei so einer Sekunde liegen würde wärs gut.
Aber ich denke da bringt man nicht viel mehr raus, oder?
(selbst wenn man's in Assembler programmieren würde, oder?)
Man darf ja nicht schneller sein als die 500KHz.

Wie schnell bist du mit deinem High-Speed ADC?
(Wie wird der ausgelesen? Parallel?)

Viele liebe Grüße,
Tobi

Florian
03.07.2005, 08:15
Guten morgen Tobi!

(selbst wenn man's in Assembler programmieren würde, oder?)Wenn Du möchtest bringe ich Dir in den Ferien, wenn wir uns treffen, ASM bei und helfe Dir Deinen Basic-Code umzusetzen!
Somit lernst Du dann ASM und ich lerne BASCOM! *lol*

tobimc
03.07.2005, 08:18
Hey Florian!

So machen wir das!! *freu* *daswirdgut*

Aber ich glaube nicht, dass wir da noch viel heraushohlen können... :(
leider!

Habe mir gerade passende Imbusschrauben für meine Motorhalterung herausgesucht.

Viele liebe Grüße,
Tobi

Florian
03.07.2005, 08:36
Aber ich glaube nicht, dass wir da noch viel heraushohlen können...leider!Wir werden es sehen! ;o)

pebisoft
03.07.2005, 08:44
ich kann nur winavr-c empfehlen. da es unwesentlich langsamer ist als asm.
wenn man den asm-code vergleicht und den code von win-avr wird man erstaunt sein wie ähnlich und parallel die strukturen sind. wenn man dann noch diese beiden programme im avr studio 4 vergleicht (das schöne ist, winavr erstellt eine cof-datei für avrstudio) ist der zeitvergleich verblüffent ähnlich, wenn nicht teilweise sogar gleich. die struktue von winavr-c ist auch leichter durchschaubar als asm. weiterhin darf man 500khz nicht überschreiten. bei winavr-c ist das bei mir zuerst passiert, da musste ich dann wieder wartezeiten einbauen.
mfg pebisoft

pebisoft
03.07.2005, 09:08
ich übertrage jetzt die daten von der gameboy-cam vom robby mit dem easy-funkmodul mit 19200baud zum pc. der robby mus bei jeder aufnahme angehalten werden. dieses trifft auch zu, wenn die daten in den ram-speicher gepackt werden. ist keine gute lösung.
parallel teste ich das grabben der bilder mit visualbasic aus dem laufenden lifevideobild der cmoscam , welches vom robby mit video-funk zum pc übertragen wird. hier habe ich keine verzögerungen, weil ich das bild aus der lifesendung herausgrabben kann. daher habe ich aber immer eine easy-funk-steuerungsverbindung (natürlich macht das der pc selbständig) zum robby.
einmal werte der robby die sensordaten aus und der pc werte die bilddaten aus. am besten ist es, wenn man eine pc auf dem robby hat.
die bilddaten der cmucam2 werden zur zeit noch mit java ausgewertet. ich möchte aber diese auswertung bald in winavr-c umsetzen. ist nicht schwer, weil ich den java-source-code habe. wieder mal eine beschäftigung.
mfg pebisoft

Kjion
03.07.2005, 11:41
... Aber ich denke da bringt man nicht viel mehr raus, oder? ...
Wie schnell bist du mit deinem High-Speed ADC?
Wenn ich mich nicht verrechnet habe komme ich auf ca. 60 ms. Habs allerdings noch nicht real ausprobiert...
Das wären dann ca. 300 kHz Clk Takt, es geht also noch ein kleines bißchen schneller :-)


(Wie wird der ausgelesen? Parallel?)
Ja, genau.

MfG Kjion

Kjion
03.07.2005, 11:45
... weiterhin darf man 500khz nicht überschreiten. bei winavr-c ist das bei mir zuerst passiert, da musste ich dann wieder wartezeiten einbauen.
Wie hast du den das geschaft ?? Für den internen ADC des AVR ist eine minimale Wandlungszeit von 65µS angegeben. Damit käme man auf eine maximale Taktfrequenz von 15 kHz für das auslesen des Bildes, also etwas mehr als eine Sekunde für ein gesamtes Bild.

MfG Kjion

tobimc
03.07.2005, 11:46
Hi!

AHA... OK... 60Ms.....
FÜR DAS GANZE BILD?!?!?! *respekt*

Florian, ich glaube, wir können noch ordentlich was raushohlen...... :D

VLG Tobi

Florian
03.07.2005, 13:23
Florian, ich glaube, wir können noch ordentlich was raushohlen......Ok, wir könnens probieren, aber ich garantiere für nichts! ;o)

pebisoft
03.07.2005, 16:05
mit diesem bewegungsproblem während der datenauslese hat keiner gerechnet. habe jetzt die ersten digitalen bilder aus dem speicher der cmucam2 vom robby zum pc geschickt und mit visualbasic in die picturebox dargestellt, tolle sache, 1 bild braucht ungefähr 1,3 sek bei 115000bps.
die zeit ist geschenkt, weil das auswerten des bildes auch noch dauert am pc.
parallel sehe ich im 2. picturefenster in visualbasic das lifebild , übertragen mit videofunk. alle cmucam2 steuerregister kann ich jetzt über easy-funk mit buttons aus visualbasic einstellen. die nächste hürde ist das programmieren der selbständigen auswertung der cmucam nach erkennungsmuster.
habe parallel noch eine audio-übertragung vom avr zum pc laufen im zusammenhang mit video-funk(sendet auch 2 audiokanäle zum pc).
erzeuge am avr frequenzen und kann im selbst erstellten visualbasicprogramm
schon einen programmierten schwellwertsteuerbalken darstellen, die daten kommen über die audio-karte. kann mit der audiokarte im zusammenhang mit meinem visualbasic-programm frequenzdaten von 0-255 empfangen.
und schon wieder eine beschäftigung.
mfg pebisoft

pebisoft
03.07.2005, 16:10
kjion, die max 500khz ist für die gameboy-cam.......nicht für den adc.
steht in der beschreibung von der cam.
wenn man die clk schalten muss , darf diese khz-zahl nicht überschritten werden.
mfg pebisoft

Kjion
03.07.2005, 17:00
kjion, die max 500khz ist für die gameboy-cam.......nicht für den adc.
steht in der beschreibung von der cam.
wenn man die clk schalten muss , darf diese khz-zahl nicht überschritten werden.
Ja, das ist ja klar.
Aber wie bist du denn über diesen Werte gekommen ??

... weiterhin darf man 500khz nicht überschreiten. bei winavr-c ist das bei mir zuerst passiert, da musste ich dann wieder wartezeiten einbauen.
Wenn du den internen Wandler benutzt, dann kommst du nicht über 15 kHz CLK Takt bei der Kamera.

MfG Kjion

pebisoft
03.07.2005, 17:08
es geht nicht um den wandler, sondern um die registerdaten einlesen und reseten und starten der gameboycam. ich progge in winavr-c. du musst dir noch einmal hier im forum die daten genau durchlesen oder das datenblatt von der gameboy-cam runterladen.
aber ich mache jetzt die digitalen bilder mit der cmucam2, die hat ein speicher draufgebaut und ich bestimme dann vom pc aus wann das nächste bild in den speicher der cmucam eingelesen wird. diese daten sind bis heiligabend im speicher drin. das problem des stillhaltens der cam gibt es auch nicht mehr.
finde das projekt "gameboy-cam" für eine digitale übertragung der daten aber trotzdem interessant. aber vielleicht schafft ihr es noch, das sich der roboter bewegen kann und trotzdem werden die bilder scharf. der preis der bauteile muss nur in grenzen liegen. wenn einer dieses gameboy-projekt anfängt, ist es ja nicht nur für 2 monate, darum empfehle ich , das derjenige sich noch von ebay 2 oder 3 gameboy-cam kaufen tut. man könnte ja noch eine camere für die rückwärtsfahrt anbringen. die cameras werden langsam rar auf dem markt.
so, jetzt mache heute erst einmal das audio-projekt weiter.
mfg pebisoft

roboter
03.07.2005, 22:07
Florian, ich glaube, wir können noch ordentlich was raushohlen......Ok, wir könnens probieren, aber ich garantiere für nichts! ;o)

Also wenn ihr das ganze in ASM programmiert habt, würde mich der Code interessieren! Könntet ihr den dann hier reinstellen?

pebisoft
04.07.2005, 08:47
hallo, habe heute morgen ein gameboycam-bildanzeigeprogramm in visualbasic erstellt. bild ist in "album,persönliche galerie,pebisoft". noch ohne "bps-wahl".
die zahlen werden auch im labelfenster angezeigt, braucht nicht sein, man kann das ende vom einlesen auch anders darstellen. danach kann man das bild per button in der picturebox zeichnen lassen. ist schneller als wenn die einzelnen pixel eingelesen werden und gleich wieder ausgegeben werden. man könnte auch das datenfeld abspeichern als "text". ich bearbeite das bild im ram speicher. habe dort eine weitere kopie zur hinderniserkennungsabfrage abgelegt. kann genauso abgefragt werden wie die picturebox, eine tolle sache.
man kann auch so proggen das das bild automatisch dargestellt wird, wenn die daten alle in der variable sind.
die geschwindigkeit ist die gleiche wie beim prog von tobi. hängt also von der "bps" ab. bei 115000bps ist es ca in 1,5sec angezeigt, wenn der interne adc vom avr mitspielt.
mfg pebisoft

tobimc
04.07.2005, 12:38
HI!

Der ASM-Code ist bis auf weiteres dann geheim, weil es sich dabei dann wirklich um die JuFo-Arbeit handelt.
Aber ich habe vor, nach JuFo das gesamte Projekt auf die Homepage zu stellen.

Aber jetzt geht das leider noch nicht, habt bitte Verständniss!

@pebisoft:
Sieht gut aus!
Wieviele Zeilen sind das?

VLG
Tobi

roboter
04.07.2005, 14:14
@tobimc: Das ist selbstverständlich O:)

pebisoft
04.07.2005, 15:36
hallo tobi, das ist der code von visualbasic 5.0.
den kannst du mit deinem nicht vergleichen. weil du deine routinen selbst zusammenstellt und kontrollieren musst. zum beispiel ist die "ocx" noch zusätzlich bei mir gefordert. ist aber auf jeden computer vorhanden.
man soll das rad bei windows nicht mehr neu erfinden. windows ist dafür geschaffen mit "ocx" und "dll" zu arbeiten, bei dir heissen sie dann halt "macros" und sind im programm mit als inhalt. dein programm ist aber trotzdem gut. da ich mit der zusätzlichen toolprogrammierung für den robby sehr flexibel sein muss, ist es von vorteil das wenn man diese sachen schnell ändern möchte so ein programm braucht. visualbasic ist dafür hervorragend, wenn man auch sieht, wie schnell man die "ocx" von der win-tv-karte ohne diese benutzen kann und nur mit ein paar declare-zugriffen auf dies "ocx" das gleiche machen kann als wär es das origprogramm von der wintv-karte, das schätze ich so.
mein programm kann ich jetzt in kürzester zeit umstellen "bps
auswahl", "pixel dehnen", "auswerten der daten im ram und nicht im picturefenster", "und... und...alles was die gameboy-cam für die visuelle sache braucht".
mfg pebisoft

ps: eine aufnahme von der gameboycam mit der visualbasicoberfläche
aufgenommen über rs232 und im picturefenster dargestellt befindet sich
im "album, persönliche galerie, pebisoft".
die daten von der gameboy-cam liest ein avr16-8mhz mit dem internen
adc aus und sendet diese zum pc. geproggt mit winavr-c.



VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form Form1
Caption = "Gameboycambild"
ClientHeight = 3630
ClientLeft = 945
ClientTop = 780
ClientWidth = 4935
DrawMode = 11 'Stift Xor invers
LinkTopic = "Gameboycambild"
ScaleHeight = 3630
ScaleWidth = 4935
Begin VB.CommandButton Command2
Caption = "Bild zeichnen"
Height = 465
Left = 600
TabIndex = 4
Top = 2700
Width = 1215
End
Begin VB.PictureBox Picture1
Height = 1890
Left = 2400
ScaleHeight = 122
ScaleMode = 3 'Pixel
ScaleWidth = 127
TabIndex = 2
Top = 300
Width = 1965
End
Begin VB.OptionButton close
Caption = "Close-RS232"
Height = 495
Left = 480
TabIndex = 1
Top = 1200
Width = 1335
End
Begin VB.OptionButton open
Caption = "Open-RS232"
Height = 495
Left = 480
TabIndex = 0
Top = 480
Value = -1 'True
Width = 1455
End
Begin MSCommLib.MSComm MSComm1
Left = 2025
Top = 1125
_ExtentX = 1005
_ExtentY = 1005
_Version = 327680
CommPort = 3
DTREnable = -1 'True
BaudRate = 19200
EOFEnable = -1 'True
End
Begin VB.Label Label2
Caption = "19200bps"
Height = 240
Left = 825
TabIndex = 5
Top = 225
Width = 765
End
Begin VB.Label Label1
BackColor = &H80000009&
Caption = "Label1"
BeginProperty Font
Name = "Arial"
Size = 12
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 390
Left = 675
TabIndex = 3
Top = 1950
Width = 1065
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim zahl(16400) As Integer
Dim zaehler As Integer
Dim x As Integer
Dim y As Integer
Dim i As Integer
Dim grau As Integer 'für den Pixelwert

Private Sub close_Click()
MSComm1.PortOpen = False
End Sub

Private Sub Command2_Click()
For i = 0 To 16385
grau = zahl(i)
Picture1.PSet (x, y), RGB(grau, grau, grau) 'malt den Pixel ins Bild
x = x + 1 'ein Bildpunkt weiter nach rechts
If x > 127 Then x = 0: y = y + 1 'wenn am Ende einer Spalte ,dann nächste Zeile
Next i
Me.Refresh
x = 0
y = 0
zaehler = 0
End Sub

Private Sub Form_Load()
zaehler = 0
x = 0
y = 0
MSComm1.CommPort = 1
MSComm1.Settings = "19200,N,8,1"
MSComm1.PortOpen = True
MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
MSComm1.InputLen = 1
End Sub

Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive: zahl(zaehler) = Asc(MSComm1.Input)
Label1 = zahl(zaehler)
zaehler = zaehler + 1
End Select
End Sub


Private Sub open_Click()
MSComm1.PortOpen = True
End Sub

roboter
05.07.2005, 14:33
Hat eigentlich schonmal einer versucht mit der GB-Cam eine Lienie oder sowas zu verfolgen? Es gibt doch extra diesen Modus zum Kanten erkennen, habt ihr damit schonmal Erfahrung gemacht?

pebisoft
05.07.2005, 15:41
http://www.destroy-yourself.de/julian/juliprograms/files/datasheets/m64282fp.pdf

wenn einer mal dieses datenblatt übersetzen würde, dann wäre es kein problem dieses auszuführen mit der gameboycam.
mfg pebisoft

tobimc
05.07.2005, 15:44
Hi Roboter!

Funktioniert deine CAM jetzt eigentlich?
Musst mal schauen, wie das geht...

@pebisoft:
Huiuiui... das ist mal ein Progrämmchen... :D
Warum Datenblatt übersetzen? Das ist doch gut lesbar?!

VLG Tobi

pebisoft
05.07.2005, 16:18
hallo tobi kannst du mir einmal die deutsche übersetzung kurz rübermailen.
kann kein englisch. danke!!!
mfg pebisoft
ps: habe ein neues bild bei mir in der galerie. schönes klares bild.
schade das man die belichtung dauern ändern muss. ich muss erst ein probebild machen, danach stelle ich über funk den wert ein und muss dann wieder ein bild machen.

tobimc
05.07.2005, 16:22
HI pebisoft!

Ich habe leider auch keine Übersetzung! Sorry!!

Hm. Schon mal gegoogelt? Nach "M64282FP"?

VLG Tobi

pebisoft
05.07.2005, 17:04
hallo tobi, hast du schon den schalter gefunden, womit man die aufzeichnung während des auslesen stoppen kann.
mfg pebisoft

tobimc
05.07.2005, 17:15
Hi pebisoft!

Welchen Schalter? Wo soll der sein? *HÄ*

Meine Cameras zicken gerade. Mal sehen...

VLG Tobi

pebisoft
05.07.2005, 18:17
irgendwie muss man doch das nachziehen verhindern können. ich meine elektronisch ausschalten.
meine camera macht jetzt hervorragende fotos und schickt sie über funk vom robby zum pc. ich kann jetzt über funk das belichtungsregister einstellen.
mfg pebisoft

tobimc
05.07.2005, 18:54
Hi pebisoft!

Achso! Du willst die Bildausgabe Cameraseits abbrechen!
-> Einfach einen RESET auslösen, und danach die Register neu laden.

Ich weis nicht. Meine CAM spinnt gerade irgendwie.

VLG Tobi

pebisoft
05.07.2005, 19:56
tobi, mit welchen programm liest du die daten der cam aus. mit bascom bist du aufgeschmissen. mach es mit win-avr-c. eine gutes exaktes timing kannst du da proggen.
mfg pebisoft

tobimc
05.07.2005, 20:03
HI pebisoft!

Naja...äh... BAS---COM?!
Das Timing ist doch garnicht so wichtig... Ich werde mal schauen. das muss schon noch schneller werden, und dann muss wohl ASM herhalten... :D


Meine Camera spinnt gerade. Weis nicht, was sie hat.
Das hat dann angefangen, als ich deine mal angeschlossen hatte..... :D

Ich hoffe, dass es morgen wieder funktioniert.
k.A. was da los ist (-> von jetzt auf nacher).
*ARGH*

Viele liebe Grüße,
Tobi

pebisoft
06.07.2005, 20:19
hallo, das sind meine registereinstellungen.
mit register 1 wird der kontrast hervorgehoben. je höher der wert ist, bis zu einer bestimmten grenze, desto besser ist der unterschied der linie zum boden. mit register 3 wird die helligkeit eingestellt. die anderen register werden nicht verändert. also mit register 1 und 3 habt ihr die gameboycam voll im griff für ein erkennungsprogramm. zum robby muss eine funkverbindung zur verstellung der beiden register bestehen, sonst habt ihr keine chance, weil jede ecke und jeder winkel schon wieder andere werte liefert. klappt sonst super. hat sich schon einer mal überlegt, ob man einen belichtungsmesser aus einem fotoapparat nehmen kann zur automatischen einstellung der beiden register oder sogar einen einfachen fotowiderstand.
mit register 7 braucht ihr nur einmal den richtigen mittelwert abstimmen für den adc-port.
mfg pebisoft


gbcam_load_register( 0x00,128);
gbcam_load_register( 0x01,5);
gbcam_load_register( 0x02,0);
gbcam_load_register( 0x03,25);
gbcam_load_register( 0x04,1 );
gbcam_load_register( 0x05, 0 );
gbcam_load_register( 0x06, 1 );
gbcam_load_register( 0x07, 1);

tobimc
06.07.2005, 20:30
HI Pebisoft!

Sie funktioneirt wieder. Habe da wohl gestern Mist eingegeben.

Kannst du deine Register nicht variablel einstellen?

An der Sache mit der Belichtung bin ich gerade dran.
Ich denke, ich werde einen Teil des Bildes einlesen, und dann den 'Kontrast' messen.
Müsste gehen. Sonst mit nem LDR oder Phototransistor oder eben nem Belichtungsmesser, wobei ich nur einen ADC-Port frei habe.

Uiii... jetzt habe ich aber viel verraten. Naja... :D

Viele liebe Grüße,
Tobi

pebisoft
07.07.2005, 07:39
beim fotoapparat wird immer das ganze feld gemessen und der mittelwert genommen. ich werte zur zeit nur einen senkrechten mittelstreifen aus, der 2byte breit ist und 128 linien in der senkrechten. wenn die linie auf dem boden in diesen teil kommt und der kontrast hoch ist bekommt man/frau einen schönen auswertewert. schade das der roboter immer wieder anhalten muss wenn das bild ausgelesen wird. man könnte von einer anderen gameboycam den linsenteil abbauen (den camerateil schön wieder einpacken) und hinter diesen linsenteil eine fotosensor setzen.
hast du schon mal versucht, neben der camera rechts und links je 1 leuchtdiode zu setzen die den boden anleuchten, dann hat man einen fast constanten messraum/fläche.
oder vorn vor der linse ein kappe draufsetzen, die nur einen 1mm senkrechten schlitz hat. so werte ich am robby auf der rechten und linken seite einen tsop1736 aus, die befinden sich dann in einer filmdose. der empfangsbereich ist so eng, das die robbybreite nicht überschritten wird. also sehr genau.
mfg pebisoft

tobimc
07.07.2005, 15:21
Hi pebisoft!

Ich will ja keine Linien erkennen, aber das auch mal vorsehen.
Hm...Ich glaube ich werde das mit dem jedes 20.Pixel auserten machen.
Geht dann halt ne Weile...

Liebe Grüße,
Tobi

pebisoft
07.07.2005, 16:43
du brauchst keine linie erkennen , es kann ja auch etwas anderes sein, was man auswerten möchte. mit meinem senkrechten auswerteverfahren spart man viel zeit.
mfg pebisoft

tobimc
08.07.2005, 11:47
Hi!

Also ich habe jetzt mal das mit dem 'jedes 20. Byte auslesen' probiert. sieht gut aus.
Ich entwickle noch.

VLG Tobi

tobimc
11.07.2005, 21:37
Hi!

Jungs, auf meiner Homepage unter Computer (bzw. Andere > Computer) > Software findet sich was zum downloaden...

By the way, gibts noch irgendwelche Verbesserungsvorschläge zum GBC-Viewer?

VLG Tobi

pebisoft
12.07.2005, 19:26
hallo tobi. was gibt s neus vom ramspeicher für die gamedaten. was macht dein 20-punkte projekt. hats du schon eine lösung für die richtige belichtung gefunden, ohne ein probebild zu schicken.
mfg pebisoft

tobimc
12.07.2005, 19:49
Hi!

Naja, die 20-Pixel-Sache ist leider etwas in die hose gegangen.
Wobei ich sagen muss, das ich diese Woche nicht so viel Zeit hatte.
(Homepageupdate usw.)

Ich habe hier mal ein paar Diagramme:

http://www.tobias-schlegel.de/PublicData/avvsen.jpg
http://www.tobias-schlegel.de/PublicData/avvsen2.jpg
Average (lila) ist der Durchschnitt des Kontrasts der 20 Pixel, und Enlightment (gelb) ist die Belichtungszeit, bzw. der Inhalt des unteren Bytes des Belichtungswords.
Try (blau) ist bedeutungslos...

Vllt. sollte ich den Helligkeitsdurschschnitt ermitteln. Das ist aber ein Problem, weil da die Variablen überlaufen würden...

VLG Tobi

PS. der 2. Schnittpunkt hätte von der Belichtung her hingehauen.

Z80
01.08.2005, 18:57
ES FUNKTIONIERT!
Ich habe es geschaft ein brauchbares Bild mit der C-Control auszulesen.

Wie bringt man jedoch den grauen Balken unten am bild weg? Giebt es eine verständliche übersicht der Register oder könnte mir jemand die wichtigsten einstellungen in den Register beschreiben?

Hier noch meinen Code:

define start port[11]
define sin port[12]
define load port[14]
define rst port[15]
define xck port[13]
define reade port[16]
define pixel ad[1]

define addr byte
define wert byte

#low
start = 0
sin = 0
load = 0
rst = 1
xck = 0

#reset
xck = 0
rst = 0
xck = 1
rst = 1
xck = 0

#Register
addr = 0
wert = 128
gosub reg_write
addr = 1
wert = 4
gosub reg_write
addr = 2
wert = 0
gosub reg_write
addr = 3
wert = 20
gosub reg_write
addr = 4
wert = 1
gosub reg_write
addr = 5
wert = 0
gosub reg_write
addr = 6
wert = 1
gosub reg_write
addr = 7
wert = 3
gosub reg_write

goto start

#reg_write
'send addr'
sin = 0 - ((addr AND &H04)<>0)
xck = 1
sin = 0
xck = 0
sin = 0 - ((addr AND &H02)<>0)
xck = 1
sin = 0
xck = 0
sin = 0 - ((addr AND &H01)<>0)
xck = 1
sin = 0
xck = 0
'send wert'
sin = 0 - ((wert AND &H80)<>0)
xck = 1
sin = 0
xck = 0
sin = 0 - ((wert AND &H40)<>0)
xck = 1
sin = 0
xck = 0
sin = 0 - ((wert AND &H20)<>0)
xck = 1
sin = 0
xck = 0
sin = 0 - ((wert AND &H10)<>0)
xck = 1
sin = 0
xck = 0
sin = 0 - ((wert AND &H08)<>0)
xck = 1
sin = 0
xck = 0
sin = 0 - ((wert AND &H04)<>0)
xck = 1
sin = 0
xck = 0
sin = 0 - ((wert AND &H02)<>0)
xck = 1
sin = 0
xck = 0
sin = 0 - ((wert AND &H01)<>0)
load = 1
xck = 1
sin = 0
xck = 0
load = 0
return

#start
start = 1
xck = 1
start = 0
xck = 0

#wait
xck = 1
if reade = -1 then goto scan
xck = 0
goto wait

#scan
xck = 1
if reade = 0 then end
put pixel
xck = 0
goto scan

end

Und noch ein erstes resultat:

tobimc
03.08.2005, 18:37
HI Z80!

Diesen Rand habe ich auch! Ich habe sogar noch einen komischen Rand am oberen Ende. Weis nicht, woher der kommt.

Die Register werden Im Datenblatt recht gut erklärt!
Ich habe es so gemacht, dass ich nur noch die Belichtung einstellen muss.

Gain und Offset sind bei mir 0.

Ich habe jetzt übrigens eine recht brauchbare automatische Belichtung etabliert. Funktioniert ganz gut!
Ich müsste die Berechnung der Belichtung aus meinem ADC-Wert verbessern und evtl. den Spannungsteiler etwas anpassen, aber im großen und ganzen ist das super!
(An dieser Stelle nochmals DANKE an Florian, der das Kabel und den Widerstand für den Spannungsteiler gesponsert hat, und eine einfache sowie geniale Idee hatte!!)

Ganz liebe Grüße,
Tobi

pebisoft
04.08.2005, 15:15
hallo, meine datenmenge beträgt 16384 pixeldaten, danach schaltet er den transfer ab, siehe while-schleife :
// 16384 Pixel auslesen
while( ( GBPIN & (1<<CREAD ) ) != 0 )
{
GBPORT |= (1<<CCLK);
// AD Wandler starten
ADCstart;
adc_wert=getadc();
// Daten einlesen
if (adc_wert > 255)
{
adc_wert=255;
};
usart_writeChar(adc_wert);
GBPORT &= ~(1<<CCLK);
delay_us(2);
}

unter "album, persönliche galerie, pebisoft" habe ich ein bild von der seriellen übertragung vom avr zum pc. wird mit visualbasic-5.0 dargestellt.
das bild ist 128x128pixel gross. also muss bei euch irgendwie die abfrage oder die darstellung nicht klappen. ich progge den avr in winavr-c.
mir fehlt nur noch der speicherbaustein am avr, den kriege ich selber nicht gebacken.
mfg pebisoft

roboter
05.08.2005, 14:50
Ich habe mit meiner Kamera jetzt auch nochmal ein bißchen gespielt.
hab das jetzt so gemacht, das die Kamera fortlaufend Bilder macht.
Ich habe auch einen Viewer geschrieben, der die Bilder nun ständig anzeigt.

Meine Frage ist nun: Wie kann man das ganze nun noch schneller machen? Wenn die kamera auf meinen Roboter montiert wird, sind die Bilder immer total verwackelt...
Ich meine im Datenblatt irgendwas von 10-30fps gelesen zu haben. Wie soll das denn gehen?

Achja, und den Rand habe ich auch.

MFG! O:)

pebisoft
05.08.2005, 18:32
hallo, wenn du mit der gameboycam ein bild machst, muss die kamera bis zur fertigstellung des bildes fest auf das object zeigen und das objekt darf sich auch nicht bewegen. es ist ein grosser nachteil dieser gameboycam.
roboter steht-bild fertig-roboter fährt-roboter steht-bild fertig- roboter fährt usw..
bei mir schaltet die kamera exakt nach 128x128 pixel den pin.
meine gameboycam wird mit winavr-c geproggt. das bild stelle ich auf dem pc mit einem selbsterstellten visualbasic-5.0-programm dar.
es hat keine ränder.
mfg pebisoft
das bild ist unter "album,persönliche galerie,pebisoft".

pebisoft
05.08.2005, 18:36
vielleicht stellt ihr mal euer funktionsfähiges bascom-programm rein.
kenne mich damit aus, vieleicht ist es ein timing-fehler.
mfg pebisoft
ps: diese aussage ist schmarren "Ich meine im Datenblatt irgendwas von 10-30fps gelesen zu haben. Wie soll das denn gehen?"

roboter
06.08.2005, 12:48
Im Datebblatt steht jedenfalls

Frame Rate: 10 fps - 30 fps

Hier dann nochmal mein derzeitiges Programm (liefert auch 16384 Pixel):
'Init:
$regfile = "m8515.dat" 'ATmega8515-Deklarationen
$crystal = 3686400 'Quarz: 4 MHz
$baud = 115200

Declare Sub Register_laden(addr As Byte , Wert As Byte)

'Variablen:
Dim Regaddr(8) As Byte
Dim Regwert(8) As Byte
Dim Bild(16384) As Xram Byte
Dim Z As Word
Dim I As Byte

'Register festlegen:
Regaddr(1) = 1
Regaddr(2) = 2
Regaddr(3) = 3
Regaddr(4) = 4
Regaddr(5) = 5
Regaddr(6) = 6
Regaddr(7) = 7
Regaddr(8) = 0

'Register für Positive Image
Regwert(1) = 0
Regwert(2) = 0
Regwert(3) = 60
Regwert(4) = 3
Regwert(5) = 0
Regwert(6) = 1
Regwert(7) = 4
Regwert(8) = 128

'Register für 2D Ext.
' Regwert(1) = &B11100000
' Regwert(2) = 0
' Regwert(3) = 60
' Regwert(4) = 3
' Regwert(5) = 0
' Regwert(6) = 1
' Regwert(7) = 128
' Regwert(8) = 0

Config Scl = Porte.0
Config Sda = Porte.2

I2cinit
I2cstart
I2cwbyte &B10010000
I2cwbyte &B00000000
I2cstop


Xckpin Alias Portb.0
Resetpin Alias Portb.1
Loadpin Alias Portb.2
Sinpin Alias Portb.3
Startpin Alias Portb.4
Readpin Alias Pind.5

'Pins festlegen:
Config Portb.0 = Output 'XCK
Config Portb.1 = Output 'Reset
Config Portb.3 = Output 'Sin
Config Portd.5 = Input 'Read
Config Portb.2 = Output 'Load
Config Portb.4 = Output 'Start

'Pins initialisieren:
Resetpin = 1 'Reset High
Xckpin = 1 'XCK High
Loadpin = 0 'Load Low
Startpin = 0 'Start Low

'Reset:
Waitus 1
Xckpin = 0
Waitus 1
Resetpin = 0
Waitus 1
Xckpin = 1
Waitus 1
Resetpin = 1
Waitus 1
Xckpin = 0
Waitus 1

'Register Laden
Call Register_laden(regaddr(1) , Regwert(1))
Call Register_laden(regaddr(2) , Regwert(2))
Call Register_laden(regaddr(3) , Regwert(3))
Call Register_laden(regaddr(4) , Regwert(4))
Call Register_laden(regaddr(5) , Regwert(5))
Call Register_laden(regaddr(6) , Regwert(6))
Call Register_laden(regaddr(7) , Regwert(7))
Call Register_laden(regaddr(8) , Regwert(8))

'Start:
Startpin = 1
Waitus 1
Xckpin = 1
Waitus 1
Startpin = 0
Waitus 1
Xckpin = 0
Waitus 1

Do
'Warten Bis Bild Fertig:
While Readpin = 0
Xckpin = 1
Waitus 1
Xckpin = 0
Waitus 1
Wend

'Bild einlesen:
Z = 0
I2cstart
I2cwbyte &B10010001
I2crbyte I , 8
While Readpin = 1
Xckpin = 1
Waitus 1
Incr Z
I2crbyte I , 8
Bild(z) = I
Xckpin = 0
Waitus 1
Wend
I2crbyte I , 9
Incr Z
Bild(z) = I
I2cstop

'Bild über die ser. Schnittstelle ausgeben:
For Z = 1 To 16384
Printbin Bild(z);
Next

Loop
End 'end program

'Register laden:
Sub Register_laden(addr As Byte , Wert As Byte)
'Registeraddr übertragen:
For I = 2 To 0 Step -1
Sinpin = Addr.i
Waitus 1
Xckpin = 1
Waitus 1
Xckpin = 0
Waitus 1
Next
'Registerwert übertragen:
For I = 7 To 0 Step -1
Sinpin = Wert.i
Waitus 1
Xckpin = 1
Waitus 1
If I = 0 Then
Loadpin = 1
End If
Waitus 1
Xckpin = 0
Waitus 1
Loadpin = 0
Next
Sinpin = 0
End Sub

pebisoft
14.08.2005, 18:04
'Pins festlegen:
Config Portb.0 = Output 'XCK
Config Portb.1 = Output 'Reset
Config Portb.3 = Output 'Sin
Config Portd.5 = Input 'Read
Config Portb.2 = Output 'Load
Config Portb.4 = Output 'Start

bei mir zeigt bascom immer fehler an bei obigen routinen.
hast du das programm, wie du es reingestellt hast tatsächlich zum laufen gebracht.
mfg pebisoft

luma
15.09.2005, 13:05
Wäre sehr nett wenn ihr euch ein bisschen um folgendes Thema kümmern würdet: https://www.roboternetz.de/phpBB2/viewtopic.php?p=114924#114924

Danke!

tobimc
15.09.2005, 15:27
Hi!

@pebisoft:
Das ist klar
>>Config Portd.5 = Input 'Read
ist falsch es muss
Config Pind.5 = Input 'Read
heißen... :D

VLG Tobi

McNugget
26.12.2005, 21:17
Hallo da,

ich habe diesen Thread einige Zeit verfolgt und nachdem ich es über die Weihnachtstage geschaft habe, meine GB-Cam an zu schließen muss ich mich der Diskussion anschließen und das Thema aus der Versänkung holen.

Ich wollte die den AVR in C programmieren. Das geht auch alles wunderbar, bis ich zum Punkt SRAM gekommen bin. Da habe ich einen Fehler, der mir kopfschmerzen bereitet... mehrere Tage und immernoch:
Wenn ich den Ram per Makefile aktiviere, geht der AVR nicht mehr an.
Das macht leider wenig Sinn. Ich habe schon alles versucht und alles eingestellt.. bin daran verzweifelt.

Mit dem Ergebnis, dass ich zu Bascom gegangen bin und dort das SRAM testete. Dort lief es auf Anhieb und macht seither überhaupt keine Probleme.
Allerdings ist Bascom extrem anfällig auf Stackprobleme, weswegen ich jetzt schon wieder haake.

Im augenblick sieht es so aus, dass ich die Camera auslese und die Daten komplett in ein SRAM mit 32kb schreibe. Anschließend schreibe ich die Daten serial an den PC und kann sie dort auswerten.

Viel lieber hätte ich jetzt eine Routine, die automatisch die Belichtungszeit ändert, um entsprechend Helligkeitsunterschiede auszugleichen. Mit GAIN wollte ich eigentlich nicht arbeiten.

Das Problem ist, dass die Camera auf der rechten Seite deutlich heller ausleuchtet, als auf der linken. So ab der Mitte ist das Bild links abnehmend dunkler...

Hier mal zur präsentation eine gut gelungene Aufnahme meiner Arbeitsplatzdekoration.. (siehe Anhang)

Da ist netterweise nicht zu erkennen, dass es rechts heller ist als links, allerdings weiß ich, dass die Wand rechts dunkler ist, denn die Lampe hängt links an der Wand ;) Dadurch wird das ausgeglichen.

So, ich stelle mal meinen C Code auch in den Anhang, damit sich das evtl mal jemand in Bezug auf SRAM-Problem anschaut! Das wäre mir wirklich sehr wichtig, denn ich möchte das so gerne in C programmieren.... :(

Zusätzlich stelle ich auch meine Bascom Datei online, die eine Funktionierende RS232-Leistung vorraus setzt.

Vielen Dank
Timo

ps. meine Registereinstellungen nach Reihenfolge:

80
03
00
14
01
00
01
01

tobimc
27.12.2005, 09:47
Hi!

Das sieht ja super aus!
(Funktionieren die "Intellige Tools" schon?)

Ich arbeite an einer Belichtungsroutine, muss alerdings erst auf meine Spezialplatine warten, da man zum Belichtung messen das Bild schnell einlesen muss. Ich hab aber schon mal ne Idee...

Kannst du bitte diene Registereinstellungen posten? Ich habe nämlich oben und unten komische Balken.
Es kommt auch drauf an, Wie die wände Beleuchtet sind. Auch mit IR!
Die GBC ist, wie ich festgestellt habe äusserst IR-empfindlich!

VLG Tobi

McNugget
27.12.2005, 10:01
Die Registereinstellungen stehe von Reg0 bis Reg7 alle in meinem "ps." des letzten Posts :P

Mit dem IR: Sehr geil! Ich dachte mir schon soetwas. Ich führte sogar überlegungen an, dass die Camera deswegen so unterschiedlich belichtet, weil die Neonröhren hier an der Decke möglicherweise IR-Licht mit ausstrahlen, was ich selbst ja optisch garnicht erfassen kann.

Intelligente Tools: Nein, die laufen noch nicht :D
Wäre auch zu schön gewesen. Aber ich habe Ideen im Kopf um das umzusetzen. Dauert aber noch.

Deine Spezialplatine: Hast du vor SRAM zu verwenden, wenn ja wieviel und womit willst du das Proggen? Zufällig in C? Dann könntest du dich nämlich schonmal mit meinem C Problem in Bezug auf mein SRAM auseinander setzen, denn das wirst du warscheinlich auch bekommen... :(

Gruß
Timo

ps. komische Balken habe ich auch. Allerdings nur unten. Ich bin davon überzeugt, dass es ebenfalls an den registereinstellungen liegt, wie eigentlich alles an der Camera. Im Datenblatt steht übrigens, dass die Camera nur 128*123 Pixel hat! Die Edge-Sharping Funktionen rechnen allerdings mitunter auf 128*128 Pixeln herum. Sehr widersprüchlich das ganze...

tobimc
27.12.2005, 11:20
Hi!

Ja, das mit dem IR ist auch ein Problem, weil die Camera anscheinend auch auf UV reagiert......

Haha meine On-Chip-Auswertung läuft schon bis zu nem gewissen Grad....
*löl*

Ja, meine Spezialplatine verwendet ein SRAM.
Das wird in Bascom geproggt, wird aber mit der neuen Platine viel einfacher.
Das SRAM auf der Platine Version 1 (64kb) funktioniert prächtig. Das ist eigentlich ganz einfach.
Ich möchte nur keine technischen Datern rausrücken, da es sich dabei um meine Jugend forscht Arbeit handelt.

Ja, 128*123... das habe ich auch schon gelesen. Aber ich habe auch einen Balken oben. Hm. komische Sache. Das MUSS an der Kamera liegen, weil mein Bild sonst absolut super ist.
Ist ne komische Angelegenheit.
Ich werde mal zählen, wann READ auf LOW geht. das müsste man ja deutlich merken.

VLG Tobi

McNugget
27.12.2005, 12:51
bei mir geht read entsprechend bei ab 123 auf low.

tobimc
27.12.2005, 13:08
hi

Hm muss ich mal testen.. *keinezeit*
vlg...

super_castle
28.12.2005, 19:44
Hallo, die Zeilen betragen 123 Stück.
Der obere Balken kommt daher, das die Daten zu spät aufgenomen werden, es ist eine Verzögerung deinerseits.
Die Zeilen unten kommen von dir, weil du den y-Wert auf 128 hast und nicht auf 123.

Wenn der ADC vom AVR des Menschen Gustav genauso 100% arbeitet wie der von Emil, dann kannste die Register von Gustav verwenden, ansonsten musst du deine eigenen nehmen, weil die obigen ADC nie 100% identisch sind. Heisst also, Emil muss seine Werte selber herausfinden.

Wenn beide Cams im gleichen Raum benutzt werden, wird der eine von euch sagen , das ist eine tolle Beleuchtung und der Andere flucht rum, weil die gleichen Einstellungen zu keinem Ergebnis führen, ist halt so.

Darum Tobi weden dir diese Registereinstellungen nicht viel nützen, du musst deine ausgeklügelten nehmen.


mfg Castle

McNugget
30.12.2005, 15:07
Es sei an dieser Stelle mal was angemerkt:

Es wird hier oft geschrieben, dass die Register Einstellungen stark von der Camera abhängen und manche kurze und manche lange Belichtungszeiten einstellen müssen. Das liegt an folgendem Grund:

Der eine verwendet eine C-Control, der andere einen AVR mit Bascom, der andere einen mit C und wieder andere mit wieder anderen Tackfrequenzen, um die Camera auszulesen.
Da der Programmierer allerdings dafür verantwortlich ist, an die Camera eine Clock anzulegen - spätestens jetzt sollte es bei jedem schalten, der es noch nicht erkannt hat - ist es massiv clock-abhängig, wie stark bei einer bestimmten Registereinstellung belichtet wird. Das gilt natürlich für alle zeitabhängigen Einstellungen.

Ich habe das ganz besonders gemerkt, als ich von Bascom endlich auf C umsteigen konnte - nachdem mein Speichermodul denn endlich lief. Bascom bedient den ADC anders als ich es mit C mache, somit bin ich mit C viel schneller mit dem Auslesen. Zum anderen tickt meine "warte auf ready-Signal" Clock wesentlich schneller, als sie es unter Bascom getan hätte. Dadurch kann ich jetzt in 0.5 Sekunden ein Bild machen und verarbeiten, statt pro Bild 2-4 Sekunden warten zu müssen.

Der absolute Flaschenhals ist nach wie vor der RS232-Port, der einfach zu langsam ist um damit wirklich Bilder übertragen zu können.
Meine Idee ist daher, denn LPT1 Port zu aktivieren und eine parallele Kommunikation zwischen AVR und PC herzustellen. Damit sollte sich um einiges Schneller der Datenzatz übertragen lassen, evtl sogar eine Echtzeitdarstellung realisieren :)

### anderes Thema #######################

Ich versuche zur Zeit den AD-Wandler des AVR Mega 128 auf FreeRun Modus einzustellen. Der schafft dann ca. 200Khz. Damit würde es ca. 120 ms ein Bild zu schießen und zu digitalisieren. Das wäre ein erstrebenswertes Ziel, da man so schon fasst 8fps erreichen könnte.

Leider macht mein AD-Wandler das nicht. Ich setze also das FreeRun-Flag und starte die erste Wandlung mit dem "SingleConversion"-Flag.
Der AD-Wandler sampled den ersten Wert der anliegt, und erneuert anschließend das Register nie wieder.
Wenn ich vor jedem Pixel wieder das "SingleConversion"-Flag setze und warte, bis das "SingleConversion"-Flag im Register auftaucht, dann habe ich immer frische Pixel-Werte, jedoch geht das entsprechend Langsam. Ich denke an ca. 60Khz, statt 200 möglichen.
Wenn ich so vorgehe, habe ich praktisch immer an sehr ähnlichen Stellen im Bild Pixel, die 255 hell sind. Es handelt sich um einzelne ausreißer, die mir anschließend bei dem Versuch eine Belichtungsautomatik zu programmieren, bzw. laufen zu lassen, das Leben schwer machen!

Kennt soch jemand evtl. mit beidem aus, und kann mir sagen, woran das wohl liegen mag?

Gruß
Timo

tobimc
30.12.2005, 20:01
HI!

JA, das ist richtig, aber ich möchte meine mal überprüfen...
Ich werde sowieso demnächst mit einem völlig anderen ADC arbeiten.

Das mit dem Free Run habe ich auch schon probiert. Kannst du vergessen.

Das einzige was du machen kannst, ist einen schnelleren ADC zu benutzen. Da bin ich auch gerade dran.

VLG Tobi

McNugget
30.12.2005, 20:51
Das mit dem Free Run habe ich auch schon probiert. Kannst du vergessen.

Die Frage ist doch: Warum?

tobimc
30.12.2005, 21:46
Hi!

Weil der Messpunkt meistens genau dann ist, wenn du gerade das nächste Pixel lädst.

Ausserdem macht doch der AVR-ADC nur 70KHz, oder???

Viele liebe Grüße,
Tobi

x-ryder
06.01.2006, 16:52
ich hab jetzt nicht ganz alles gelesen, verzeiht mir, aber warum zum teufel nehmt ihr nich einfach die CMUCam? die ist garantiert viel viel einfacher anzusteuern, und hat auch noch farbe, kann diese suchen, automatisch verfolgen, und hat noch EINIGE weiter funktionen die ich sehr schätze, ausserdem macht die immer nen bild, speicherts ab, und dann kann man damit rumexperimentieren, also kann der roboter einfach bilder im fahren machen, und die bilder sind trotzdem verwertbar, wenn ihr aber mit der GBCam wat macht, müsst ihr das bild selber speichern, selber auswerten, und auch selber holen, das müsst ihr bei der cmucam nicht, und in der anleitung iss das ansprechen der cmucam zwar ziemlich kompliziert beschrieben, wenn mans raushat, denkt man sich aber: mein gott, warum nicht gleich so, also iss das einfach nur kacke beschrieben, wenn jemand interesse an einer doku hat (wäre dann in bascom) dann kann ich mich mal dransetzen eine zu schreiben, für alle unglücklichen GBCam besitzer

Martin

x-ryder
06.01.2006, 16:54
ich hab jetzt nicht ganz alles gelesen, verzeiht mir, aber warum zum teufel nehmt ihr nich einfach die CMUCam? die ist garantiert viel viel einfacher anzusteuern, und hat auch noch farbe, kann diese suchen, automatisch verfolgen, und hat noch EINIGE weiter funktionen die ich sehr schätze, ausserdem macht die immer nen bild, speicherts ab, und dann kann man damit rumexperimentieren, also kann der roboter einfach bilder im fahren machen, und die bilder sind trotzdem verwertbar, wenn ihr aber mit der GBCam wat macht, müsst ihr das bild selber speichern, selber auswerten, und auch selber holen, das müsst ihr bei der cmucam nicht, und in der anleitung iss das ansprechen der cmucam zwar ziemlich kompliziert beschrieben, wenn mans raushat, denkt man sich aber: mein gott, warum nicht gleich so, also iss das einfach nur mies beschrieben, wenn jemand interesse an einer doku hat (wäre dann in bascom) dann kann ich mich mal dransetzen eine zu schreiben, für alle unglücklichen GBCam besitzer

Martin

McNugget
06.01.2006, 17:08
Also, hm ich spreche mal für mich selbst, aber ich denke es geht mitunter darum, dass die GB-Camera so unglaublich günstig ist.
Zudem ist das Auslesen eigentlich auch garnicht so kompliziert (obwohl sich das Bild bei mir grade aus irgeneinem Grund verabschiedet hat) und man kann es ganz bequem im SRAM speichern.

Einziger wirklich großer Nachteil ist, dass die Camera SW ist. Damit sind einem viele Möglichkeiten zur Auswertung genommen.

An sonsten finde ich die CMUCam auch ganz toll, liegt allerdings weit außerhalb dessen, was ich für eine Camera zahlen würde. Dafür bekomme ich schon Servos für ne 6beinige Spinne...

Gruß
Timo

x-ryder
06.01.2006, 17:23
hmm also es ist so:

die cmucam hat einfach schon eine verarbeitung drin, und man glaubt erst gar nicht so richtig, was man alles damit machen kann, dazu muss man sie erstmal getestet haben, zum beispiel eine eigene kantenerkennung, oder colortracking, das hat mich dazu veranlasst die zu kaufen, und ich denke auch, sie ist es wert, denn stell dir jetzt mal vor, du würdest alle diese verarbeitungsschritte in deinem µc selber schreiben, erstmal wärs natürlich relativ schwer, ausserdem geht dir dabei enorm speicher flöten.

ausserdem ist die com zwischen µc/PC und der cam viel einfacher nämlich normales RS232, und die servos die du dir kaufen willst für deine spinne, kannst du auch gleich an die cam packen ^^

man erspart sich einfach viiiiiiiel arbeit dadurch

letztens hab ich noch was nettes entdeckt, man kann nämlich auch schaun, ob nen mensch im bild ist, oder nurn rotes blatt, wenn man gut rumexperimentiert mit den histogrammen.

dann gäbs da noch die bewegungserkennung, die ist sehr praktisch, wenn der robo ne runde steht, und was überwachen soll oder sowas, dann geht man in den erkennungsmodus, guckt wann was kommt, guckt vor allem wo das iss, dann macht man ein virtuelles fenster um den bereich, und sucht mit colortracking raus, obs nen mensch iss, oder z.b. nur ne katze, also iss schon ziemlich mächtig die cam ^^

Martin

super_castle
07.01.2006, 12:09
"wenn jemand interesse an einer doku hat (wäre dann in bascom) dann kann ich mich mal dransetzen eine zu schreiben, für alle unglücklichen GBCam besitzer"

Das wäre nicht schlecht..

Castle

super_castle
07.01.2006, 12:13
Bei Jufo wäre die CMUCam wohl nicht das richtige.
Für nicht Wettbewerbe o.k.

Castle

x-ryder
07.01.2006, 16:05
was wäre denn wünschenswert, nur kommunikation mit der cam, oder auch gleich noch beispiele, was man so mit den befehlen machen kann, oder sonst noch?

super_castle
08.01.2006, 12:44
....kommunikation mit der cam.

Kein Schnickschnack.

Castle

tobimc
08.01.2006, 14:43
Hi

Ich wollte mcih eigentlich nicht in diese Diskussion einmischen.
Aber ich arbeite gerade ein einem Jufo-Projekt mit der GBC.
Und du wirst es cniht glauben, aber es geht: Bildauswertung mit dem M8.

Ob dus jetzt glaubst oder nicht... ;D

VLG Tobi

ogni42
14.01.2006, 21:18
Bin noch nicht ganz durch aber schon mal ein paar Vorab Erfahrungen:

Setup:

gamboy-Kamera an ATMega168 mit 18,432MHz Takt, 5V Versorgung.

Die Bilder werden während des Einlesens direkt über UART0 an den Host übertragen und dort mit dem hier schon erwähnten Java Programm angezeigt.

Folgende Dinge sind dabei zu beachten:
Damit der READ Pin auf low geht, dürfen einige Register nicht 0 sein! Ich teste das mal und setze die Werte hier ins Forum. Wichtig ist aber schon mal auf jeden Fall, dass die Belichtungszeit nicht 0 sein sollte. Damit muss entweder im C0 (reg3) oder C1 (reg2) Register ein Wert != 0 stehen.

Damit im Normalmodus (grauwert-positiv-bild) auch etwas erscheint, muss P=1 M=0 und X=1 sein (reg 4, 5, 6). Steht im Datenblatt auf Seite 14.

Jetzt kommt der entscheidende Punkt, damit man bei der direkten Übertragung des Bildes zum Host über die Serielle auch etwas sinnvolles erkennen kann:
Der M64282FP Chip, der in der Gameboy Kamera verbaut ist, hat keinen Shutter (Verschluss). Das heisst, dass während das Bild ausgelesen wird, die CMOS Elemente weiter Licht aufnehmen! Deswegen kommt es auch zu seltsamen Bildern, wenn man die Kamera zu schnell bewegt.

Hier mal eine kurze Berechnung.
XCLK wird optimal, sprich mit 500kHz getaktet. Den ADC squeeze ich ein bisschen, was laut Datenblatt OK ist, da nur 8bit verwendet werden, mit Prescaler 64, auf 288KHz. Eine ADC Wandlung braucht 13 Takte. Macht also als Gesamtzeit für ein Pixel:

13*1/288k+2us = 47.14us/Pixel

Alle Pixel brauchen dann: 128*128*47.14us = 740ms.

Was fehlt? Richtig: Die Übertragung zum Host!

Dadurch wird die Zeit pro Pixel verlängert. Bei 115200bd ist das (8N1+Startbit) = 115200/10 = 11520kB/s =>86.8us/Pixel. Die kommen also zu unserer Kalkulation oben nochmal hinzu.

In Summe landen wir dann bei 2.162 Sekunden/Bild.

Fazit:
Liest man nur das Bild ein, braucht man mit dem ATMega168, bzw. allen Designs, die den internen ADC der AVRs verwenden, 740ms/Bild. Das ist dann auch die Gesamtbelichungszeit für das letzte Pixel (das erste Pixel hat nur die normale Belichungszeit plus irgendwas <47us für's Auslesen). Schreibt man die Daten direkt zum Host wird's nochmal schlimmer. Die Belichtungszeit ist dann so lange, dass die CMOS Elemente ruckzuck in die Sättigung gehen (Weisses bzw. graues Bild).

Deswegen sollte die initiale Belichtungszeit kurz sein, da die Kamera während des auslesens noch genügend Licht aufnimmt.

Hier sind mal meine Parameter: Belichtungszeit ist in us. Offset Voltage in mV (ist aber 0) und Referenzspannung in Volt*2 (damit kein float anfällt). Ist aber auch 0 das Schwarz auf 0V kalibriert werden soll.



void initRetinaParams( void )
{
_retinaParams.mode = grey;
_retinaParams.enhancement = false;
_retinaParams.enhancementRatio = 50;
_retinaParams.invertImage = false;
_retinaParams.exposureTime = 4500;
_retinaParams.offsetVoltage = 0000;
_retinaParams.outputVoltageRef2 = 0;
_retinaParams.outputGain2 = 104;
_retinaParams.boostGainBy6dB = true;
}


Das führt bei mir zu folgenden Registerwerten:
0: 0x80
1: 0x10
2: 0x01
3: 0x19
4: 0x01
5: 0x00
6: 0x01
7: 0x00


Ich baue im Momemt noch eine Routine für's Binning (Reduktion der Bildauflösung). Sobald die fertig ist (hoffentlich morgen) kommt der ganze Code hier ins Forum. Das Bild ist dann zwar nur noch 24x24 Pixel groß, dafür wird es aber mit der vollen ADC Rate eingelesen und es ist noch genügend Platz im SRAM des 168 um Bildverarbeitung und diversen anderen Kram zu berechnen.

Für meine Zielapp werde ich eher auf den 162 wechseln, da der ein externes Speicherinterface hat, so das man ein komplettes Bild in maximaler Auflösung halten kann. Ausserdem sollte ein externer ADC ran, der die 500KHz Samplerate bringt.

Angenehmen Abend.
Ingo

BTW: Besteht Interesse am Code in C++ oder machen hier alle C?

super_castle
14.01.2006, 21:49
Ein externer ADC braucht nicht ran beim AVR , nur bei der C-Control.
Auch wenn man die Cam ganz langsam bewegen tut, kommen Schlieren weil die Cam nicht anders verarbeiten kann.

Ich nehme die Cmucam2, dort wird das Bild nach dem Schnappschuss sofort gespeichert bis Ultimo.



Castle

ogni42
14.01.2006, 21:59
wie bereits oben geschrieben:

Ich benutze den internen ADC und habe die Taktrate schon über die mögliche Grenze gesetzt. 288kHz statt 200. Um die Kamera aber schnellstmöglich auszulesen, muss man einen externen ADC verwenden.

Hinzu kommt, dass kein AVR genügend SRAM an Bord hat um ein Bild (16384 Pixel) vollständig zu speichern. Deswegen der 162, der kommt mit einem externen Memory Interface (XMEM).

McNugget
14.01.2006, 23:04
Ein externer ADC braucht nicht ran beim AVR , nur bei der C-Control.
Auch wenn man die Cam ganz langsam bewegen tut, kommen Schlieren weil die Cam nicht anders verarbeiten kann.

Ich nehme die Cmucam2, dort wird das Bild nach dem Schnappschuss sofort gespeichert bis Ultimo.



Castle

Naja, das ist aber eine komische Aussage. Das ist wie: "Der wagen braucht keine 200 PS der läuft auch mit 50ps von A nach B"
Das wir wirklich sehr gerne die Gameboycamera verwenden möchten, sollte im laufe dieses sehr umfangreichen Threads ebenfalls deutlich geworden sein... :-k

Es gibt einen scheinbar sehr guten AD-Converter bei Reichelt. Und zwar handelt es sich um den ADS 830 E . Der schafft satte 60 Mhz und ist quasi der einzige, den ich finden konnte, der parallel Daten ausgibt! Er ist spezialisiert auf hochlast Aufgaben wie Video digitalisieren. Zumal er nur 5.25 Euro kostet.

Warum steigst du nicht auf den Mega 128 um? Der hat nicht nur ebenfalls das XRAM Interface, sondern auch die aktuelleren und evtl schnelleren Operationen.

Ich verwende C. C++ will mein Compiler nicht compilieren.

BTW: du hast fasst genau die selben Regsitereinstellungen, wie ich. Da wir praktisch die gleiche Tacktrate haben, ist das ein gutes Zeichen dafür, dass wir auf dem richtigen Weg sind :)

Gruß
Timo

ogni42
14.01.2006, 23:51
Ich bekomme auch vernünftige Bilder von der Kamera. Aber da die Auslesezeit so hoch ist, muss die Belichtungszeit eben sehr kurz und der Raum einigermassen dunkel sein.

Den 162 verwende ich, weil es den in DIL gibt und ich die Platine erstmal fädeln will.

ADC: Da reich ein Chip der 500kHz schafft. Schneller kann die GameboyKamera die Daten ja nicht liefern. Ich werde einen ADC0804CN verwenden. Der ist schnell genug, liefert die Daten in 8bit und kostet 3.50 bei Reichelt.

Um mit C++ zu arbeiten muss man das Makefile im AVR Studio exportieren, dann im Makefile die Zeile CC=avr-gcc nach CC=avr-g++ ändern und in den Projekteinstellungen das Makefile auswählen. Funktioniert einwandfrei. Einziger - und wie ich finde gravierender - Nachteil: Man kann den Simulator des AVRStudio (noch) nicht mit C++ benutzen. Aber ansonsten schon sehr schick.

ogni42
14.01.2006, 23:54
BTW, die CMUCam2 ist ja sehr interessant, aber leider 59 mal teurer als die GBKamera. Ich habe für die GBKamera 1 Euro bezahlt (da habe ich dann direkt vier genommen :)). Abgesehen davon: Der Reiz liegt ja auch darin, die Hardware zu meistern, oder? Ansonsten kann man ja direkt einen Aibo kaufen.

tobimc
15.01.2006, 08:13
HI!

Wenn du mal wieder so ein Schnäppchen siehst, sagsts mir, oder kaufst mir auch gleich 5 GBCs mit... :D

VLG Tobi

PS: Ein Bild der GBC hat 15744 Pixel.
Ich verwende einen ADC0820, allerdings mit dem neuen System, und das muss ich jetzt erst noch zum funzen bringen, bin aber zuversichtlich, dass das bald läuft.
Ich weis nicht, warum ihr so unsagbare Angst vor RAMs habt! Ich steuere ein RAM mit dem Mega8 an! Und mit dem M16, alles über Software. Das XRAM Interface ist ja was nettes, aber man brauchts nicht unbedingt. Wenn man in ASM programmiert ist man fast so schnell...

have fun

ogni42
15.01.2006, 10:09
Hi Tobi,

die Kameras habe ich bei eBay ersteigert. Da gibt's die massenweise. Kommen halt noch Versandkosten dazu, aber das ist auch nicht die Welt.

Laut Datenblatt liefert die Kamera aber alle 128*128 Pixel (s. S 17 im Datenblatt). Von denen sind, je nach Modus, aber weniger genutzt

Klar kann man SRAM auch per Software ansteuern, aber warum? Der Mega 162 kostet bei Reichelt <6Euro. Einziger Nachteil: Er hat kein TWI, aber das ist im Moment zu verschmerzen und ausserdem in Sotware noch leichter nachzubilden.

tobimc
15.01.2006, 11:09
HI!

Ja, bei ebay, aber da hat meine 11€ gekostet.

Aber laut Datenblatt des Sensors, M64282FP, Seite 3 Punkt 6, Image Sensing Specifications 1, 1. Zeile, hat der Sensor eine Auflösung von 128*123 Pixel... :D
(Ich weis, auf Seite 1 steht, dass er 128*128 häbe, er hat aber (ich bekomm nie mehr) 123 in y-Richtung.)
Er schickt die letzten 5 zeilen zwar, aber die haben einen Informationsgehalt von 0...

Warum sollte man das XRAM Interface verwenden? In der Software bin ich viel flexibler und kann meine Busse so legen wie es mir vom Layout her passt.
TWI brauch ich bei der Auswertung eh keinen.
Ausserdem ist ein RAM in der Software viel einfacher als ein TWI.

VLG Tobi

ogni42
15.01.2006, 11:22
Richtig, die effektiven Pixel sind geringer (im Kantenerkennungsmodus sogar nur 121 Zeilen) aber der Sensor liefert immer die gesamte Pixelzahl. Die ungenutzen muss man dann eben ausblenden.

XRAM ist beim 162 halt schon da. Aber das ist sicherlich jedem selbst überlassen.

tobimc
15.01.2006, 12:26
Hi!

Ja so ist es.
Mein neues System läuft jetzt auch, das schöne ist, dass mit dem schnellen ADC der Balken oben weg ist. Problem bis jetzt: Kontrast hat das ding wohl noch nicht gehört, das schwimmt alles in ner grauen Suppe.
Ich werd noch ein Bisschen mit dem Offset und dem Gain spielen. Schade dass sie keine automatische Belichtungsmessung hat.

@ogni: Welches Tool benutzt du, um die Bilder aufm PC darzustellen?

VLG Tobi

McNugget
15.01.2006, 13:15
Kontrast hast das warscheinlich schon, allerdings hat die Camera nur 2Vpp. Wenn man das nicht bedenkt, dann denkt man, dass die Camera wenig kontrast hat und wundert sich, warum die Registereinstellungen zwar das Bild heller oder dunkler machen, aber der Kontrast nicht ansteigt :)

Gruß
Timo

tobimc
15.01.2006, 13:20
Hi!

Naja, das Bild des anderen Systems ist doch noch etwas kontrastreicher...

Was minst du mti Vpp? Kann ja jetzt sein, dass ich da voll ins Näpfchen trete, aber ich weis es ned... ;D

VLG Tobi

ogni42
15.01.2006, 13:36
Vpp = Voltage peak to peak, quasi der Spannungshub.

Wenn man also Vref = 0V setzt, liefert die Kamera maximal 2Volt als Weisspegel. Guter Hinweis von McNugget, das hatte ich nämlich vergessen. Dementsprechend muss man VRef für den ADC einstellen.

Tobimc: Ich benutze das Java Programm, das hier schon mal erwähnt wurde. Die javax.comm habe ich bei mir installiert. Ich hänge das Ganze mal hier an den Post dran.

Um das Anzeigeprogramm zu bennutzen muss das jar File richtig installiert sein und - wenn man eclipse benutzt - auch als jar ins Projekt importiert werden. (ist alles attached)

(code gelöscht wg. Platzmangel. Bei Bedarf bitte PN an mich, Grüße /Ingo)

tobimc
15.01.2006, 13:41
Hi!

Ahhh... hm also könnte ich das theoretisch mit der offset ausgleichen? ich habe ne Vref am ADC von 5V.
(am anderen System aber auch...)

Danke, das hätts nicht gebraucht, ich benutze mein eigenes Tool, das ich in C geschrieben habe.
http://www.tobias-schlegel.de/sides/computer/software/gbcv0.5efinal/GBCV.zip
(Infos auf meriner HP unter Andere -> Computer -> Software www.tobias-schlegel.de )

Das ist einfacher zu handeln, find ich...

VLG Tobi

McNugget
15.01.2006, 13:46
Der AD-Wandler, den ich dir genannt hatte, misst sogar genau im Bereich 0-2V oder 0-1V. Daher hatte ich den mitunter für gut befunden.
Damit wären auch Composite-Video Signale möglich!

An sonsten: guter AD-Wandler da! Ich werde mir den auch mal anschauen! Ich hoffe nur, der ist nicht Seriel! :)

Gruß
Timo

tobimc
15.01.2006, 14:36
Hi!

Der ADC0820 hat ne Wandlungszeit von 1,4us, und gibt parallel aus.

Also könnte ich die Sache tatsächlich durch die Offset-Spannung aufpeppen?

VLG Tobi

McNugget
15.01.2006, 15:28
Hm, ich kann den AD Wandler bei Reichelt nicht finden. Hast du evtl einen Link?

ogni42
15.01.2006, 16:49
@tobi: Nein, die offset spannung hilft Dir nicht weiter. Deine Referenzspannung für den ADWandler muss 2V sein, damit der maximale Pegel der Kamera (sofern kein offset drauf liegt) mit 0xff digitalisiert wird (bei 8bit Genauigkeit des Wandlers)

Formel ist etwa: pixel = 0xff*V_kamera/VRefADC

Wenn Du nun einen Offset aufaddierst, gibt das:

pixel = 0xff*(V_kamera+Voffset)/VRefADC

Damit verschiebst Du also nur den Bereich. Wenn V_kamera 0 ist, werden Deine pixel in dem Moment != 0 (Sprich. nicht mehr schwarz) sein.


Gerade ist meine Hardware in die Fritten gegangen, Takt funzt nicht mehr, super :( Vorher hatte ich aber noch VRef extern auf 2.5V gelegt und die Bilder waren super. Auch das Binning klappt, code kommt nachher. Muss noch ein bisschen Schminke drauf tun.

tobimc
15.01.2006, 18:08
Hi!

Jungs, da ist irgendwie was faul! Bei meinem anderen System bekomm ist super Bilder (auch weiß!!), obwohl auch da die VREF = 5V ist!! Und da nichtmehr. Die Ref ist gelayoutet, die kann ich also nichtmehr ändern.

VLG Tobi

McNugget
15.01.2006, 18:13
durchkratzen und neu verdrahten

tobimc
15.01.2006, 18:57
Hi!

Ha ha das ist nicht lustig, das sind gefertigte Platinen für 20€ das Stück...

Ausserdem...
siehe Anhang...

Die AREF des M8s ist mit VCC verbunden. Hab ich extra nachgemessen. der adc wird in bascom so konfiguriert:
Config Adc = Single , Prescaler = Auto
Ich weis nicht, jetzt hängt alles von einem ab: Wen ich das in Bascom so konfiguriere, wo kommt dann die Vref her? Extern oder intern?

ogni42
15.01.2006, 19:11
Weispegel (=0xff) kann ja 5V sein, dann ist aber der Schwarzpegel eben nicht bei 0V.

Bei mir zumindest lagen die Werte minimal und maximal immer im Bereich von ca. 100 auseinander, was bei 5V ungefähr 2V Hub des Signals entspricht.

Das erste Bild von Dir sieht auch danach aus. Bestimme einfach mal den minimalen und maximalen Helligkeitswert. Falls Du ein Oszi hast, kannst Du Dir das Signal ja anschauen.

Falls Du das bei Dir nicht mehr ändern kannst/willst: Verstärke das Signal der Kamera über einen OpAmp.

tobimc
15.01.2006, 19:15
HI...

OpAmp geht schonmal garnicht...
Das ist ne JuFo-Platine, da sollte alles stimmen...

Im Übrigen ist die Vref bei Kjions Board auch auf Vcc.........

VLG Tobi

ogni42
15.01.2006, 19:26
Sind denn dessen Bilder besser (habe die bisher noch nicht gesehen)?

Laut Datenblatt (Abschnitt 7) bringt der Chip nun mal nur 2Vpp, was im übrigen schon mehr als FBAS Pegel ist. Da kannst Du jetzt beliebig mit offset und vref spielen, das wird daran nichts ändern.

Vielleicht hilft ja das Drehen an den Werten für den gain etwas, setzt aber voraus, dass Gain den Analogpegel verstärkt. Das geht aus dem Datenblatt leider nicht hervor, scheint aber genau das zu sein, was Kijon getan hat.

McNugget
15.01.2006, 20:06
Gain verändert nicht den Hub von 2V! Der verstärkt nur die Pixel so lange, bis alles weiß ist.

Tobi, bei deinem unteren Bild läuft ne Variable über. Deswegen wird das ganze schwarze auch plötzlich wieder weiß. Das liegt daran, wenn du deinen 10bit AD-Wandler im 8-bit Modus betreibst, aber statt der left-adjusteten 8bit des 10 bit wortes die normal right-adjusteten unteren 8bit verwendest. Das kannst du in den Steuerregistern deines AD-Wandlers festlegen. Also ob das Wort left oder right adjusted sein soll. Wenn du nur 8 bit brauchst, dann musst du es left-adjusten, damit du das überhaupt sinnvoll für die Camera verwenden kannst.

Gruß
Timo

EDIT: Das erklärt außerdem, warum sich die beiden Systeme so stark voneinander unterscheiden. Denn bei denem alten hast du scheinbar nur die unteren 8bit ausgelesen, was selbst aus einem sehr schwachen Bild ohne offset und gain noch hohe kontraste holt. Allerdings ist die Gefahr des überlaufs, nämlich wenn der Pixelwert größer als 255 wird, enorm groß!

tobimc
15.01.2006, 20:34
Hi!

Das wäre eine annehmbare Theorie, allerdings verwende ich den ADC6 des M8, den es nur bei der SMD-Version gibt. Der kann nur 8Bit. Und deshalb kann keine Variable überlaufen.

Ausserdem würde doch da eigentlich totaler Müll rauskommen, oder?

http://www.kreatives-chaos.com/bilder/allgemein/gbcam/gbcam_java.jpg
Dieses Bild hat Kjion mit dieser Konfiguration, Vref an VCC gemacht. Also warum sollte es nicht ebi mir auch funzen?

VLG Tobi

super_castle
15.01.2006, 21:31
Das Bild sieht aus, als wenn es nachgearbeitet wurde.
Es ist nicht Original.

Castle

McNugget
15.01.2006, 21:37
Nah, wenn es nachbearbeitet wäre - also vernünftig - dann sähe es aber noch deutlich besser aus. Der kontrast ist viel zu gering. Das erste was ich machen würde wäre eine Grauwertspreizung und dann hat man gleich gute kontraste...

EDIT: in meiner modifizierten Version sieht man deutlich, dass er zu kurz belichtet. Die dunkelheit am oberen Rand kommt daher, dass er zeilenweise ausließt und erst wenn die Pixel ausreichend belichtet werden, werden sie heller als schwarz. Dann erreichen sie eine sättigung und werden fortan gleichmäßig heller bis zum weiß.

McNugget
15.01.2006, 21:50
Ausserdem würde doch da eigentlich totaler Müll rauskommen, oder?

Nochmal Nachtrag: Hier ein Bild von mir, dass aufgenommen wurde, als ich eben genau die 8 rechten Bits verwendet habe. Für meine Werte gilt dann, dass sie ab einer bestimmten Helligkeit (über 255) überklappen.
0011111111 -- 255
0100000000 -- 256 --> damit 0

Darum bricht das Bild zusammen.

Gruß
Timo

ogni42
16.01.2006, 10:41
@McNugget:

Du hast recht. Das mit der unterschiedlich langen Belichtungszeit ist ja genau das Problem, wenn man die internen ADCs verwendet, da die recht langsam sind. Überträgt man das Bild gleichzeitig noch zum Host verschärft sich das Problem noch. Eine grobe Überschlagsrechnung habe ich ein paar posts weiter oben mal gemacht.

Wenn der Gain nicht die Ausgangsspannung verstärkt, bleibt nur VRef des ADC auf 2V+x (für ein bisschen Sicherheit) zu setzen, oder siehst Du noch eine andere Möglichkeit (ausser das Signal über OpAmp zu verstärken)?

super_castle
16.01.2006, 12:20
"Überträgt man das Bild gleichzeitig noch zum Host verschärft sich das Problem noch."

Das sollte man auf keinen Fall machen und sofort verwerfen. Die Auswertung kann nur auf dem AVR geschehen, nirgendwo anders.



Castle

tobimc
16.01.2006, 12:37
HI!

MIt dem Variablen überlafen... Ok, das erklärt einiges, aber wenn es bei Kjion funzt muss es bei mir auch funzen...
Ich hab mir schon was überlegt, notfalls werde ich eine huckepack-Platine entwickeln, die die Vref auf 2,5V runterteilt.


Das sollte man auf keinen Fall machen und sofort verwerfen. Die Auswertung kann nur auf dem AVR geschehen, nirgendwo anders.
Das geht schon! Die Übertragung eines Bildes geht bei 19200bps ca. 20 Sekunden.

VLG Tobi

ogni42
16.01.2006, 12:39
Die direkte Übertragung zum Host ist aber die einzige Möglichkeit auf AVRs ohne externen Speicher ein komplettes Bild aufzunehmen und sichtbar zu machen. Dass das für Weiterverarbeitung so nicht geeignet ist, steht auf einem anderen Blatt. Dient ja in erster Linie zum Testen.

Weiterverarbeitung auf AVRs ohne externen Speicher ist ohnehin nur mit reduzierter Auflösung möglich.

tobimc
16.01.2006, 12:59
Hi!


Weiterverarbeitung auf AVRs ohne externen Speicher ist ohnehin nur mit reduzierter Auflösung möglich.
Oder mit nem speziellen Verfahren...

VLG Tobi

ogni42
16.01.2006, 13:24
@tobi: Natürlich kann man sich Algorithmen vorstellen, die auch mit weniger Speicher auskommen. Generell kann man ein ganzes Bild aber nur dann in den internen SRAM quetschen, wenn man in irgendeiner Weise eine Datenreduktion durchführt.

Teile des Bildes lassen sich natürlich immer verarbeiten.

edit: Mit Datenreduktion meine ich Reduktion des Informationsgehaltes (bspw. jpeg Kompression), nicht zwingend Anzahl der Pixel.

ogni42
16.01.2006, 15:03
Hier:
https://www.roboternetz.de/phpBB2/viewtopic.php?p=149110#149110
habe ich mal meinen Code gepostet (hatte versehentlich auf neues Thema geklickt).

tobimc
17.01.2006, 20:33
HI!

Ich habe jetzt die Vref auf knapp 2V geändert.
Ich bekomm aber nur 255...

Und nun?

VLG Tobi

McNugget
17.01.2006, 21:09
Es kann sein, dass dein AVR, das nicht mit macht. Ich weiß grad nicht mehr, verwendest du grade einen externen AD-Konverter? Dann geht das natürlich. Beim AVR darfst du eine bestimmte Grenze nicht unterschreiten, da sonst der AD-Wandler nicht mehr vernünftig arbeiten kann.

Diese Grenze ist ca. bei 2,3-2,5V hab ich gelesen.

Gruß
Timo

super_castle
17.01.2006, 22:14
hallo, ich übertrage 20x20 pixel in das sram vom avr16.
dieses fenster ist entscheidend für das hindernis.
die auswertung habe ich noch nicht geschrieben.

Castle

ogni42
18.01.2006, 07:40
Minimale Spannung am externen Vref Pin ist 1V (s. Datenblatt).

Tobi, wenn Du immer 255 (also ein weisses Bild) liest, ist entweder Deine Belichtungszeit zu lang oder der Gain zu hoch.

Setze den Gain mal auf minimale Werte und fang bei der Belichtungszeit mit niedrigen Werten (z.B. 4.5 ms, wie in meinen Settings) an.

Du musst auch darauf achten, dass die Kamera keinen Infrarotfilter hat. Also am Besten mit weissen oder blauen LEDs (geringer Infrarotanteil) beleuchten. Die 40W Schreibtischglühlampe ist am wenigsten geeignet.

super_castle
18.01.2006, 08:07
Bei der JUFO im Saal zum Testen wird der Raum nicht mit weissen oder blauen LEDs beleuchtet.
Um dort zurechtzukommen, muss er schon mit mehreren Lichtverhältnissen klarkommen.

Castle
Ps:"Du musst auch darauf achten, dass die Kamera keinen Infrarotfilter hat. Also am Besten mit weissen oder blauen LEDs (geringer Infrarotanteil) beleuchten. Die 40W Schreibtischglühlampe ist am wenigsten geeignet."

Die CAM hat kein Infrafilter.
Mit einer Schreibtischlampe und LEDs wird wohl kaum jemand den Raum ausleuchten.

ogni42
18.01.2006, 08:18
IR-Filter: Am einfachsten ist es im Fotoladen in der Grabbelkiste einen gebrauchten Filter zu nehmen und ein Stück davon vor die Linse zu setzen. Vielleicht gibt es auch Folien, die preiswerter sind. Ansonsten ist eine Belichtungseinstellung die Hölle und Objekterkennung unterschiedlicher Objekte kann ein echtes Problem werden.

Reicht ja schon, dass die Kamera keinen elektronischen Shutter hat :wink:

super_castle
18.01.2006, 08:26
CMOSCam haben Analoge Signale nach Fernsehnorm und keine Pixel.
Meine CMUCAM2 macht einmal Schnappschüsse in das RAM auf der gleichen Platine(Pixel) oder Sendet über Funk bei Bedarf auch ein Fernsehanalogsignal.
Folge : Das Analogsignal der CMUCAM2 wird auch in Pixel umgewandelt.
Der Chip arbeitet dort mit 25Mhz.

Castle

ogni42
18.01.2006, 08:54
super_castle: Das ist so nicht richtig.

Ein CMOS Chip gibt analoge Werte der einzelnen Pixel aus. Die Fernsehnorm beschreibt etwas ganz anderes (s. wikipedia). Wenn die Ausleseelektronik der CMU2Cam PAL oder NTSC Signale liefert ist das eine Eigenschaft der Kamera, aber nicht des verwendeten CMOS Chips (den man übrigens auch ohne C3088 Modul kaufen kann). Die Informationen eines CMOS Chips werden pixelweise als analoge Werte ausgelesen, so wie die bei der GBKamera.

Ein gute Beschreibung der verschiedenen Verfahren bei CCD und CMOS findet sich hier: www.informatik.hu-berlin.de/~goehring/papers/ccd-vs-cmos.pdf

Daraus kann man auch sehr schön sehen, warum die GBCam keinen Shutter hat: Hätte nämlich pro Pixel einen Transistor mehr gekostet und damit wäre der Chip zu teuer geworden.

super_castle
18.01.2006, 09:22
na dann viel spass....ist ja einfach...und wir machen uns solche gedanken.
das bisschen werdet ihr dann wohl bis 11.11 uhr schaffen , gelle.

Castle
ps: meine gameboycam macht bei der auswertung 20x20 gute fortschritte.
mit lampe, ohne lampe, mit led und ohne led.
es klappt doch. nur gewusst wie.

die funkfarbcam von pollin(39 euro) macht saubere funkbilder(farbe).
am pc habe ich jetzt die auswertung mit purebasic fertig.
ein roter ball 5cm wird erkannt und der robby steuert dahin (befehl über easy-usb-funk vom pc zum robby)

die cmucam2 am robby hat überhaupt keine probleme mehr (sorgenfreies kind).

tobimc
18.01.2006, 12:12
Hi!

Ich habe jetzt noch nicht viel an den registern rumgespielt. Kommt ehute dran.
Ich benutze einen E X T E R N E N ADC!!

Ich bin ja mal auf eure Auswertung gespannt...
Ich werde die Ganzen 128*123 Pixel aus... ;D

VLG Tobi

ogni42
19.01.2006, 09:09
Habe gestern abend meine Hardware wieder zum zucken gebracht. Mit 2.5V VRef sind die Bilder super. Gain ist 0, und die Werte gehen von 30-255.

McNugget
19.01.2006, 09:20
Das ist ja perfekt!
Kann ich mal ein Bild sehen?

Wegen dem Vref: Ich glaube, dass da außerdem stand, dass sich Vref nicht signifikant von VCC unterscheiden darf. Dass Vref 2,5V überhaupt noch geht, liegt schon außerhalb der Spezifikation.
Ich schaue das aber nochmal nach... falls ich mich irre. Ich habs aber hier auch schon so gelesen.

ogni42
19.01.2006, 09:34
Muss heute abend mal ein paar neue Bilder machen. Irgendwas stimmt mit meinem Board immer noch nicht so richtig. ISP geht nicht, aber geproggte chips laufen einwandfrei. Drecksfädelei, sollte mich mal in eagle einarbeiten. (edit: oder besser löten lernen ](*,) )

Laut Datenblatt muss AVcc = Vcc +/- 0.3V sein. VRef muss zwischen 1V und AVcc liegen.

Dabei muss man allerdings beachten, dass VRef eine Eingangsimpedanz von 32kOhm hat. Einen Spannungsteiler muss dann dann entsprechend auslegen. Ich habe bei mir 5.1k und 4.7 kOhm genommen.

AVcc ist mit 47uH und 100nF Kondensator von Vcc entkoppelt (sonst sind die Bilder _richtig_ schlecht). VRef liegt auf 2.2Volt. Dementsprechend liefert die Kamera etwas mehr als 2Vpp oder hat einen Offset beim Schwarzwert.

McNugget
19.01.2006, 09:45
Definiere "richtig schlecht" Evtl kenne ich das Problem auch und würde es gern lösen :D

ogni42
19.01.2006, 10:05
Das Bild bekommt dann ein hässliches Moirée (bei 144 kHz ADCClock, prescaler = 128). Ich nehmen mal an, dass das Taktsignal der XCLK für das Pixelaustakten den ADC beeinflusst. Digital Input Disable ist für den ADC gesetzt.

Bei 288 kHz (die ich jetzt verwende, prescaler = 64) gibt es ein sichtbares aber noch nicht störendes Streifenmuster im Bild. Das liegt aber daran, dass der Takt 44% über dem Grenzwert liegt. Laut Datenblatt kann man bei reduzierter Auflösung den ADC schneller takten, aber ich schätze 44% mehr sind ein Hauch zu viel :wink: . Im Moment stört mich das aber nicht weiter.

super_castle
19.01.2006, 10:07
"edit: oder besser löten lernen"

ich lasse meine boards im auftrag fertigmachen.
es gibt menschen die haben das drauf mit den platinenenlöten und haben auch das entsprechende werkzeug dazu. eine anschaffung des werkzeuges ist zu teuer und das können fehlt dazu.

wer beides nur halb kann, bekommt nur fehler in sein system und kann darüber auch nur mutmassungen anstellen wo der fehler liegt.

es sollten einige schon froh sein, den avr zu verstehen, ich meine hier das datenblatt. dieses datenblatt sollte derjenige mal einpaar tage lang studieren dann kommen nicht so viele fehler rein und vref-intern usw wird dann nicht mehr verwechselt.

ein einfaches oszi sollte auf keinen fall bei uns robby-avr-hobbysten fehlen.
und da sparen sehr viele und haben keins.

Castle

ogni42
19.01.2006, 10:33
super_castle, wo lässt Du denn die Platinen fertigen (und zu welchem Preis).

Löten ist normalerweise kein Problem, nur hat die Fädelei manchmal ihre Macken, die Boards sind dann halt empfindlicher als eine "richtige" Platine.

Vielleicht ist nicht jeder des Englischen so mächtig, dass er/sie ein Datenblatt auf Anhieb immer richtig versteht. Da sollten die "Kenner" den anderen eben weiter helfen. Dazu ist das Forum doch (auch) da, oder?

tobimc
19.01.2006, 13:54
HI!

So...
Nachdem ich jetzt mit meinen Registern ausreichend Mensch ärgre dich nicht gespielt habe, bin ich durchaus über die Korrektur glücklich... ;D

Obwohl es noch ein bisschen graue Suppe ist...

Wer genau hinsieht kann sehen, dass ich auch eine Korrektur meiner beiden Kameras auf der Nase habe.
Meine neue Brille.

VLG Tobi

tobimc
19.01.2006, 14:11
HI!

Ich habe jetzt so lange mit den Registern 'Mensch ärgere dich nicht' gespielt, dass es jetzt garnicht schlecht passt.

Allerdings habe ich das Bild direkt übertragen, und im schnellen RAM-Modus ist das Bild viel zu dunkel. Aber das ist ja kein Problem... :D

VLG Tobi

ogni42
19.01.2006, 14:33
Sieht doch super aus!

McNugget
19.01.2006, 15:32
in der Tat ein gutes Ergebnis!

tobimc
19.01.2006, 16:41
Hi!

Wie gesagt... das ist direkt auf dem COM hinausgeschoben...
wenn ich das Bild ins Ram schiebe, dann ist es wesentlich dunkler!

VLG Tobi

ogni42
20.01.2006, 09:40
Hier mal zwei Bilder die ich mit dem internen ADC aufgenommen habe (direkt, während des grabbens zum Host übertragen). Wie bereits geschrieben: Der ADC ist hoffnungslos übertaktet, aber es funktioniert trotzdem. Die AVRs sind da schon sehr robust.

Das erste Bild ist ein normal aufgenommenes Bild (288KHz ADC Samplefrequenz, 112400bd Serielle Übertragungsrate).

Das zweite Bild ist ein Dunkelbild der Kamera (Linse zugehalten). Hier kann man den Effekt des Übetaktens gut erkennen: Die quer laufenden Streifen im Bild.

Leider sind die Streifen nicht druch Subtraktion weg zu bekommen, da sie im Bild wandern.

Da mir das mit dem ewigen neu flashen zu müßig ist (SIProg dran, Proggen, SIPRog ab, Kamera dran, Serielles Kabel umstecken, Serielle App starten,....) schreibe ich jetzt erst mal die Hostsoftware fertig, so dass man die Parameter im Betrieb umstellen kann. Dann schiebe ich auch noch ein paar Bilder mit 144 kHz ADC Takt nach.

edit: Der Schwarze Rand unten in den Bildern sind die ungenutzen Zeilen der Kamera.

edit: Bilder wg. platzmangel gelöscht. Bei bedarf bitte PN an mich. Grüße, /Ingo.

super_castle
20.01.2006, 11:59
"wenn ich das Bild ins Ram schiebe, dann ist es wesentlich dunkler! "

..ist doch klar tobi. ins ram schreiben geht schneller als serielle ausgabe direkt.
fazit: wenn es schneller geht, verblassen die pixel nicht so schnell (die haltezeit ist nur begrenzt vom chip).

ich habe ein spruch für euch und dieses thema:
manche menschen glauben sie werden ein christ, wenn sie in die kirche gehen.
aber man wird ja auch kein auto wenn man in der garage steht.

Castle

ogni42
20.01.2006, 13:04
Kannst Du mir den Spruch im Zusammenhang mit diesem Thema mal übersetzen, bitte?

McNugget
20.01.2006, 13:37
Er meint warscheinlich, dass wir nicht selbst zur Camera werden, wenn wir uns mit dem Kopf auf den Tisch legen... O_o

oder so..

Was meinst du damit?

super_castle
20.01.2006, 13:41
21 seiten glauben die bastler daran, das man mit den registereinstellungen die gameboycam im griff hat.
aber ohne eine hardwareänderung an der gameboycam läuft nichts.

Castle

ogni42
20.01.2006, 13:49
Versteh' ich immer noch nicht. Die Bilder von der Kamera sind doch OK.

Bei 128x128 Pixeln ohne Shutter kann man kaum mehr erwarten. Was soll man denn an der Kamerahardware ändern?

Dass andere Chips, wie der von der CMUCam, vielleicht bessere Bilder liefern bestreitet ja niemand. Die sind halt nur 50 mal teurer. Von daher finde ich immer noch, dass die GBCam "the best bang for the buck" ist.

ogni42
20.01.2006, 13:58
Und da hier ja eine gewisse Atmel-Präferenz da ist:

Wem die Bilder zu schlecht sind, sei die Camelia von Atmel ans Herz gelegt. http://www.atmel.com/dyn/products/product_card.asp?part_id=3141 Die hat dann eine Auflösung, die die größten Nörgler zufrieden stellen sollte. Kostet halt einen Tick mehr (ca. 5000 GBCams, oder 100CMUCams) :) .

Brauch man zwar auch einen externen Shutter, aber OMG, DIE macht Bilder.

tobimc
20.01.2006, 15:24
HI

Jup eben. Aber das Freut mich, weil ich mit den anderen Einstellungen immer seht knapp war von der Belichtung her... jetzt gehts gut!

Spielst du mit deinem Spruch auf die CMU-Cam an?

VLG Tobi

ogni42
20.01.2006, 18:22
Hier ein update für 144kHz (rest ist gleich). Wichtig ist auch, dass die Kabel zwischen Kamera und ADC so kurz wie möglich sind. Evtl. abgeschirmtes Kabel (Shield nach AGND) nehmen.

Den Grauwert im Dunkelbild bekomme ich zumindest durch setzen von Voffset (O-Register in der GBCam) nicht kleiner.

Da Vref = 0 ist und Z = 10 sollte die Kamera eigentlich auf 0V kalibrieren, aber das scheint nicht so gut zu klappen. Kann sein, dass das erst besser wird , wenn man nicht direkt zum Host überträgt. Tobi, was misst Du denn als Schwarzwert?

edit: Bilder wg. platzmangel gelöscht. Bei bedarf bitte PN an mich. Grüße, /Ingo.

super_castle
20.01.2006, 21:38
warum klappt das bei euch mit den bildern so schlecht.
meine gameboycam liefert mit einem avr16-16 astreine kontrastreiche und streifenfreie bilder , auch mit übertragung zum pc (bild wird mit purebasic dargestellt).
was macht ihr falsch?
kalte lötstellen, zu lange strippen, funkstörquellen???

Castle

tobimc
20.01.2006, 22:47
HI!

Ich habe meine Technik jetzt erstmal in den Roboter eingebaut.
Da ist das Kabel auch ein bisschen länger.
Den maximalen Schwarzwert kann ich dir leider nicht sagen...
Aber vllt. kann ich da ein kleines Feature in den GBCViewer einbauen...
(hast du den mal probiert?)

Frage@ogni: Warum übertaktest du den ADC so stark? Nimm dir nen ADC0820 von RS, der ist sauschnell und kostet auch nicht die welt.
RETTET DIE ADCs!
Und das erste bild ist doch absolut super, wenn auch ein Bisschen überbelichtet...

@castle: Mal sehen... Weitere Tests folgen, es war zuerst wichtig für mich, die Sache zum laufen zu bringen.

Gute Nacht... :D
Tobi

ogni42
21.01.2006, 07:34
Ich wollte das Ganze ebenfalls erst mal Laufen sehen. Deswegen der interne ADC und deswegen die Übertaktung. Natürlich geht das auch mit externem ADC (kommt als nächstes Projekt). Aber irgendwo muss man ja mal anfangen.

super_castle, bekommst Du mit dem internen ADC bessere Bilder? Wenn ja, wie sind denn Deine Einstellungen? Wie lang ist das Kabel zwischen Kamera und ADC? Kannst Du uns mal Bilder zeigen?

Ich würde immer noch gerne wissen, was Du mit Hardwareänderungen an der Kamera meinst.

super_castle
21.01.2006, 09:26
normale deckenbeleuchtung.
avr16 8mhz.
geproggt mit fastavrbasic und purebasic.

meine daten:

Sub init_cam()
reset_cam()

Regadr = 1
Regvalue = 1
Loadreg_cam()

Regadr = 2
Regvalue = 0
Loadreg_cam()

Regadr = 3
Regvalue = 27
Loadreg_cam()

Regadr = 4
Regvalue = 1
Loadreg_cam()

Regadr = 5
Regvalue = 0
Loadreg_cam()

Regadr = 6
Regvalue = 1
Loadreg_cam()

Regadr = 7
Regvalue = 1
Loadreg_cam()

Regadr = 0
Regvalue = 128
Loadreg_cam()
End Sub

datenleitungen sind ca 14cm lang.

Castle

ogni42
21.01.2006, 10:02
Also, wenn man mal die reduzierte Größe in Betracht zieht ist das Bild keinen Deut besser als bei Tobi, mir oder irgend jemand anderem. Oder übersehe ich da etwas?

Beleuchtung ist bei den Bildern die ich gerade gepostet habe normales Tageslicht, Kamerakabel 10 cm + 5 cm Fädeldraht auf der Platine.

Was meinst Du denn jetzt mit "an der Kamerahardware ändern"?

edit: reduzierte Auflösung heisst in diesem Fall 128x128 Pixel. Mein Anzeigeprogramm "bläst" das Bild in x und y um Faktor zwei auf.
Register [0..7] =
{0x80, 0x10, 0x01, 0x19, 0x01, 0x00, 0x01, 0x01}

edit2:Vergleiche ich die Bilder, die ich bisher gemacht habe, zeigt sich, dass die Kamera bei Halogenbeleuchtung sehr schnell überbelichtet. Bei Tageslicht (hier ist es bewölkt), sehen die Bilder einfach besser aus. Grund ist mit hoher Wahrscheinlichkeit der fehlende IR Filter. Vielleicht find ich in der Grabbelkiste beim Fotoladen ja gleich etwas.

super_castle
21.01.2006, 10:55
darum... ihr macht soviel daher, dann klappt dieses nicht, dann klappt da nichts...
ich mache die normalen routinen ohne andere aufstände und klappt super. für meine auswertung genial.
auch die automatisch belichtungsanpassung funktioniert.
natürlich in purebasic geproggt.

man sollte auch das darstellungsfenster selber proggen, macht mehr her in dieser gameboycam-aktion
ich habe dieses javaviewfenster auch mal benutzt, ist nichts....

Castle

tobimc
21.01.2006, 11:21
Hi!

@castle:
Könntest du mir erklären, wie du die Belichtung automatisch anpasst?
Ich kann jetzt allerdings ein Bild so schnell aufnehmen, dass ich eine Belichtungsmessung dürchführen könnte. ich weis allerdings noch nciht wie...

Wie wertest du das Bild aus?

Ich habe auch meine Grundroutinen genommen, und nur die Registereinstellungen geändert. Jetzt funktioniert die Sache...

VLG Tobi

ogni42
21.01.2006, 13:08
Das javaview fenster "ist nichts", weil....

Das solltest Du uns schon erklären.

(Frei nach dem Motto: "Lieber eine starke Behauptung als ein schwaches Argument.")

Was ist denn nun mit Kamerahardware ändern?

ogni42
30.01.2006, 16:20
Hier ein paar Bilder mit und ohne Binning. Den ADC kann man wirklich mit sehr hohen Abtastraten betreiben, ohne dass die Bildqualität stark leidet.

super_castle
30.01.2006, 17:21
ich habe dieses javaviewfenster auch mal benutzt, ist nichts....

weil die rs232-übertragung mit java so beschissen ist und die treiber seit einpaar jahren nicht mehr aktualisiert sind/werden.
dieses capturefenster schlecht progammiert ist, zu aufgeblasen für die schwache leistung.

mein captureprogramm in purebasic hat mehr leistung und ist kleiner.

meine auswertung klappt soweit.

deine querstreifen können evtl die auswertung beeinflussen.
mein bild ist astrein klar und schlierenfrei.

Castle

ogni42
30.01.2006, 17:48
Das Bild ist natürlich bei 144 kHz schlierenfrei, wenn man aber, wie in meinem Fall, das Bild eh runter rechnet spielen die Schlieren erst dann eine Rolle, wenn das runter gerechnete Bild beeinflusst wird. Und das ist nicht der Fall. da die Pixel mit einem 4x4 Rechtecktiefpass gefiltert sind. Also kann ich doch schneller abtasten und benötige weniger Zeit bei der Aufnahme.

Die Treiber für Java sind einwandfrei und funktionieren bei mir ohne Probleme. Warum also updaten?

Weitere Kommentare geschenkt :-# Mir reichen Leistung etc. Was Du machst sei Dir frei gestellt.

edit: BTW, woher willst Du wissen wie gut oder schlecht das Capture Fenster programmiert ist? Das neue Fenster stammt von mir und den Code hat sonst keiner.

womb@t
11.03.2006, 21:54
Ich möchte nun auch meine GB-Kamera "missbrauchen". Vorerst will ich sie an meine PC anschliessen, doch leider gibts es die Seite

http://www.destroy-yourself.de/julian/juliprograms/amr/gbcam.htm
nicht mehr. Und überall wird auf diese hingewiesen!!! Hat die vllt. jemand abgespeichert und kann mir diese schicken, ich wäre sehr dankbar!!!!!

tobimc
12.03.2006, 12:11
Hi!

Gewusst wo...

http://217.20.120.65/~cyblord/jps_old/amr/gbcam.htm
Ja, und eigentlich auch DA:
http://217.20.120.65/~cyblord/jps/elektronik/gbcam.htm

VLG Tobi

womb@t
12.03.2006, 16:18
Thx a lot, hilft mir seehr!!!
Wir( bzw. kemand der mit der Kamera erfolgreich gearbeitet hat und sich auskennt) könnten das ja auch ins Wiki reinpacken!!!

DeltaEx
07.07.2006, 10:51
Gibt es eigentlich C Code für das auslesen der GB Kamera?

ogni42
07.07.2006, 10:56
ja, sogar hier in diesem Thread :)

pebisoft
07.07.2006, 13:51
au ja.......
bei mir. geht wunderbar mit winavr-c.

pebisoft
09.07.2006, 15:29
ogni42, setzt dein java-prog für die gameboycam mal hier rein.
habe es jetzt geschafft in java rs232-daten zu übertragen, war nicht einfach das modul dafür zu finden.

enoritz
09.07.2006, 19:15
Du kannst die serielle Schnittstelle doch wie eine Datei ansprechen. Aber welche Klasse du stattdessen nutzt würde mich auch interessieren :cheesy:

pebisoft
10.07.2006, 19:08
erklär das einmal "Du kannst die serielle Schnittstelle doch wie eine Datei ansprechen. "

ich benutze die "com.jar und die win32com.dll"

enoritz
10.07.2006, 20:26
erklär das einmal "Du kannst die serielle Schnittstelle doch wie eine Datei ansprechen. "

Unter Windows können manche Schnittstellen (wie z.B. die seriellen Schnittstellen ComX) wie Dateien angesprochen werden (Unter Linux müsste das auch gehen, ich weiß aber nicht wie die Pfade dort heißen).
Das Bedeutet, du kannst in einem Java-Programm ein Objekt für den Zugriff auf das Dateisystem des Rechners anlegen, wobei du allerdings keine Datei referenzierst, sonders das anzusprechende Gerät.
Der Vorteil ist, dass du keine extra Bibliotheken brauchst. Nachteilig ist wiederum, das du keinen Einfluss auf die Statusleitungen, sowie das Übertragungsprotokoll hast.

Da liefert das Betriebssystem allerdings wieder entsprechende Programme mit, die diese Aufgaben übernehmen können.
Das Programm mode.com dient dabei zum setzen aller Einstellungen, welche aus dem Javaprogramm selbst nicht vorgenommen werden können.

Beispiel-Klasse:


import java.io.*;

public class SerialIO{

private RandomAccessFile ComFile; //serielle Schnittstelle die angesprochen werden soll

public SerialIO(){ //Konstruktor
configComPort(); //initialisiert die serielle Schnittstelle
}

public void destroy(){ //Destruktor
try{
ComFile.close(); //versucht die serielle Schnittstelle zu schließen
}catch(Exception e){ e.printStackTrace(); };
}

public boolean configComPort(){
String[] cmd = {"c:\\WINDOWS\\system32\\cmd.exe /c start /min", //Konsole öffnen
"c:\\WINDOWS\\system32\\mode.com COM1:", //COM1 soll konfiguriert werden
"baud=9600",
"parity=n",
"data=8",
"stop=1"};
try{
Process p = Runtime.getRuntime().exec(cmd); // Befehlszeile ausführen
if( p.waitFor() != 0 ) { //Falls der Prozess nicht gestartet werden kann
System.out.println("Fehler bei der Ausführung: " + cmd );
return false; //Fehler
}
ComFile = new RandomAccessFile("COM1:","rws"); //COM1 öffnen
}catch(Exception e){e.printStackTrace();};
return true; //alles hat geklappt
}

public void sendByte(byte b){ //Gibt ein Datenbyte auf die serielle S. aus
byte[] bytes = new byte[1]; //ByteArray der Länge 1
bytes[0] = b; // Daten einfügen
try{ ComFile.write(bytes); // und in die Datei schreiben
} catch(Exception e){ e.printStackTrace(); };
}

public byte receiveByte(){ //Liest ein Datenbyte aus der seriellen S.
byte[] b = new byte[1]; //Daten-Puffer
try{
ComFile.readFully(b); //Lese-Status bis ein Byte ankommt
} catch(Exception e) { e.printStackTrace(); };
return b[0]; //Byte zurückgeben
}

}

Unter WindowsXP liefs bei mir einwandfrei. Auf nem Schulrechner konnte ich leider nicht auf die mode.com zugreifen(Lag vieleicht an der Rechtevergabe oder einfach an Windows2000).

Hmm... Deine Bibliothek ist aber eleganter. Ist nur blöd, das man auf jedem Rechner die .jar-Datei einbinden und die .dll-Datei mitliefern muss.

enoritz
20.07.2006, 15:52
Ich hätte noch ne Frage zur GB-Cam. Den Artikel zur ansteuerung der Kamera hab ich von www.cyblord.de

Und zwar ist mein Problem folgendes:
Ich schreibe hier gerade die Software in ASM und bin am überlegen, ob ich nach dem Startsignal mit dem Impuls auf dem Start- und dem CLK-Pin die Kamera weiter mit CLK-Impulsen versorgen muss.
Im Diagramm ist die expsure-time rot markiert, wobei auch hier ein Taktsignal abgegeben wird. Aber ist das zwingend erforderlich?
Wie habt ihr das gemacht. Habt ihr den Takt weiterlaufen lassen oder angehalten?

----Edit----
Ahh.. schon klar.. hab ne Zeile überlesen ...-sry- 8-[ 8-[

ogni42
20.07.2006, 16:49
ja, Du musst den Takt weiter laufen lassen.

McNugget
26.07.2006, 13:00
Moin, gibts eigentlich nen aktuelles, unglaublich gutes kontrastreiches Bild zum anschauen? Oder am besten gleich mehrere? Ich würde nämlich gerne mal wieder ein paar Erfolge mit der Cam sehen (bevor ich mich auch wieder an die Areit damit begebe :D )

Gruß
Timo

ps. der Java-Code ist interessant! Ich werde das mal ausprobieren :)

Nikolaus188
04.08.2006, 21:14
hi
ich hab zwar jetzt nicht alles hier gelesen aber hier
http://www.kreatives-chaos.com/index.php?seite=gbcam
gibt es meinermeinug nach echt gute sachen zu diesem und anderen themen.

Joboter
11.04.2009, 23:57
Sorry, dass ich das Thema wieder auffrische...

Ich habe mir eine GBCam zugelegt, das alles wie in bekannten Links mit einem Atmega8 verbunden und versucht ans Laufen zu bekommen.
Dabei habe ich mich teilweise an hier gesendeten Code-Fragmenten orientiert (Dank va an Kijon).

Die GBCam betreibe lese ich mit dem internen AD Wandler aus und sende jeden Pixelwert direkt per Uart an den PC.

Ich bekomme ein vernünftiges Bild, wenn ich bei geschlossenen Rollläden und Kunstlicht fotographiere. Dabei ist die Belichtungszeit sehr gering, gerade so groß, dass das ganze Bild belichtet wird (das geschieht von rechts nach links).

Parameter:
0 000 0x80
1 001 0x09
2 010 0x00!!!!<-- kurze Belichtungszeit!
3 011 0x10!!!!<-- kurze Belichtungszeit!
4 100 0x01
5 101 0x00
6 110 0x01
7 111 0x07

Mein Problem:
Die Kamera nimmt auch während des Ausleseprozesses auf! D.h. wenn ich ein Bild gemacht habe und dann Pixel für Pixel an den PC gehen, wird jede Bewegung, die das Motiv macht, erfasst. Es entsteht also effektiv doch wieder eine sehr hohe Belichtungszeit.
Außer mit der sehr kurzen Belichtungszeit und den "Nachtaufnahmen mit Kunstlicht" ist das Bild immer weiß (stark überbelichtet).
Damit kann man zwar lustige Effekte machen, allerdings würde ich auch gern am Tag fotographieren;-)


Frage:
Wie kann ich diese "Dauerbelichtung" während der Übertragung abschalten. Mechanisch mit einer Klappe ist mir zu unelegant.
Kann es sein, dass mein Problem durch den langen Übertragungsprozess entsteht (etwa 30s)?

Viele Grüße,
Joboter

sechsrad
16.04.2009, 16:17
Wie kann ich diese "Dauerbelichtung" während der Übertragung abschalten.....

spannungsversorung abklemmen oder mechanische sperre/abschirmung, sonst nichts.

mfg

baubau
16.05.2009, 21:31
welchen code habt ihr verwendet der auch eiwandfrei funktioniert?
ich such wenn es gibt ein bascom code