mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik wieder mal ft800


Autor: Ray M. (ray_m)
Datum:

Bewertung
0 lesenswert
nicht 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
int16_t ft800Configure() {
    uint32_t chipid = 0;
    FTImpl.Init(FT_DISPLAY_RESOLUTION);
    delay(20);

    chipid = FTImpl.Read32(FT_ROM_CHIPID);

    if(FT800_CHIPID != chipid)
        return 1;

    FTImpl.SetDisplayEnablePin(FT_DISPENABLE_PIN);
    FTImpl.SetAudioEnablePin(FT_AUDIOENABLE_PIN);
    FTImpl.DisplayOn();
    FTImpl.AudioOff();
    return 0;
}

void setup() {
    ft800Configure();
    FTImpl.DLStart();
        FTImpl.Clear(1,1,1);
        FTImpl.ColorRGB(255,255,255);
    FTImpl.Finish();
}

void loop() {
    char buf[30];
    memset (buf, 0, sizeof(buf));
    snprintf(buf, sizeof(buf)-1, "%d", millis());
    FTImpl.DLStart();
        FTImpl.Clear(1,1,1);
        FTImpl.ColorRGB(255,255,255);
        FTImpl.Cmd_Text(240, 138, 31, FT_OPT_CENTER, buf);
        FTImpl.Cmd_Text(240, 198, 31, FT_OPT_CENTER, "...abrauchen...");
    FTImpl.DLEnd();
    FTImpl.Finish();
}

gd2-lib
void setup() {
    //  wakeup display (pd-pin)
    pinMode(4, OUTPUT);
    digitalWrite(4, HIGH);
    delay(20);
    digitalWrite(4, LOW);
    delay(20);
    digitalWrite(4, HIGH);
    delay(20);

    GD.begin(~GD_STORAGE);
    GD.ClearColorRGB(BLACK);
    GD.Clear();
    GD.swap();
}

void loop() {
    GD.ClearColorRGB(BLACK);
    GD.Clear();
    GD.cmd_number(240,  136, 31, OPT_CENTER, count);
    count++;
    GD.swap();
}

: Bearbeitet durch User
Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

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

Autor: Ray M. (ray_m)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: ray (Gast)
Datum:

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

Autor: Rudolph (Gast)
Datum:

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

Autor: Ray M. (ray_m)
Datum:

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

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

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

Autor: Ray M. (ray_m)
Datum:

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

Autor: Ray M. (ray_m)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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
Autor: Rudolph (Gast)
Datum:

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

Autor: Ray M. (ray_m)
Datum:

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

Autor: Ray M. (ray_m)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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
Autor: Joe F. (easylife)
Datum:

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

Autor: Ray M. (ray_m)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Joe F. (easylife)
Datum:

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

Autor: Ray M. (ray_m)
Datum:

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

Autor: Rudolph (Gast)
Datum:

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

Autor: Ray M. (ray_m)
Datum:

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

Autor: Ray M. (ray_m)
Datum:

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

Autor: Ray M. (ray_m)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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
Autor: Joe F. (easylife)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit welcher Frequenz betreibst du denn die SPI CLK?

Autor: Ray M. (ray_m)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Joe F. (easylife)
Datum:

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

Autor: Ray M. (ray_m)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Joe F. (easylife)
Datum:

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

Autor: Ray M. (ray_m)
Datum:

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

Autor: Joe F. (easylife)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Ray M. (ray_m)
Datum:

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

Autor: Rudolph R. (rudolph)
Datum:

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

Autor: Ray M. (ray_m)
Datum:

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

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.