Zur Zeit habe ich dieses Programm:Eine andere Frage habe ich aber jetzt auch noch: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) = 7 Regwert(2) = 255 Regwert(3) = 255 Regwert(4) = 1 Regwert(5) = 0 Regwert(6) = 1 Regwert(7) = 7 Regwert(8) = 0 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 Pind.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 5 Xckpin = 1 Waitus 5 Xckpin = 0 Waitus 5 Xckpin = 1 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 2 Incr Z I2crbyte I , 8 Bild(z) = I Xckpin = 0 Waitus 4 Wend I2crbyte I , 9 Incr Z Bild(z) = I I2cstop Portd.2 = 0 For Z = 1 To 16384 Printbin Bild(z); Next 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
Wie man im Code sehen kann, habe ich die Register 2 und 3 jetzt mal auf 255 gesetzt. Diese Register sind doch für die Belichtungszeit und wenn man sie auf 255 setzt, müßte man doch ein komplett weißes Bild bekommen.
Im Terminalprogramm bekomme ich immer nur Werte zwischen 178 und 179. Aber es müßten doch Werte um 255 sein, oder nicht?
Woran kann das liegen?





Zitieren


Lesezeichen