'------------------------------------------------------------------------------- ' Spectroscopy mit ILX551B 2048-pixel CCD Linear Sensor V 2b 10.Apr.2012 ' BASCOM 2.0.7.4 '------------------------------------------------------------------------------- $regfile = "m168def.dat" $crystal = 14745600 ' Quarz für exakte 115200 baud $hwstack = 40 $swstack = 50 $framesize = 50 $baud = 115200 Config Input = Crlf , Echo = Crlf ' Konfiguration Seriell In Dim Buffer(512) As Byte Dim Ex As String * 9 Dim E As Word Dim N As Word Dim M As Byte Dim X As Word Config Portd.6 = Output Clk Alias Portb.1 ' auf Clk Pin vom ILX551B Rog Alias Portb.0 ' auf Rog Pin vom ILX551B Ddrc = &B00000000 'Port C aufs Eingang Portc = &B11111110 'Port C auf High ausser C.0 Ddrb = &B00000011 'Port B Pin 0 / 1 Ausgänge Config Adc = Single , Prescaler = 8 , Reference = Avcc Set Admux.5 Start Adc Set Prog Waitms 1 Portd.6 = 0 Do X = 0 M = 0 '------------------------- Warten auf Expos.-Wert vom PC ' Ex muss am PC mit CR abgeschlossen werden Input Ex E = Val(ex) Ex = "" '------------------------- Dummy Lauf über alle Pixel, Dauer ca. 10 ms Reset Rog Waitus 200 Set Rog For N = 0 To 2086 Reset Clk Waitus 1 Set Clk Next N '------------------------- Belichtungszeit einstellen Reset Rog Waitus E 'Belichtungszeit Set Rog Portd.6 = 0 Portd.6 = 1 : Nop : Nop : Nop 'Test-Puls für Oszi Trigger Portd.6 = 0 '------------------------- Mess Lauf , ca. 20 ms, jedes 4.Pixel lesen For N = 0 To 2086 Incr M Reset Clk Waitus 1 Set Clk If M = 4 Then Nop : Nop Set Adcsra.adsc While Adcsra.adsc = 1 Wend Buffer(x) = Adch M = 0 Incr X End If Next N '------------------------- Daten an serielle Schnittstelle schicken Print "++" Print E ; " us" Print "Start Data" For X = 1 To 512 Print Buffer(x) Next Print "e" Loop