mikrocontroller.net

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


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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):
#!/usr/bin/env python

import interfaces.ft232 as ft232
import time

myBus=ft232.SPIbus({'vid':0x0403,'pid':0x6001})
myBus.PINS['A0']=myBus.PINS['MISO']
myBus.device.enableBitBanging(
        myBus.PINS['MOSI']|
        myBus.PINS['A0']|
        myBus.PINS['SCK']|
        myBus.PINS['RESET']
)
myBus.TIMING=10

myBus.setPin(myBus.PINS['A0'],0)
myBus.setPin(myBus.PINS['RESET'],1)
time.sleep(0.10)
myBus.setPin(myBus.PINS['RESET'],0)
time.sleep(0.50)

def lcd_write(Bus,buffer):
        return Bus.echos(buffer)

lcd_write(myBus,[0x40,0xA1,0xC0,0xA6,0xA2,0x2F,0xF8,0x00,0x27,0x81,0x16,0xAC,0x00,0xAF])
myBus.setPin(myBus.PINS['A0'],1)
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.

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernhard S. (bernhard)
Datum:

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

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

Bernhard

Autor: Alex (Gast)
Datum:
Angehängte Dateien:

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

Siehe Anhang.
Ist SPI so initialisiert, dass mit steigender Flanke die Daten
übernommen werden können?
Zwischen Flankenwechsel des SI und des CLK sind mind. 1ms Platz.
Konntest Du das Initialisierungsbeispiel, welches in der
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.

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
myBus.setPin(myBus.PINS['A0'],0)
myBus.setPin(myBus.PINS['RESET'],0)
time.sleep(0.10)
myBus.setPin(myBus.PINS['RESET'],1)
time.sleep(0.50)

Das allein hat aber leider nicht geholfen.

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab das nun hinzugefügt, leider keinerlei Änderung :-(

Autor: Bernhard S. (bernhard)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Flo (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: AndreasU (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.