Forum: Mikrocontroller und Digitale Elektronik Probleme mit DOG-M (128x64)


von Alex (Gast)


Lesenswert?

Hi,
ich hab mir neulich bei Reichelt so ein DOG- Display gekauft, habs 
leider noch nicht zum laufen bekommen.

Leider kann ich auch nicht genau ausschließen, was nun das Problem ist, 
deswegen mal kurz eine Liste was ich gemacht habe.

  * single supply
  * 1uF/65V Elkos, dabei den Minus an CAPxN
  * 3.3V durch Festspannungsregler
  * 5V Pegel bei der SPI, mit 5kOhm Widerstand davor
  * 3.9ms Periode für SCL
  * SI schaltet immer 2ms nach SCL

Die ganze Ansteuerung mach ich über ein USB- Interface, welches im 
Bit-Banging Modus läuft, hier ein Ausschnitt aus meinem Code (Python):
1
#!/usr/bin/env python
2
3
import interfaces.ft232 as ft232
4
import time
5
6
myBus=ft232.SPIbus({'vid':0x0403,'pid':0x6001})
7
myBus.PINS['A0']=myBus.PINS['MISO']
8
myBus.device.enableBitBanging(
9
        myBus.PINS['MOSI']|
10
        myBus.PINS['A0']|
11
        myBus.PINS['SCK']|
12
        myBus.PINS['RESET']
13
)
14
myBus.TIMING=10
15
16
myBus.setPin(myBus.PINS['A0'],0)
17
myBus.setPin(myBus.PINS['RESET'],1)
18
time.sleep(0.10)
19
myBus.setPin(myBus.PINS['RESET'],0)
20
time.sleep(0.50)
21
22
def lcd_write(Bus,buffer):
23
        return Bus.echos(buffer)
24
25
lcd_write(myBus,[0x40,0xA1,0xC0,0xA6,0xA2,0x2F,0xF8,0x00,0x27,0x81,0x16,0xAC,0x00,0xAF])
26
myBus.setPin(myBus.PINS['A0'],1)
27
lcd_write(myBus,[0x40,0xA1,0xC0,0xA6,0xA2,0x2F,0xF8,0x00,0x27,0x81,0x16,0xAC,0x00,0xAF])

Die zweite Zeile sollte eigentlich irgendwelche Pixel anschalten - 
leider tut sich gar nix.

Über Hinweise wäre ich sehr dankbar.

Übrigens ist die Ansteuerung über Python/USB recht portabel (läuft unter 
Linux und Windows one code-änderungen). Das USB- Interface ist lediglich 
ein FT232 (ftdi-chip.com).

Schonmal vielen Dank.

von Bernhard S. (bernhard)


Lesenswert?

Hallo Alex,

der Reset-Pin, ist der vor der Initialisierung auch auf HIGH, mit einer 
Pause dazwischen ?

Ist SPI so initialisiert, dass mit steigender Flanke die Daten 
übernommen werden können?

Konntest Du das Initialisierungsbeispiel, welches in der 
LCD-Beschreibung mitgeliefert wird mal testen?

Gruß

Bernhard

von Bernhard S. (bernhard)


Lesenswert?

Ein lauffähiges Beispiel mit einem DOG-LCD 128x64 für einen Atmega8 in 
Assembler:

Beitrag "DOG LCD 128x64 Initialisierung ATmega8 (Assembler)"

Bernhard

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

Hi Bernard.
1
der Reset-Pin, ist der vor der Initialisierung auch auf HIGH, mit einer
2
Pause dazwischen ?
Ja, habe ich auch nachgemessen... er ist mind. 10ms auf HIGH und dann 
mind. 50ms auf LOW.

Siehe Anhang.
1
Ist SPI so initialisiert, dass mit steigender Flanke die Daten
2
übernommen werden können?
Zwischen Flankenwechsel des SI und des CLK sind mind. 1ms Platz.
1
Konntest Du das Initialisierungsbeispiel, welches in der
2
LCD-Beschreibung mitgeliefert wird mal testen?

Die Abfolge der SPI- Daten wäre laut Handbuch:
[0x40,0xA1,0xC0,0xA6,0xA2,0x2F,0xF8,0x00,0x27,0x81,0x16,0xAC,0x00,0xAF]

Was genau soll dann passieren? Blinkt dort ein Cursor?

Bei mir ist dann leider nix weiter passiert.

von Bernhard S. (bernhard)


Lesenswert?

Im Assemblerprogramm habe ich's wie folgt umgesetzt:


RESET auf LOW

PAUSE ca. 100ms

RESET  auf HIGH

PAUSE ca. 100ms

A0 auf LOW        ; Auf Command umschalten


Dann werden folgende Bytes gesendet:

0x40    ; Start Line 0
0xA1    ; ADC reverse
0xC0    ; Normal COM0-COM63
0xA6    ; Display normal
0xA2    ; SET BIAS
0x2F    ; BOOSTER
0xF8    ; Set Booster internal to 4x
0x00    ;
0x27    ; CONTRAST
0x81    ; CONTRAST
0x16    ; CONTRAST
0xAC    ; No indicator
0x00    ;
0xAF    ; Display on

Bevor das Byte durch SPI gesendet wird, wird CS auf LOW gezogen, und 
nach der Übertragung wieder auf HIGH gesetzt.


>Was genau soll dann passieren? Blinkt dort ein Cursor?

Im ungünstigsten Fall sieht man nix, mit etwas Glück sieht man nur ein 
paar wirre Pixel , anfangs dachte ich, es wäre etwas Staub und begann 
schon wild daran herumzuwischen ;)

Display-Daten werden ganz einfach dargestellt, A0 auf HIGH CS auf LOW 
und SPI sendet xFF, anschließend CS auf HIGH.


Bernhard

von Alex (Gast)


Lesenswert?

Der CS- Wechsel ist aber nicht wirklich notwendig? Ich mein, im 
Datenblatt ist CS ständig auf LOW.

Mit dem Reset hast du natürlich auch Recht, da der ja LOW- aktiv ist. 
D.h. also:
1
myBus.setPin(myBus.PINS['A0'],0)
2
myBus.setPin(myBus.PINS['RESET'],0)
3
time.sleep(0.10)
4
myBus.setPin(myBus.PINS['RESET'],1)
5
time.sleep(0.50)

Das allein hat aber leider nicht geholfen.

von Bernhard S. (bernhard)


Lesenswert?

> Der CS- Wechsel ist aber nicht wirklich notwendig?

CS sollte, vor der SPI Übertragung auf LOW gezogen werden, damit wird 
das Taktsignal und Datensignal beim Slave synchronisiert.

> Ich mein, im Datenblatt ist CS ständig auf LOW.

Bei mir nicht

von Alex (Gast)


Lesenswert?

Hab das nun hinzugefügt, leider keinerlei Änderung :-(

von Bernhard S. (bernhard)


Lesenswert?

In diesem Beispiel habe ich einen ATmega8 verwendet:

Beitrag "DOG LCD 128x64 Initialisierung ATmega8 (Assembler)"

Vielleicht würde es helfen, wenn Du einen ATmega8 mit diesem hex-File 
programmierst, damit Du wenigstens die Hardware mal überprüfen kannst?


Bernhard

von Flo (Gast)


Angehängte Dateien:

Lesenswert?

hallo leute,

ich hab jetzt schon jede menge zeit in ein dog-display gesteckt und hab 
grad nach tagelanger tüftelarbeit ein erfolgserlebnis gehabt.
und alles durch diesen spruch:
"Mit dem Reset hast du natürlich auch Recht, da der ja LOW- aktiv ist."

low-aktiv ... ich habe echt alles probiert und daran lags.

als "dank" häng ich meine c-Testdatei an, geht mit meinem EA DOGM163W-A 
und kann nichts, außer das display initialisieren. aber eben durch 
solche dateien (hab glaub 6 verschiedene ansätze durhgelesen/probiert) 
hab ichs letztendlich geschafft.
Reset ist an einen Controllerpin gelötet. (vorher mit gnd gings nicht!)

An der Stelle schonmal "Danke" an das Forum hier, was mich überhaupt 
erst auf den Trip sowat zu basteln gebracht hat. Mein Projekt wird 
vorgestellt, wenns fertig ist.

Gruß
Flo

von AndreasU (Gast)


Lesenswert?

Auch ein dickes Lob von mir am sämtliche dogm threads! Haben mir alle 
etwas weiter geholfen.

Mein 81W läuft nun bei einem µC Takt von 32khz:)

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.