Bascom Atemga32 über PollinEvalBoard an Grafikdisplay eDIP-240

#2401720
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
#2402096
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
Gast #2402141
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.
#2402687
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...?
Angehängte Dateien:
#2402914
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren