wieder mal ft800

OP #4718355
Lesenswert?

hi ...

ich bekomme das display
  http://81.169.243.4/20160913_114119.jpg
an einem teensy einfach nicht stabil ans laufen

der fehler ist im video zu sehen
  http://81.169.243.4/20160913_114012.mp4

hat jemand auch schon einmal so einen effect gehabt und
kann mir einen tip geben ???

ich hab es mit der gd2-lib und auch mit der orginalen ft_LIBS getestet,
immer der gleiche effect

die zeit bis es abraucht scheint von der mondstrahlungskonstante 
abzuhängen
und ist immer unterschiedlich ...

ft800-libs
1
int16_t ft800Configure() {
2
    uint32_t chipid = 0;
3
    FTImpl.Init(FT_DISPLAY_RESOLUTION);
4
    delay(20);
5

6
    chipid = FTImpl.Read32(FT_ROM_CHIPID);
7

8
    if(FT800_CHIPID != chipid)
9
        return 1;
10

11
    FTImpl.SetDisplayEnablePin(FT_DISPENABLE_PIN);
12
    FTImpl.SetAudioEnablePin(FT_AUDIOENABLE_PIN);
13
    FTImpl.DisplayOn();
14
    FTImpl.AudioOff();
15
    return 0;
16
}
17

18
void setup() {
19
    ft800Configure();
20
    FTImpl.DLStart();
21
        FTImpl.Clear(1,1,1);
22
        FTImpl.ColorRGB(255,255,255);
23
    FTImpl.Finish();
24
}
25

26
void loop() {
27
    char buf[30];
28
    memset (buf, 0, sizeof(buf));
29
    snprintf(buf, sizeof(buf)-1, "%d", millis());
30
    FTImpl.DLStart();
31
        FTImpl.Clear(1,1,1);
32
        FTImpl.ColorRGB(255,255,255);
33
        FTImpl.Cmd_Text(240, 138, 31, FT_OPT_CENTER, buf);
34
        FTImpl.Cmd_Text(240, 198, 31, FT_OPT_CENTER, "...abrauchen...");
35
    FTImpl.DLEnd();
36
    FTImpl.Finish();
37
}

gd2-lib
1
void setup() {
2
    //  wakeup display (pd-pin)
3
    pinMode(4, OUTPUT);
4
    digitalWrite(4, HIGH);
5
    delay(20);
6
    digitalWrite(4, LOW);
7
    delay(20);
8
    digitalWrite(4, HIGH);
9
    delay(20);
10

11
    GD.begin(~GD_STORAGE);
12
    GD.ClearColorRGB(BLACK);
13
    GD.Clear();
14
    GD.swap();
15
}
16

17
void loop() {
18
    GD.ClearColorRGB(BLACK);
19
    GD.Clear();
20
    GD.cmd_number(240,  136, 31, OPT_CENTER, count);
21
    count++;
22
    GD.swap();
23
}
Gast #4721213
Lesenswert?

ich habe mal einen arduino uno besorgt um das zu testen
damit funktioniert das ohne probleme, es kann also nur
an den libs liegen bzw. der initalisierung des ft800-chips liegen

hat jemand damit schon erfahrungen gesammelt und kann
einen tip abgeben ?
Gast #4721425
Lesenswert?

Kann es sein, dass die loop() zu schnell läuft?
Der FT800 mag es nicht, wenn man die Liste mit mehr als 60Hz 
aktualisiert.

An der Initialisierung liegt es ja offenbar nicht.

Und wo kommen die 5V her? Liefert die Quelle auch genug Strom?
Mein FT800CB habe ich jedenfalls mit einem eigenen Regler am Laufen 
gehabt.

Ansonsten gibt es hier noch was:
Beitrag "FT800 / FT810 Library"

Wobei ich allerdings nicht sicher weiss, was Du mit "teensy" meinst, 
gibt es von den Dingern nicht diverse Versionen?
Aber meine Lib compiliert auch für Arduino, man muss nur zwei Dateien 
auf .cpp umbenennen.
OP #4721509
Lesenswert?

Rudolph schrieb:


danke erstmal für deine antwort ...

> Kann es sein, dass die loop() zu schnell läuft?
> Der FT800 mag es nicht, wenn man die Liste mit mehr als 60Hz
> aktualisiert.

nee, das passt ...

ich hab es jetzt am laufen ...

ich hatte zwischen display und arduino uno etwa 20cm kabel,
das hat funktioniert

dann den uno gegen einen teensy getauscht, nix geht

dann hab ich mal die kabel zwischen teensy und display
auf ca. 5cm gekürzt
nun tut es ohne probleme ...

verstehen tu ich das aber nicht, weil spi-bus hab ich auch
schon über strecken bis zu einem meter bei testaufbauten
auf dem tisch ohne probleme gehabt ...

> An der Initialisierung liegt es ja offenbar nicht.
>
> Und wo kommen die 5V her? Liefert die Quelle auch genug Strom?
> Mein FT800CB habe ich jedenfalls mit einem eigenen Regler am Laufen
> gehabt.
>
> Ansonsten gibt es hier noch was:
> Beitrag "FT800 / FT810 Library"

das kenn ich ;)

> Wobei ich allerdings nicht sicher weiss, was Du mit "teensy" meinst,

https://www.pjrc.com/teensy/
Gast #4721563
Lesenswert?

Ray M. schrieb:
> dann hab ich mal die kabel zwischen teensy und display
> auf ca. 5cm gekürzt
> nun tut es ohne probleme ...

Wie schnell läuft der SPI denn?
Die 8 MHz die der AVR macht laufen erstaunlich stabil auch über 
hässlichere Verbindungen. :-)

Aber um was sauberes zum Spielen zu haben bin ich dabei mir eine Platine 
zu schnitzen, im Bild der bisherige Stand auf einem VM800B35A montiert.
Alternativ hat das Ding noch einen Folien-Leiter Anschluss für die TFTs 
von Riverdi und die neue Version die noch in Arbeit ist hat auch einen 
Anschluss für die HAOYU TFTs.

Nur Zeit finden und Zeit haben und so, fertig ist das lange nicht... :-)

>> Wobei ich allerdings nicht sicher weiss, was Du mit "teensy" meinst,
>
> https://www.pjrc.com/teensy/

Genau das habe ich gemeint, zwischen einem AVR auf 16 MHz und einem 
Cortex-M4 auf 72 MHz gibt es doch enige Unterschiede. :-)
Angehängte Dateien:
OP #4721578
Lesenswert?

Rudolph schrieb:
> Ray M. schrieb:
>> dann hab ich mal die kabel zwischen teensy und display
>> auf ca. 5cm gekürzt
>> nun tut es ohne probleme ...
>
> Wie schnell läuft der SPI denn?
> Die 8 MHz die der AVR macht laufen erstaunlich stabil auch über
> hässlichere Verbindungen. :-)
>
> Aber um was sauberes zum Spielen zu haben bin ich dabei mir eine Platine
> zu schnitzen, im Bild der bisherige Stand auf einem VM800B35A montiert.
> Alternativ hat das Ding noch einen Folien-Leiter Anschluss für die TFTs
> von Riverdi und die neue Version die noch in Arbeit ist hat auch einen
> Anschluss für die HAOYU TFTs.

das schaut och super aus ...
schiebst du das ins forum oder ist das ein kundenprojekt ;)


> Nur Zeit finden und Zeit haben und so, fertig ist das lange nicht... :-)
>
>>> Wobei ich allerdings nicht sicher weiss, was Du mit "teensy" meinst,
>>
>> https://www.pjrc.com/teensy/
>
> Genau das habe ich gemeint, zwischen einem AVR auf 16 MHz und einem
> Cortex-M4 auf 72 MHz gibt es doch enige Unterschiede. :-)

an dem ist wohl was dran ... ;)
Gast #4721606
Lesenswert?

Ray M. schrieb:
> schiebst du das ins forum oder ist das ein kundenprojekt ;)

Das kann dann mal irgendwann ins Forum, das ist wie die ganze Nummer ein 
privat getriebenes Projekt-Anbanungs-Projekt. :-)
An dem nächsten Kunden-Projekt sitze ich gerade.

Ray M. schrieb:
> ach so, wozu wird beim ft800 eigentlich der int-pin verwendet ?
> wenn ich den nicht anklemme funktioniert es trotzdem

Ich zumindest benutze INT nicht, die Abfrage alle 20ms kostet ja soweit 
nichts und das Display reagiert gefühlt sofort.
Das geht glaube ich auch für andere Sachen, aber Touch-Events sind ja 
die offensichtlichste Anwendung und da brauche ich das nicht.

> pd schalte ich garnicht, den hab ich einfach auf +3.3V gelegt und tut
> auch ...

Den schalte ich wiederrum in der Initialisierung um, da sind die 
einzigen delay() in meinem Code drin.
OP #4721628
Lesenswert?

Rudolph schrieb:
> Ray M. schrieb:
>> schiebst du das ins forum oder ist das ein kundenprojekt ;)
>
> Das kann dann mal irgendwann ins Forum, das ist wie die ganze Nummer ein
> privat getriebenes Projekt-Anbanungs-Projekt. :-)
> An dem nächsten Kunden-Projekt sitze ich gerade.

... ;) ;) ;)


> Ray M. schrieb:
>> ach so, wozu wird beim ft800 eigentlich der int-pin verwendet ?
>> wenn ich den nicht anklemme funktioniert es trotzdem
>
> Ich zumindest benutze INT nicht, die Abfrage alle 20ms kostet ja soweit
> nichts und das Display reagiert gefühlt sofort.
> Das geht glaube ich auch für andere Sachen, aber Touch-Events sind ja
> die offensichtlichste Anwendung und da brauche ich das nicht.

touch benutze ich aktuell auch nicht ...

>> pd schalte ich garnicht, den hab ich einfach auf +3.3V gelegt und tut
>> auch ...
>
> Den schalte ich wiederrum in der Initialisierung um, da sind die
> einzigen delay() in meinem Code drin.

ja, da steht immer high 20ms low 20ms high 20ms ...
geht aber auch einfach mit 3.3 an pd ;)
OP #4721971
Lesenswert?

eine frage hab ich noch

jetzt hab ich noch eine sd-card am spi aber irgendwie kommen
die sich schon wieder ins gehege ;(

wenn ich miso vom display abziehe funktioniert die sd-card,
stecke ich miso vom display an, klemmt irgendwas, kein zugriff
mehr auf die sd-card

die kabel hab ich ganz kurz, wie gehabt ...

woran kann das liegen ?
kann ich irgendwo mit kondensatoren und/oder wiederständen was
sinnvolles machen ?
Angehängte Dateien:
OP #4722008
Lesenswert?

nein, der teensy ist 3.3V da brauch ich keinen, siehe foto

eigentlich sollte die verwendete gd2-lib zwischen sd und display
via cs umschalten, aber genau das scheint irgendwie nicht zu tun

ich mache mal einen test mit der ft800-lib ... eventuell macht
die es richtig und ich kann im code nachschauen ...
#4722012
Lesenswert?

Ray M. schrieb:
> eigentlich sollte die verwendete gd2-lib zwischen sd und display
> via cs umschalten, aber genau das scheint irgendwie nicht zu tun
>
> ich mache mal einen test mit der ft800-lib ... eventuell macht
> die es richtig und ich kann im code nachschauen ...

Besser wäre, mit einem Osziloskop oder Logic-Analyzer nachzuschauen, 
wenn vorhanden.
Gast #4722042
Lesenswert?

Es kann auch Logic sein, ich baue aktuell auch gerade einen SD-Sockel 
ein und habe da noch mal elektrisch etwas quer im Netz gestöbert.
Ein Hinweis in dem Zusammenhang war, das steht hier irgendwo auf 
MikroController.net, dass der SD-Treiber nach dem hoch ziehen von CS 
noch ein paar Mal mit der Takt-Leitung wackeln soll, damit die Karte 
MOSI wirklich in Tristate schaltet.

Ich weiss nicht, warum und was da dran ist, aber vielleicht mal nen 
Null-Byte senden ohne Chip-Select?

Der FT800 sollte nicht das Problem sein, in einem anderen Projekt hatte 
ich den am SPI mit einem ADC und einem DAC.
OP #4722233
Lesenswert?

./lib/FT800/FT_VM800P43_50.h:#define FT_SPI_CLK_FREQ_MIN    8*1000000
./lib/FT800/FT_VM800P43_50.h:#define FT_SPI_CLK_FREQ_MAX    21*1000000

und bei der gd2-lib
./GD2.cpp:  GDTR.wr(REG_PCLK_POL, 1);
./GD2.cpp:  GDTR.wr(REG_PCLK, 5);
./GD2.h:#define REG_PCLK             1057900UL
./GD2.h:#define REG_PCLK_POL         1057896UL
#4722250
Lesenswert?

Ray M. schrieb:
> aber es gibt ja eh nix schlechteres wie 4gb class 4

Naja, Class 2 eben, so eine, wie sie bei dir noch rumlag.

Zu deinem ursprünglichen Problem: probier es doch einfach mal mit 
deutlich geringerer (z.B. halber, oder 1/4) Clock-Rate aus.
Die Kabel sind zwar kurz, du hast aber eine relativ ungünstige 
Anordnung, da der Master in der Mitte sitzt, und SPI ja nicht terminiert 
ist...
OP #4722256
Lesenswert?

joop ...

jetzt wo es frei fliegend geht mach ich erst mal eine platine,
da sind die wege deutlich kürzer ... wenn das fertig ist
schau ich mal wie weit ich runter komme um auch alte sd-karten
zu nutzen, wenn nicht schreib ich in meine docu mind. class4
und gut ist ;)

danke für deine hilfe ...
#4722257
Lesenswert?

Ray M. schrieb:
> joop ...
>
> jetzt wo es frei fliegend geht mach ich erst mal eine platine,
> da sind die wege deutlich kürzer ... wenn das fertig ist
> schau ich mal wie weit ich runter komme um auch alte sd-karten
> zu nutzen, wenn nicht schreib ich in meine docu mind. class4
> und gut ist ;)
>
> danke für deine hilfe ...

Man kann die CLK ja auch umschalten, je nach dem mit welchem Slave man 
kommunizieren möchte... ;-)

Ich meinte eigentlich das Problem mit dem Display. Wenn die Signale auf 
dem SPI Bus nicht 100% sauber sind, kann es sein, dass das Display 
irgendwann mal Mist empfängt, und dann aussteigt.

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