Hi pebisoft
Warum C-Programm?
Ich will versuchen das mit Bascom hinzukriegen.
Mein Code habe ich ober schonmal gepostet, der ist aber nicht mehr aktuell:
Diesen Code habe ich jetzt auf dem Controller.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 Regaddr(8) As Byte Dim Regwert(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) = 128 Regwert(2) = 14 Regwert(3) = 6 Regwert(4) = 0 Regwert(5) = 1 Regwert(6) = 0 Regwert(7) = 1 Regwert(8) = 7 Config Scl = Portb.2 Config Sda = Portb.3 Config I2cdelay = 10 '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 Waitms 1000 Portd.2 = 0 Waitms 1000 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 'XCK Low Waitus 2 Resetpin = 0 'Reset Low Waitus 2 Xckpin = 1 'XCK High Waitus 2 Resetpin = 1 'Reset High 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: Waitus 2 Startpin = 1 Waitus 2 Xckpin = 1 Waitus 2 Startpin = 0 'Do 'Warten bis Bild fertig: Do Waitus 3 Xckpin = 0 Waitus 5 Xckpin = 1 Waitus 2 Loop Until Readpin = 1 ' 'Bild lesen; For Z = 1 To 16383 I2cstart I2cwbyte &B10010001 I2crbyte Bild(z) , 9 I2cstop Xckpin = 0 Waitus 4 Xckpin = 1 Next Xckpin = 0 Waitus 1 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 = 1 To 3 Xckpin = 0 Sinpin = Addr.i Waitus 3 Xckpin = 1 Waitus 3 Next 'Registerwert übertragen: For I = 1 To 8 Xckpin = 0 Sinpin = Wert.i Waitus = 3 Xckpin = 1 Waitus = 3 Next Loadpin = 1 Waitus 2 Xckpin = 0 Waitus 4 Loadpin = 0 Sinpin = 0 End Sub
Die Schleife mit dem Printbin liefert mir im Terminalprogramm die Werte von oben.







Zitieren

Lesezeichen