Probleme mit DOG-M (128x64)

Gast #898514
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.
#900092
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
Gast #900970
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.
Angehängte Dateien:
#901221
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
Gast #901429
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.
Gast #1007041
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
Angehängte Dateien:

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