Forum: Mikrocontroller und Digitale Elektronik wieder mal ft800


von Ray M. (ray_m)


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
}

: Bearbeitet durch User
von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Und das Video ging jetzt nicht kürzer...? Check mal die Spannungen und 
die Blockkondensatoren.

von Ray M. (ray_m)


Lesenswert?

Knut B. schrieb:
> Und das Video ging jetzt nicht kürzer...?

sorry

http://81.169.243.4/a.mp4

> Check mal die Spannungen

das versteh ich nicht ?

> und die Blockkondensatoren.

ich hab 100n zwischen +5v und gnd

: Bearbeitet durch User
von ray (Gast)


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 ?

von Rudolph (Gast)


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.

von Ray M. (ray_m)


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/

von Rudolph (Gast)


Angehängte Dateien:

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. :-)

von Ray M. (ray_m)


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 ... ;)

von Ray M. (ray_m)


Angehängte Dateien:

Lesenswert?

ach so, wozu wird beim ft800 eigentlich der int-pin verwendet ?
wenn ich den nicht anklemme funktioniert es trotzdem

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

damit verschwende ich weniger io's

: Bearbeitet durch User
von Rudolph (Gast)


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.

von Ray M. (ray_m)


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 ;)

von Ray M. (ray_m)


Angehängte Dateien:

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 ?

: Bearbeitet durch User
von Joe F. (easylife)


Lesenswert?

Hat du irgendwo einen Level-Shifter verbaut (zum Display / zur SD-Card)?
Erst neulich ist hier im Forum so ein Billig-Teil aufgetaucht, dass sich 
um CS# nicht schert, und dementsprechend MISO nicht freigab.

von Ray M. (ray_m)


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 ...

: Bearbeitet durch User
von Joe F. (easylife)


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.

von Ray M. (ray_m)


Lesenswert?

nein, mit der ft800-lib funktioniert das auch nicht,
es  dürfte was elektrisches sein ;(

von Rudolph (Gast)


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.

von Ray M. (ray_m)


Lesenswert?

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

ok, dass teste ich gleich mal ...

von Ray M. (ray_m)


Lesenswert?

Ray M. schrieb:
> Rudolph schrieb:
>> Ich weiss nicht, warum und was da dran ist, aber vielleicht mal nen
>> Null-Byte senden ohne Chip-Select?
>
> ok, dass teste ich gleich mal ...

leider bringt das nix ;(

von Ray M. (ray_m)


Angehängte Dateien:

Lesenswert?

man tausche die als erstes verwendete 2gb mini-sd gegen eine
modernere 4gb mini-sd hc karte und schon geht es ...

ich hol mir jetzt whisky ...

: Bearbeitet durch User
von Joe F. (easylife)


Lesenswert?

Mit welcher Frequenz betreibst du denn die SPI CLK?

von Ray M. (ray_m)


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

: Bearbeitet durch User
von Joe F. (easylife)


Lesenswert?

Ray M. schrieb:
> 2gb mini-sd

= class 2
21 MHz ist der vermutlich etwas zu flott.

> gegen eine
> modernere 4gb mini-sd hc

= class 4

von Ray M. (ray_m)


Lesenswert?

joop ... jetzt wo ich wegen deiner frage reingeschaut hab ...

aber es gibt ja eh nix schlechteres wie 4gb class 4, dass sind die
1€ karten von ebay ... ;)

: Bearbeitet durch User
von Joe F. (easylife)


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...

von Ray M. (ray_m)


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 ...

von Joe F. (easylife)


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.

: Bearbeitet durch User
von Ray M. (ray_m)


Lesenswert?

die idee mit dem umschalten je nach slave werde
ich mal testen, aber erst wenn ich es in eagle fertig hab ;)

von Rudolph R. (rudolph)


Lesenswert?

Der FT800 darf übrigens beim Init nur bis 11 MHz auf dem SPI haben, 
danach dann 30 MHz.

von Ray M. (ray_m)


Lesenswert?

joop, dass hab ich gelesen obwohl ich specs hasse und sie auch
ehrlich nicht zu ende gelesen hab ;)

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.