Servus,
ich will hier so ein nettes kleines DOGM 163 (3x16 Zeichen) über SPI ansteuern. Nun hab ich aber (nachdem ich mir 2 Stunden hunderte Seitden Datenblätter reingezogen habe ) ein Problem: Der Chip hängt sich auf. Leider habe ich am Wochenende keinen Logic Analyser zur Verfügung um zu schauen was aufm Bus los ist, aber vllt sitz ich auch nur aufm Schlauch.
Sorry, der Code sieht leicht unübersichtlich aus wegen der ganzen Debugversuche, aber man verstehts recht schnell. Die letzte Ausgabe die ich bekomme ist: "Pins gesetzt" . Danach hängt er, also wohl der SPI Befehl.
Ich wäre euch echt super dankbar falls ihr mir auf die Sprünge helft, ich bin nach 3 Stunden versuchen am Ende.
EDIT: ARGH!"!! Ich fress 5 Besen auf einmal! Hab ich doch den SPIinit vergessen....Boah bin ich blöd. Wenn noch fragen kommen sollten stelle ich sie hier rein, also bitte trotzdem offen lassen
Mfg,
Flo
ich will hier so ein nettes kleines DOGM 163 (3x16 Zeichen) über SPI ansteuern. Nun hab ich aber (nachdem ich mir 2 Stunden hunderte Seitden Datenblätter reingezogen habe ) ein Problem: Der Chip hängt sich auf. Leider habe ich am Wochenende keinen Logic Analyser zur Verfügung um zu schauen was aufm Bus los ist, aber vllt sitz ich auch nur aufm Schlauch.
Sorry, der Code sieht leicht unübersichtlich aus wegen der ganzen Debugversuche, aber man verstehts recht schnell. Die letzte Ausgabe die ich bekomme ist: "Pins gesetzt" . Danach hängt er, also wohl der SPI Befehl.
Code:
$regfile= "m168def.dat"
$crystal= 8000000
$baud = 19200
$hwstack = 40
$swstack = 32
$framesize = 60
'*************************************LCD***************************************
Config Spi = Hard , Interrupt = Off , Data_order = Msb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 16 , Noss = 1 , Spiin = 0
Print "spi conf fertig"
'*************************************VAR***************************************
Dim Spi_temp As Byte
'*************************************I/O***************************************
Config Portd.5 = Output 'Summer
Summer alias Portd.5
Config Portd.6 = Output 'Led_links
Led_links alias Portd.6
Config Portd.7 = Output 'Led rechts
led_Rechts alias Portd.7
Config Portc.3 = Output ' Interrupt Pin
Int_Pin alias Portc.3
Config Portc.2 = Output
Rs485_dir Alias Portc.3
Config Portb.1 = Output '0=Schreiben
Rs Alias Portb.1
Config Portb.2 = Output
Inv_cs Alias Portb.2
Config Pinc.1 = Input 'Optokopplerstufe
Opto Alias Pinc.1
Config Pind.2 = Input
Enc_links Alias Pind.2
Config Pind.3 = Input
Enc_rechts Alias Pind.3
'***********************************LCD_INIT************************************
Reset Rs
Reset Inv_cs
Print "Pins gesetzt"
Spi_temp=&H39
Spiout Spi_temp , 1 '8 Bit, 3 zeilen-->Instruction Table1
Print "1"
Waitms 2
Spi_temp = &H1D
Spiout Spi_temp , 1 ' 3-Zeilen
Print "2"
Waitms 2
Spi_temp = &H50
Spiout Spi_temp , 1 'Booster aus
Print "3"
Waitms 2
Spi_temp = &H6C
Spiout Spi_temp , 1 'Spannungsfolger
Print "4"
Waitms 2
Spi_temp = &H7C
Spiout Spi_temp , 1 'Kontrast
Print "5"
Waitms 2
Spi_temp = &H38
Spiout Spi_temp , 1 'Zurück zur Instruction Table0
Print "6"
Waitms 2
Spi_temp = &H0F
Spiout Spi_temp , 1 'LCD an, Cursor blinken
Print "7"
Waitms 2
Spi_temp = &H01
Spiout Spi_temp , 1 'CLS LCD, HOME
Print "8"
Waitms 2
Spi_temp = &H06
Spiout Spi_temp , 1 'Auto Increment Cursor
Print "LCD INIT OFF"
'###############################################################################
'############################# MAIN #########################################
'###############################################################################
Do
Toggle Summer
Waitms 500
Print "Main"
Loop
End
Ich wäre euch echt super dankbar falls ihr mir auf die Sprünge helft, ich bin nach 3 Stunden versuchen am Ende.
EDIT: ARGH!"!! Ich fress 5 Besen auf einmal! Hab ich doch den SPIinit vergessen....Boah bin ich blöd. Wenn noch fragen kommen sollten stelle ich sie hier rein, also bitte trotzdem offen lassen
Mfg,
Flo