Forum: Mikrocontroller und Digitale Elektronik Atmega8 SPI Display Dogm162 3,3V 4Bit ansteuern BASCOM


von Tom (Gast)


Lesenswert?

Hallo zusammen,

ich hab jetzt alle Beiträge durch was Bascom und SPI mit DOGM betrifft, 
auch die Bascom Hilfe bringt mir nichts.
Ich glaub ich bin zu doof ein einfaches Display an zu steuern.
SPI hab ich bis jetzt noch nicht gemacht und stellt sich als relativ 
schwierig heraus.

Ich hab einen Atmega8 und ein Dogm162 Display

Verschaltet ist es so:

Atmega8 --- Display

8 PB7   ---  38 CSB
7 PB6   ---  39 RS
15 Mosi --- 28 SI
17 SCK  --- 29 CLK

Mir ist etwas schleierhaft wie ich die CSB und RS Pins ansteuern muss...

Die Initialisierung mit den Hex werten ist genau nach Datenblatt

Versorgt wird alles über 3,3Volt und Beschaltung ist ebenfalls genau 
nach Datenblatt
http://www.lcd-module.de/pdf/doma/dog-m.pdf


Ich bekomms einfach nicht zum laufen....
Könnt ihr mir hier irgendwie weiterhelfen?

1
$regfile = "m8def.dat"
2
$Crystal=4000000
3
$hwstack=40
4
$swstack=16
5
$framesize=32
6
7
8
'*************************************LCD***************************************
9
Config Spi = Hard , Interrupt = Off , Data_order = Msb , Master = Yes , Polarity = High , Phase = 0 , Clockrate = 16 , Noss = 1 , Spiin = 0
10
11
12
'*************************************VAR***************************************
13
Dim Spi_temp As Byte
14
15
16
'RS vom Display
17
Config Portb.6 = Output
18
Rs Alias Portb.6
19
Rs = 1
20
21
22
'CSB vom Display
23
Config Portb.7 = Output
24
Inv_cs Alias Portb.7
25
Inv_cs = 1
26
27
'***********************************LCD_INIT************************************
28
29
Reset Rs
30
Reset Inv_cs
31
32
waitms 5
33
34
35
Spi_temp=&H39
36
Spiout Spi_temp , 1                                        
37
38
39
Waitms 5
40
41
Spi_temp = &H14
42
Spiout Spi_temp , 1                                       
43
44
Waitms 5
45
46
Spi_temp = &H55
47
Spiout Spi_temp , 1                                        
48
49
Waitms 5
50
51
Spi_temp = &H6D
52
Spiout Spi_temp , 1      
53
54
55
Waitms 5
56
57
Spi_temp = &H78
58
Spiout Spi_temp , 1                     
59
                    
60
Waitms 5
61
62
Spi_temp = &H38
63
Spiout Spi_temp , 1                                         
64
65
66
Waitms 5
67
68
Spi_temp = &H0F
69
Spiout Spi_temp , 1                                        
70
71
Waitms 5
72
73
Spi_temp = &H01
74
Spiout Spi_temp , 1                                         
75
76
Waitms 5
77
78
Spi_temp = &H06
79
Spiout Spi_temp , 1                                         
80
81
82
wait 5
83
84
85
 Cls                                                         
86
Locate 1 , 1 : Lcd "Hello World"
87
88
Locate 2 , 1 : Lcd "line 2"
89
90
91
do
92
93
wait 1
94
95
loop
96
97
End

von Paul B. (paul_baumann)


Lesenswert?

Es fehlt die Initialisierung  der SPI Schnittstelle, der Befehl 
"SPIINIT".

Das ist aber auch nicht richtig, denn die Pinnummern des Kontrollers 
stimmen nicht:

8 PB7   ---  38 CSB
7 PB6   ---  39 RS
15 Mosi --- 28 SI
17 SCK  --- 29 CLK

So ist es:

PB5 ist SCK (Anschluß 19)
PB4 ist MISO (anschluß 18)
PB3 ist MOSI (Anschluß 17)
PB2 ist SS   (Anschluß 16)

Der SS-Pin muß "von Hand" auf Ausgang gesetzt werden.

MfG Paul

von Tom (Gast)


Angehängte Dateien:

Lesenswert?

Das Pinning am Controller stimmt schon, da ich die Bauform MLF benutze

Siehe Bild

Kannst du mir sagen wo ich welchen pin hinverbinden muss?

PB5 ist SCK (Anschluß 17)   -- > Dogm CLK (Pin 29)
PB4 ist MISO (anschluß 16)  -- > Dogm CSB (Pin 38)
PB3 ist MOSI (Anschluß 15)  -- > Dogm SI (Pin 28)
PB2 ist SS   (Anschluß 14)  -- > Dogm RS (Pin 39)

Dann das "Spiinit" ich nehm mal an vor "Config Spi = "

Und den Ausgang PB2 auf Output Configurieren

Bei dem Miso muss man nichts mehr machen, oder?


Werd dann gleich mal umlöten

von Tom (Gast)


Lesenswert?

Ich brings einfach nicht hin...

Werd mal meinen Atmega wechseln, vielleicht ist hier was defekt.


Sobald das Läuft meld ich mich mit dem Quellcode nochmal für alle die 
irgendwann auch so ein Problem haben.

von Frederik H. (diveturtle93)


Lesenswert?

Hallo,

hatte das selbe Problem. Hab es aber inzwischen gelöst.

Aktuell betreibe ich das Display mit einem Atmega8 an 5V. Das Programm 
wurde in C geschreiben, den Hardware SPI nutze ich nicht. Hab eine 
Soft-SPI geschreiben.

von spess53 (Gast)


Lesenswert?

Hi

>Ich brings einfach nicht hin...

Hast du überhaupt den richtigen SPI-Mode? Lt. Datenblatt des ST7036 
müsste es Mode3 (CPOL=1, CPHA=1) sein. In deiner Init steht aber Phase = 
0.

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.