Hallo zusammen,
ich bin auch wie viele andere am verzweifeln.
Habe das DOGM128-6 und versucht mit meinem eigenen Code zu
initialisieren.
Leider hat dies nicht funktioniert, warum auch immer.
Darauf hin habe ich mir viele andere Code Beispiele zu angesehen und
auch ausprobiert. Auch hier ohne Erfolg.
Ich betreibe das Display mit 3.3V (Application Notes beachetet).
1
voidSPI_MasterInit(void)
2
{
3
/* Set MOSI and SCK output, all others input */
4
DDRB=(1<<PB3)|(1<<PB5);
5
/* Enable SPI, Master, set clock rate fck/16 */
6
SPCR=(1<<SPE)|(1<<MSTR)|(1<<SPR0);
7
}
8
voidSPI_MasterTransmit(charcData)
9
{
10
/* Start transmission */
11
SPDR=cData;
12
/* Wait for transmission complete */
13
while(!(SPSR&(1<<SPIF)));
14
}
Das ist die init sowie transmission vom Datenblatt (Atmel).
Meine main() sieht wie folgt aus:
1
#define F_CPU 8000000UL
2
3
#include<avr/io.h>
4
#include<util/delay.h>
5
#include"graphics.h"
6
#include"SPI.h"
7
8
9
intmain(void){
10
SPI_MasterInit();
11
disp_init();
12
13
14
charstring[]="bla";
15
while(1){
16
17
g_draw_string(1,1,string,0);
18
}
19
}
die Include Datein habe ich von den Autor aus folgenden Beitrag:
Beitrag "EA DOGM128 128x64 Grafik Display"
Diese habe ich für mein Atmel (328p) abgeändert wie besprieben.
Es passiert einfach gar nichts!
Wäre echt toll wenn mir da jemand helfen könnte.
Grüße Jack
Zeig mal deinen Aufbau. Bilder bitte nur PNG.
Zu dem Display brauchst du noch ne Platine wo die Kondensatoren lt.
Datenblatt drauf sein müssen.
Ich geh mal davon aus das du ohne angeschlossen hast.
Klaus schrieb:> Zeig mal deinen Aufbau. Bilder bitte nur PNG.> Zu dem Display brauchst du noch ne Platine wo die Kondensatoren lt.> Datenblatt drauf sein müssen. Ich geh mal davon aus das du ohne> angeschlossen hast.
Lol, super Hinweis. PNG bei Fotos ist genauso dämlich wie JPG bei
Schaltplänen
Danke für die Hilfe und Quellcodes bzw. Links.
Leider kann ich keine Diskrepanz zwischen den Code und meinen
"orginalen" selbst geschriebenen finden.
Morgen werde ich mal die Kondensatoren tauschen.
Grüße
Hallo zusammen,
also C Code noch mal "angepasst" und überarbeitet, aber keine wirklichen
Fehler gefunden (kann mich natürlich täuschen)
Kondensatoren habe ich in Keramik getauscht, erst 470nF und dann noch
mal in 1µF, daran sollte es auch nicht liegen.
So langsam erschleicht mich das Gefühl, dass das Display nicht
funktioniert, ist aber neu.
Grüße
Jack schrieb:> So langsam erschleicht mich das Gefühl, dass das Display nicht> funktioniert, ist aber neu.
Hast du das hier
Beitrag "Re: DOGM128-6 ohne Funktion. Benötige Hilfe."
jetzt schon berücksichtigt oder nicht?
Wenn du den SS Pin von deinem Mega nicht auf Ausgang schaltest, dann
kannst du Displays tauschen bis du schwarz wirst: es wird nicht
funktionieren!
Uresache ist in dem Fall nicht das Display sondern die SPI EInheit vom
Mega. Ist SS nicht auf Ausgang, dann gelten Nebenbedingungen, die du
sehr wahrscheinlich nicht eingehalten hast. SS auf Ausgang und dann ist
zumindest dieser Punkt erst mal vom Tisch.
Das hier
Hallo zusammen,
also ich habe noch ein wenig weiter gesucht, aber leider nichts
gefunden.
Das Display hat 1µF Kondensatoren an den Stellen wo sie sein sollen und
das Display wird mit einer 3.3V Festspannung betrieben.
Wenn ich den µC programmiere dann flackert das Display kurz schwarz und
ist dann aus.
Das ist das höchste der Gefühle.
Karl H. schrieb:> /* Set MOSI and SCK output, all others input */> DDRB = (1<<PB3)|(1<<PB5);
Hast Du denn nun endlich ein:
DDRB = (1<<PB2)| 1<<PB3)|(1<<PB5);
für ein Ausschalten des Slave Select (PB2) hinzugefügt?
Morgen,
ja habe mitlerweile eine libary die funktionieren sollte, da diese viele
verwenden.
//Should chip select (CS) be used?
#define LCD_USE_CHIPSELECT 0
//Chip select
#if LCD_USE_CHIPSELECT == 1
#define PORT_CS PORTC
#define DDR_CS DDRC
#define PIN_CS PORTC1
#endif
und
void init_spi_lcd() {
DDRB |= (1<<PB2);
Das Display geht kurz ab, (schwarze striche überall) und dan ist es
wieder aus
Jack schrieb:> Das Display geht kurz ab, (schwarze striche überall) und dan ist es> wieder aus
Klingt ein wenig so, als würdest du der Ladungspumpe den Saft wegdrehen.
Leider habe ich mit dem DOGM128 noch nichts gemacht, das DOGM132-5 hatte
einen Fehler im Datenblatt, den sie hoffentlich mittlerweile korrigiert
haben.
Miss mal an der Kondensatorbank, ob du da stufenweise erhöhte Spannungen
im Betrieb messen kannst. Das ist also V0 (Pin 21) bis V4 (Pin 25).
An Pin 32 (Vout) solltest du dann etwa 9-12V messen können.
Das Problem im Datenblatt des DOGM132 (und es scheint, das sie das beim
DOGM128 auch falsch gezeichnet haben) war, das die Kondensatoren an den
Pins 27-31 falsch geschaltet sind. Einer gehört zwischen Pin 27(-) und
28(+) (der ist richtig gezeichnet), einer zwischen 29(+) und 30(-) und
der dritte zwischen 31(-) und 32(+). Dann klappt die Ladungspumpe
richtig und du kannst etwa 3-4 mal Vcc an Pin 32 messen.
Das bezieht sich alles auf den Single Supply Betrieb mit 3,3V. Falls du
den Dual Supply Modus benutzt, streich dieses Posting.
VOut messe ich 12,6V
Verbaut sind 1µF MKT Kondensatoren, wie im Datenblatt vorgeschrieben
verschalten.
zwischen 30 - 31 und 30 - 29 ist ein MKT geschalten.
Verpolen kann man da ja nichts.
Hi
>Das Problem im Datenblatt des DOGM132 (und es scheint, das sie das beim>DOGM128 auch falsch gezeichnet haben) war, das die Kondensatoren an den>Pins 27-31 falsch geschaltet sind. Einer gehört zwischen Pin 27(-) und>28(+) (der ist richtig gezeichnet), einer zwischen 29(+) und 30(-) und>der dritte zwischen 31(-) und 32(+). Dann klappt die Ladungspumpe>richtig und du kannst etwa 3-4 mal Vcc an Pin 32 messen.
Da ist überhaupt nichts falsch. Der Displaycontroller (ST7565P) kennt
fünf verschiedene "richtige" Boosterschaltungen. Was du beschreibst ist
ein 3-fach Booster. Die andere Schaltung mit Kondensatoren von CAP1P
bzw. CAP3P nach CAP1N ist ein 4-fach Booster. Und der funktioniert bei
mir problemlos.
>VOut messe ich 12,6V>Verbaut sind 1µF MKT Kondensatoren, wie im Datenblatt vorgeschrieben>verschalten.
Dann läuft den Booster. Mach mal eine Initialisierung ohne irgend ein
Clear. Die 'schwarzen Stricht' sollten dann bleiben.
MfG Spess
Also dein Troubleshooting...
Lass dirs Datenblatt raus, prüf alle Spannungen an den Pins nach, da
sind von 3V bis 12 V alle irgendwo dabei.. die prüfst du erstmal ab,
falls das alles koreekt ist, was ich glaube, sonst würds nicht flackern,
dann prüfst du mit Oszi oder logic analyzer mal deinen SPI-Bus nach,
falls nicht vorhanden musst du solange deinen Code rumprobieren bis es
eben geht, ich glaube die dogm typen haben doch auf ihrer HP alle
mgöichen Initialisierungsbeispiele für verschiedene Controller.
Ich perönlich steuer meins mit Texas MSP430 an, da funktioniert deren
Code mit SPI Anpassung prima.
Alexander H. schrieb:> Hast Du die Möglichkeit Signale nachzumessen, z.B. ob das /CS passend> kommt, oder ob die Daten mit der entsprechend passenden CLK rausgehen?>> Alex
Nein leider nicht :(
Aber ich denke ich werde da nicht drum herum kommen.
Ich habe mal den Code angehängt. Vielleicht findet jemand einen Fehler
im Code unter Berücksichtigung dass ich ein Atmega328p verwende.
Ich bin so langsam übel am verzweifeln, ich brauch dringend ein Oszi!
Ich denke, es hat etwas mit Deinem Pin "A0 Port" zu tuen. Das soll ja
dem Display CMD oder Data angeben. Der Pin wird ja spaeter als Ausgang
geschaltet, gehoert aber zum SPI. Vielleicht hängst Du das A0 vom
Display mal an einen anderen PIN und definierts den Natürlich auch in
der dogm-graphic.h um und versuchst es damit noch mal.
Alex
Alexander H. schrieb:> Ich denke, es hat etwas mit Deinem Pin "A0 Port" zu tuen. Das soll> ja> dem Display CMD oder Data angeben. Der Pin wird ja spaeter als Ausgang> geschaltet, gehoert aber zum SPI. Vielleicht hängst Du das A0 vom> Display mal an einen anderen PIN und definierts den Natürlich auch in> der dogm-graphic.h um und versuchst es damit noch mal.>> Alex
Ach verdammt, dass war der Fehler!
Es läuft danke.
Kumpel glaube mir das DISP funktioniert. solange du keine Wickelkondies
nimmst ist alles gut!
Lese das Datenblatt denn so habe ich es hinbekommen. SI CLK ist für SPI,
A0 entscheidet ob DAten oder Befehl, und CS machst du auf low am besten
oder zumindest so lange wie du das DISP benutzt
Wie gesagt das Display "geht"
Ich habe jetzt leider nur kleine Pixel überall und evtl. eine Schrift
die ständig durchläuft.
Bin mir noch nicht sicher an was das liegen könnte.
spess53 schrieb:> Da ist überhaupt nichts falsch. Der Displaycontroller (ST7565P) kennt> fünf verschiedene "richtige" Boosterschaltungen.
Ich hatte ausdrücklich gesagt, das ich nur das DOGM132-5 kenne. Und da
funktioniert die im Datenblatt angegebene Schaltung nicht. Mit dieser
taucht an Vout nur eine unbrauchbare Spannung im Bereich von 2-4V auf,
unabhängig von der Einstellung des Boosters.
Deine angebliche Schaltung für 3-fach Booster taucht im Datenblatt des
DOGM128 nicht auf und wird im Datenblatt des DOGM132 auch nicht als
solche erwähnt. Die funktionierende 4-fach Booster Schaltung (und es ist
ein 4-fach Booster, wie man eindeutig messen kann), die ich beschrieb,
wird in keinem der beiden Datenblätter richtig gezeichnet, läuft aber
bei mir seit Jahren und bringt ein deutliches helles Display.