-
Gameboy Kamera
Hallo,
Ich versuche zurzeit ne Gameboykamera zum Laufen zu bringen, dass will aber nicht so richtig klappen. Alle 16384 (128*128) werden korrekt ausgelesen, und der READ pin geht dann auch wieder auf Low, nur komme ich mit den Kammeraeinstellungen nicht klar.
Mit dem Bild scheine ich die selben Probleme wie hier zu haben
https://www.roboternetz.de/phpBB2/ze...amera&start=22
nur wie die das dann geschafft haben ihr Bild brauchbar zu machen steht da nicht
Ich nutze folgenden Code
Code:
$regfile = "m48def.dat"
$crystal = 16000000
$baud = 9600
$hwstack = 54
$framesize = 54
$swstack = 74
Declare Sub Highb(byval Axa As Byte)
Declare Sub Lowb(byval Axa As Byte)
Declare Sub Toggleb(byval Axa As Byte)
Config Portb.1 = Input
Config Portc = Output
Config Portd = Output
Config Portc.5 = Input
Config Portc.4 = Input
Config Portc.3 = Input
Config Portc.1 = Input
Config Portb.1 = Input
Config Portb.0 = Output
Dim A As Byte
Dim B As Integer
Dim C As Byte
Dim D As Byte
Dim I As Integer
Dim S As String * 10
Dim S2 As String * 10
Dim S3 As String * 10
Dim Startb As Byte
Dim Sinb As Byte
Dim Loadb As Byte
Dim Resetb As Byte
Dim Xck As Byte
Dim Timeb As Word
Dim V As Word
Dim Daten(8) As String * 8
Dim Daten2(8) As String * 8
Config Portb.1 = Output 'start
Config Portb.2 = Output 'sin
Config Portb.3 = Output 'load
Config Portb.4 = Output 'reset
Config Portb.5 = Output 'xck
Config Portc.2 = Input 'read
Config Portc.3 = Input 'Vout (Adc3)
Portc.2 = 1
Portc.3 = 1
Startb = 1
Sinb = 2
Loadb = 3
Resetb = 4
Xck = 5
Timeb = 10
Daten2(1) = "000"
Daten2(2) = "001"
Daten2(3) = "010"
Daten2(4) = "011"
Daten2(5) = "100"
Daten2(6) = "101"
Daten2(7) = "110"
Daten2(8) = "111"
A = 128
Daten(1) = Bin(a)
A = 12
Daten(2) = Bin(a)
A = 0
Daten(3) = Bin(a)
A = 5
Daten(4) = Bin(a)
A = 1
Daten(5) = Bin(a)
A = 0
Daten(6) = Bin(a)
A = 1
Daten(7) = Bin(a)
A = 1
Daten(8) = Bin(a)
Print Daten(1)
Print Daten(8)
Portb = 0
Waitms 1500
Start Adc
'Reset ----------------------------
Highb Resetb
Waitus Timeb
Lowb Resetb
Waitus Timeb
Highb Xck
Waitus Timeb
Highb Resetb
Waitus Timeb
Lowb Xck
'Parameter laden -------------------
For I = 1 to 8
Lowb Xck
S = Daten(i)
S2 = Daten2(i)
For A = 1 To 3
If Mid(s2 , A , 1) = "1" Then
Highb Sinb
Else
Lowb Sinb
End If
Waitus Timeb
Highb Xck
Waitus Timeb
Lowb Xck
Next A
For A = 1 To 8
If Mid(s , A , 1) = "1" Then
Highb Sinb
Else
Lowb Sinb
End If
Waitus Timeb
Highb Xck
Waitus Timeb
If A <> 8 Then Lowb Xck
Next A
Highb Loadb
Waitus Timeb
Lowb Xck
Waitus Timeb
Lowb Loadb
Next I
Highb Startb
Waitus Timeb
Highb Xck
Waitus Timeb
Lowb Startb
Waitus Timeb
Lowb Xck
'Print "Warten..."
'Wait 1
Print Pinc.2
' Auslesen der Werte ------------
Do
Toggleb Xck
Waitus Timeb
Loop Until Pinc.2 = 1
'Do
Print "Read ist h"
' Wait 1
'Loop
Highb Xck
I = 0
A = 0
Do
I = I + 1
A = A + 1
V = Getadc(3)
Lowb Xck
Waitus Timeb
Highb Xck
Waitus Timeb
If A = 1 Then
S = Str(v)
S = "000" + S
S = Right(s , 4)
Print S
A = 0
End If
Loop Until Pinc.2 = 0
'I = 0
'Do
'I = I + 1
'If I = 128 Then I = 1
' Print I
' Waitms 2500
' S = Str(daten3(i))
' S = "000" + S
' S = Right(s , 4)
' Print S
'Print
'Loop
Do
Loop
Sub Highb(axa As Byte)
Portb.axa = 1
End Sub
Sub Lowb(axa As Byte)
Portb.axa = 0
End Sub
Sub Toggleb(axa As Byte)
Toggle Portb.axa
End Sub
Edit: Hat sich erledigt, scheint jetzt besser zu gehen
-
hallo
wäre es zu viel verlangt, den geänderten code mal zu posten?
habe hier auch eine cam zu liegen und würde die gerne mal probieren.
danke
gruß thomas
-
Scheint an der Hardware oder irgendwelchen Verbindungen gelegen zu haben, jetzt gehts
-
hi
habe dein Code mal getestet bei mir kommt immer nur 1023 raus.
An was kann das liegen?
PS:
Verwende einen Mega32 @ 14,7456Mhz
Hab daher die Anschlüsse geändert aber nur die vom ADC von PortC auf PortA
-
Hi,
wie hast du die Kamera angeschlossen?
Hab zwei rumliegen, hatte aber noch keine Zeit
mit damit zu beschäftigen. Vieleicht kannst du was zur Hardware
Posten?
-
-
Ich hab auch mal in Code erstellt nur leider Funktioniert der nicht so wie ich will
Code:
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 14745600
$baud = 9600
Config Portb.1 = Output 'start
Config Portb.2 = Output 'sin
Config Portb.3 = Output 'load
Config Portb.4 = Output 'reset
Config Portb.5 = Output 'xck
Config Porta.2 = Input 'read
Config Porta.3 = Input 'Vout (Adc3)
_start Alias Portb.1
_sin Alias Portb.2
_load Alias Portb.3
_reset Alias Portb.4
_takt Alias Portb.5
_read Alias Porta.2
_vout Alias Porta.3
_takt = 0
_reset = 1
_start = 0
_load = 0
_read = 1
_vout = 1
'########## Variablen ###############
Dim A As Byte , B As Byte , I As Byte , C As Byte
Dim Start_register As Byte
Dim Register_address(8) As Byte
Dim Register_value(8) As Byte
Register_address(1) = &B000
Register_address(2) = &B001
Register_address(3) = &B010
Register_address(4) = &B011
Register_address(5) = &B100
Register_address(6) = &B101
Register_address(7) = &B110
Register_address(8) = &B111
Register_value(1) = &B10000000
Register_value(2) = &B00001110
Register_value(3) = &B00000110
Register_value(4) = &B00000000
Register_value(5) = &B00000001
Register_value(6) = &B00000000
Register_value(7) = &B00000000
Register_value(8) = &B00000111
Start_register = 1
Start Adc
Wait 1
'########## RESET durchführen ########
_reset = 0
Waitus 1
_takt = 1
Waitus 1
_reset = 1
Waitus 1
_takt = 0
Waitus 1
'######### Register laden ############
For I = 1 To 8
For A = 2 To 0 Step -1
_sin = Register_address(i).a
Waitus 1
_takt = 1
Waitus 1
_takt = 0
Next A
For B = 7 To 0 Step -1
_sin = Register_value(i).b
Waitus 1
_takt = 1
Waitus 1
If B = 0 Then _load = 1
Waitus 1
_takt = 0
Next B
Waitus 1
_load = 0
Next I
_sin = 0
Waitus 1
'######### starten des bildes ##########
_start = 1
_takt = 1
Waitus 1
_takt = 0
_start = 0
Do
_takt = 1
Waitus 1
_takt = 0
Waitus 1
Loop Until _read = 1
Print "Bild kommt"
Do
_takt = 1
Waitus 1
_takt = 0
Waitus 1
'C = Getadc(3)
'Print C
Loop Until _read = 0
Do
Print "Bild zuende"
Loop
End
Der READ Pin geht zwar auf High aber nicht wieder zurück? An was kann das liegen?
//EDIT
Hab es jetzt endlich hinbekommen es lag an der _read Belegung. Habe _read als PORTA.2 definiert stat PINA.2.
leider gekomme ich immer nur 255 raus. Kann das am langsamen ADC liegen?. Habe die Register schon mal geändert ohne erfolg.
//EDIT 2
Hab es jetzt hin gekommen. Ich habe bei der ADC Config noch Reference = Avcc hinzugefügt und ein wenig mit den Registern gespielt.
Hab hier vielleicht eine Idee wie ich das ganze leicht am PC als Bild ausgeben kann??
-
schau irgendwo hier im forum. da gab es ein fertiges programm für den pc.