Liste der Anhänge anzeigen (Anzahl: 1)
!!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
Liste der Anhänge anzeigen (Anzahl: 1)
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
Liste der Anhänge anzeigen (Anzahl: 1)
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.
Code:
'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
Liste der Anhänge anzeigen (Anzahl: 1)
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.