Moin!
Ich hab dann an der Kamerafront mal weitergemacht und noch nen bisschen was gefädelt:
Eckdaten: Mangels 74HC590 wurde die Funktionalität mit 3x 74HC161 (Zähler) und 3x74HC541 (Bustreiber) angenähert.
Angefädelt sind zwei 4Mx4-EDO-DRAMs von einem PS/2-Riegel.
Die Organisation übernimmt ein Atmega8515. Warum? Lag grad in THT da. Prinzipieller Vorgang:
AVR gibt Reihenadresse und RAS, Zähler gibt Spaltenadresse, Pixeltakt dient dann als CAS. Im EDO-Mode wird also Pixel für Pixel in den RAM geschrieben. Lesenderweise steuert der AVR alles, gibt also RAS, CAS und beide Adressen aus. Wenn nichts zu tun ist, werden automatische (CAS before RAS-)Refresh-Zyklen durchgeführt. Während des Schreibens ist dafür aber keine Zeit, weshalb das DRAM dann ca. 150ms ohne Refresh auskommen muss. Ich hatte da bei hohen Temperaturen Bedenken, aber da oben isses ja kalt und wenns mal nen Pixelfehler gibt... mein Gott, es gibt schlimemres.
Lesenderweise werden die Daten in ein 74HC273 verschafft, das dann auf den bewährten R2R-DAC arbeitet. Außerdem fügt der AVR eine Titelzeile hinzu.
Zum Senden dient eine PLL aus einem Athlon-Mainboard, die mitsamt Beschaltung fachmännisch ausgebaut wurde (Kreissäge FTW) und mit Heißkleber mit dem sonstigen Board verheiratet wurde.
Mit anderem Quarz liefert das Teil 77,2 MHz, die sich mit dem SDR-Stick empfangen lassen.
Das Resultat sah dann so aus:
Ja, die Kamera stand Kopf.
Bisher machte die Logik noch Schwierigkeiten, weswegen von Omega sein Logikanalysator bereitgestellt wurde, und das ganze ein klein wenig untersucht wurde. Dann habe ich eine schlechte Lötstelle am DAC gefunden...
Das lustige Muster am rechten Rand ist uninitialisiertes DRAM. Hier gabs noch ein Timingproblem: Die Kamera liefert ab der fallenden Flanke von HSYNC Daten, der AVR gibt aber erst 64 Pixeltakte später das DRAM frei. Ist jetzt im Code geändert, ob das so funzt, kann ich aber noch nicht sagen, da der empfangende Rechner (mal wieder, grrr) Zicken macht. Warum hält dieser Scheiß CPU-Kühler eigentlich nie?
Das Fehlerbild kann man auch aufm Logikanalysator sehen:
Pinzuordnung:
D0 - A0 (A3)
D1 - A1 (A2)
D2 - A2 (A1)
D3 - A3 (A0)
D4 - A4 (A7)
D5 - A5 (A6)
D6 - A6 (A5)
D7 - A7 (A4)
D8 - A8 (A8)
D9 - A9 (A9)
D10-A10 (A10)
D11-CAS
D12-RAS
D13-HSYNC
Die kuriose Adresszuordnung ergibt sich aus einem Fädelfehler zwischen Zähler und Treiber, der in Software durch Umsortieren beim Lesen ausgeglichen wurde.
Bei dem unteren Bild sieht man recht deutlich, dass die Adresszählung bei 64 beginnt, also die ersten 64 Pixel verschwunden sind (und beim Auslesen habe ich die dann auch übersprungen, weswegen am rechten Rand was fehlt).
Nachtrag folgt, sobald der Rechner tut (und ich Zeit habe).
Zielbestückung ist:
2x74HC590, 2x DRAM, Atmega64, Kamera.
Zur Zeit kämpfe ich mitm I2C, so dass ich den Bustreiber vor der Kamera einsparen könnte, in dem ich direkt die Ausgangstreiber der Kamera totlege. Hier ist noch Experimentierbedarf gegeben.
So, Statusupdate Ende, Matratzenhochdienst Anfang.
Zuletzt bearbeitet: 14.11.12 01:09 von ferdimh