Forum: Mikrocontroller und Digitale Elektronik Bascom Atemga32 über PollinEvalBoard an Grafikdisplay eDIP-240


von Thomas H. (microtom)


Lesenswert?

Hallo Zusammen,

für ein neues Projekt (Jalousiesteuerung) möchte ich meinen Atemga32 auf 
dem Pollin Evaluation Baord mit einem eDIP-240 Grafikdisplay 
verheiraten.

Ich habe zuvor schon mit anderen Displays erfolg gehabt, aber noch nie 
ein I²C Display verwendet. Daran scheitert es wohl gerade auch.

Das Display habe ich wie folgt mit dem Atmel verbunden:

Display

1   ------------ GND
2   ------------ VCC
5   -- RESET --- VCC
12  - I2CMode -- GND
14  - SDA ------ Atmega PortB.2
15  - SCL ------ Atmega PortB.3

Ich bin mir leider wegen den Adressierungen nicht ganz schlüssig (wie 
gesagt I2C Anfänger). Aber im Datenbaltt des Displays 
http://www.lcd-module.de/pdf/grafik/edip240-7.pdf meine ich zu erkennen, 
dass wenn ich alle Adressierpins offen lasse ich die Adresse H10 habe...

Mein Display macht gar nichts, kein Bild :(... Keine Reaktion.
Ich würde mich sehr über Tipps freuen, wie ich das Display zum laufen 
äähm anzeigen bekomme.

Danke und schöne Grüße
Thomas


Hier der Test-Programm-Code in Bascom:
1
$regfile = "m32def.dat"
2
$crystal = 1000000
3
$hwstack = 64
4
$swstack = 64
5
$framesize = 64
6
7
8
Dim Dat As Byte
9
Dim Sbuf As Byte
10
Dim Rbuf As Byte
11
Dim Bcc As Byte
12
Dim C As String * 1
13
Dim N As Integer
14
Dim Buffer As String * 24
15
16
Declare Sub Write_edip
17
18
Portb = 255                                                 'Pullups
19
20
Config Sda = Portb.2
21
Config Scl = Portb.3
22
Config Portd.5 = Output
23
Config Portd.6 = Output
24
25
Const Slave = &H10                                          'I2C write DC
26
Const Slaverd = &HDD                                        'I2C read DD
27
28
I2cinit
29
Toggle Portd.5
30
31
  Buffer = Chr(27) + "YH" + Chr(80)                         '80% brightness
32
  Write_edip
33
  Buffer = Chr(27) + "DL" + Chr(13)                         'clear
34
  Write_edip
35
  Buffer = Chr(27) + "ZF" + Chr(2) + Chr(13)                '2 = FONT6x8
36
  Write_edip
37
  Buffer = Chr(27) + "ZL" + Chr(100) + Chr(60) + "eDIP240-7" + Chr(13)
38
  Write_edip
39
40
Do
41
42
43
Loop
44
45
46
47
'***************************** eDIP240-7 ************************
48
49
50
Sub Write_edip
51
Toggle Portd.6
52
  I2cstart
53
  I2cwbyte Slave
54
  Dat = 17
55
  I2cwbyte Dat
56
  N = Len(buffer)
57
  Bcc = 17 + N
58
  I2cwbyte N
59
  For N = 1 To Len(buffer)
60
   C = Mid(buffer , N , 1)
61
   Dat = Asc(c)
62
   If Dat = 255 Then Dat = 1
63
   I2cwbyte Dat                                             'Asc(c)
64
   Bcc = Bcc + Asc(c)
65
  Next N
66
  I2cwbyte Bcc
67
  I2cstop
68
  Waitms 1
69
  N = 0
70
  I2cstart
71
  I2cwbyte Slaverd
72
  I2crbyte Dat , Nack
73
  I2cstop
74
  N = N + 1
75
  Waitms 1
76
End Sub
77
78
End

von L. C. Deininger (Gast)


Lesenswert?

Kann Dein Display I²C oder hängt es an einem I²C-Bus-Expamder (z.B. 
PCF8574).

Wenn es an einem Bus-Expander hängt, dann muß das Display gleichwohl 
seine Initialisierungssequenzen bekommen. Also HD44780 mit Anpassung für 
KS0073!

von Thomas H. (microtom)


Lesenswert?

Hallo L.C.,

das Display kann von Haus aus I²C. Es kann sogar RS-232, I²C-BUS ODER 
SPI-BUS.

Da ich aber beim Atmega den RS-232 noch anderweitig benötige habe ich 
mich für den I²C entschieden.

Den Beispeilcode habe ich von einer Seite 
http://www.elexs.de/mikros/edip3.html, wo das ganze auch schon 
erfolgreich getestet wurde. Nur haben die dort eine spezielle 
Experimentierplatine für das Display erstellt, auf welchem der Code 
läuft.

Meinen Aufbau habe ich vom Schaltplan dieser Experimentierplatine 
adaptiert. Es sind 'ja nur' ein paar Leitungen die für den I²C benötigt 
werden, jedoch wie gesagt bei mir macht das Display keinen Mucks...

Wie sieht das mit der Adressierung aus, ist es korrekt, dass wenn ich 
bei dem Display alle Adress-Pins offen lasse (also BA0, BA1, Ba2 und 
dann noch SA0, SA1 und SA2) die Adressierung 10Hex habe?

Die Frage bezieht sich hauptsächlich darauf, dass ich mit Bascom bisher 
noch nie eine I²C Komponente angesprochen habe und hier viele Fragen im 
Raum stehen.

Im Code werden ja die Daten und Clock-Leitung mit
1
Config Sda = Portb.2
2
Config Scl = Portb.3

initiiert.

Dann folgt die Adressierung mit:
1
Const Slave = &H00  
2
Const Slaverd = &H10

wobei die Konstanten später in der Schreib-Sub-Routine mit dem Bascom 
Befehlt
1
  I2cwbyte

verwendet werden. Was genau geschieht hier?
wobei da die Frage ist, was genau ist Slave und Slaverd bzw. ist das 
schon alles mit der Adressierung?

Grüße
Thomas

von L. C. Deininger (Gast)


Lesenswert?

Hallo Thomas,
ich hab das kleine "e" vor dem DIP übersehen.

Also wenn das ein Mustercode ist, dann sollte das auch so laufen (ich 
kann kein BASCOM). Ich würde nun hergehen und mir den Schaltplan der 
Steuerplatine mal genauer ansehen, von wo Du das Programm her hast.
Alle Anschlüsse sehr sorgfältig nochmals überprüfen und ob die Spannung 
richtig eingestellt ist.

Und selbverständlich nochmals das Ganze gegen das Datenblatt von 
Electronic Assembly gegenchecken.

Wenn die Hardware OK ist, dann sollte auch die Software laufen.

von Thomas H. (microtom)


Angehängte Dateien:

Lesenswert?

Hallo L.C.,

ich hab auch etwas übersehen, es ist ein eDIP240-7, das (-7) spielt ja 
auch noch eine Rolle, denn es gibt auch das ohne (-7). Das Datenblatt 
war jedoch das richtige.

Die Adressierung ist mir nun bekannt, wenn alle Adressierungspins offen 
sind ist es $DE bzw. $DF, jedoch leider noch keine Funktion.

Ich hab hier mal den Schaltplan hochgeladen von dem Testboard (welche 
ich nicht habe) Dort gibt es sehr viele Jumper, da das Board 
Multifunktionsfähig ist. Also gar nicht so einfach die reine I2C 
Funktion herauszufiltern.

Jedoch stellt sich mir die Frage ob ich die Widerstandsbeschaltung 
(links überm Feststpannungregler) für SDA und SCL denn benötige - oder 
ob ich SCA und SDL direkt an das Display hängen kann...?

von Thomas H. (microtom)


Lesenswert?

Ohjeohje,

jetzt wird's peinlich!

Ich habe tatsächlich nur das DIP240-7, anderst wie es mir zugesagt 
wurde... Aber das ist OK, notfalls nehme ich natürlich auch dieses und 
steuere es mit 8bit an.

Jetzt aber dazu natürlich die neue Frage:

Kennt jemand ein kleines BASCOM Beispiel für einfach Ausgabe und 
Touch-Eingabe?

Danke und Grüße
Thomas

von L. C. Deininger (Gast)


Lesenswert?

Lieber Thomas,

irren können wir alle mal. Wenn es Beispiele gibt, dann werden die auch 
von Suchmaschinen gefunden.

Aber da der Titel nicht mehr zum Thema passt (eDIP) würde ich ein neues 
Thema mit einer gut formulierten Frage aufmachen.

von Thomas H. (microtom)


Lesenswert?

Mach ich :)

Und vielen Dank für die Hilfe bisher!

Thomas

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.