Forum: Mikrocontroller und Digitale Elektronik FT800 command list - Buffer


von Gerhardt S. (gerhardt)


Lesenswert?

Hallo liebe FT800 Freunde,
ich habe eine kurze Verständnis Frage zum FT800 bzw. FT811:
Also die Anzeige von Daten bzw. Text habe ich hin bekommen.
Das ist am Anfang ja auch leicht, da der cmdBuffer 0 ist (command list).

Der cmdBuffer ist ein Ringspeicher:
This FIFO is mapped at FT800 memory addresses 108000h (RAM_CMD) to 
108FFFh (RAM_CMD + 4095)

Wenn ich jetzt aber nur ein Zeichen auf dem Display hinzufügen möchte, 
müsste ich stets den letzten Pointer Wert des cmdBuffer wissen? Oder 
wird der Pointer nach jedem SWAP Befehl wieder aud 0 gesetzt ? Ich 
glaube nicht.
When a new list is to be created, the MCU will write the commands 
starting from the next available location.

Wenn nicht, was passiert wenn der Buffer das Ende erreicht?
Wenn man zum Beispiel jede Sekunde eine Temperatur anzeigen möchte, ist 
der Buffer irgendwann voll und fängt von vorne an.
Das riecht nach einem Problem. Könnte man nicht den Buffer immer wieder 
zurücksetzen?

Vielen Dank für eure Hilfe.
Gerhardt

von DirkF (Gast)


Lesenswert?

>>>Wenn man zum Beispiel jede Sekunde eine Temperatur anzeigen möchte,

Dann musst Du jede Sekunde die komplette Displaylist neu hochschieben.
So mache ich es......

von Klaus (Gast)


Lesenswert?

Gerhardt S. schrieb:
> was passiert wenn der Buffer das Ende erreicht?

Gerhardt S. schrieb:
> Der cmdBuffer ist ein Ringspeicher:

Ein Ringspeicher hat kein Ende. Ein Ring ist geschlossen.

Gerhardt S. schrieb:
> This FIFO is mapped at FT800 memory addresses 108000h (RAM_CMD) to
> 108FFFh (RAM_CMD + 4095)

Die nächste Adresse nach 108FFFh ist 108000h, ein Ring eben.

MfG Klaus

von Gerhardt S. (gerhardt)


Lesenswert?

Danke für die Info Dirk,
aber das ist ja wirklich suboptimal.
Wenn man jedesmal die komplette Command Liste erstellen muss.

Aber wie machst du das mit dem Overflow in der Command-List ?
Fragst du jedesmal den Pointer ab und machst ab da weiter?

Was würde passiern, wenn man nur einen Text-String als Update schickt 
und nicht den kompletten Display Inhalt?

Bin gespannt....

von DirkF (Gast)


Lesenswert?

Hallo Gerhard,
also ich habe die komplette Displaylist in eine State maschiene 
aufgeteilt.
Bei jedem MCU Zyklus wird ein Teil der Displaylist neu in den FT800 
geschrieben.
Am Ende kommt dann der Exe und Swap Befehl.
So wird mein Display ca. 4 mal pro Sekunde geupdated.

Über einen Überlauf habe ich mir noch keine Gdanken gemacht.

Wenn Du mit dem Update von nur einem Teil der DL weitergekommen bist, 
dann sag doch bitte hier Bescheid....

von DirkF (Gast)


Lesenswert?

hier  Beitrag "EVE FT800 Touch Funktion"
ist auch mein Code drin.....

von Gerhardt S. (gerhardt)


Lesenswert?

Habe zwischendurch 2 Möglichkeiten gefunden.
Beide sind sehr gut hier beschrieben:

FT800_Optimising screen updates

http://www.ftdichip.com/Support/Documents/AppNotes/AN_340_FT800_Optimising%20screen%20updates%20with%20Macro%20and%20Append.pdf

Viel Erfolg.

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.