- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 8 von 8

Thema: Gameboy Kamera

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.05.2007
    Beiträge
    177

    Gameboy Kamera

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    Ich versuche zurzeit ne Gameboykamera zum Laufen zu bringen, dass will aber nicht so richtig klappen. Alle 16384 (128*12 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

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    18.03.2005
    Ort
    berlin, siemensstadt
    Alter
    61
    Beiträge
    59
    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

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.05.2007
    Beiträge
    177
    Scheint an der Hardware oder irgendwelchen Verbindungen gelegen zu haben, jetzt gehts

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    17.03.2008
    Ort
    Leipzig
    Beiträge
    33
    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

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Robotniks
    Registriert seit
    13.10.2007
    Beiträge
    175
    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?

  6. #6

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    17.03.2008
    Ort
    Leipzig
    Beiträge
    33
    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??

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.01.2008
    Beiträge
    164
    schau irgendwo hier im forum. da gab es ein fertiges programm für den pc.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests