Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: pdflcd & print2() Kategorie: Programmierung (von André H. - 19.09.2004 1:42)
Als Antwort auf pdflcd & print2() von Thomas - 14.09.2004 20:55
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT_V2, OSOPT V3.0
Hallo Thomas,

 
> ich habe ein 4x20-Display am I²C-Bus und möchte dieses mit Hilfe der Funktion print2() benutzen.
> Mir ist nun jedoch aufgefallen, dass diese Funktion nur max. 30 Zeichen ausgibt.
>
> Kann ich die for-Schleife von bisher
> for i=0 ... s[31]-1
> auf Folgendes ändern?
> for i=0 ... s[41]-1
>
> Der Grund für diese �nderung ist, dass ich so für die Ausgabe aller 4 Zeilen nur ein- oder zweimal
> diese Funktion aufrufen müsste (statt 4mal). und somit ein wenig mehr Geschwindigkeit im
> Programm Programm herauskitzeln könnte.

Ich glaube, Du bringst hier einiges ducheinander !
Die Funktionen pcflcd.print() und pcflcd.print2() sind nur zur Ausgabe von Strings gedacht.
Ein String kann maximal 30 Zeichen fassen und kein einziges mehr !!
Das liegt an dem festen Aufbau eines Strings:
Byte 0 bis Byte 29 : Daten = Zeichen
Byte 30 : Immer 0
Byte 31 : Anzahl der (benutzten) Zeichen im String

In pcflcd.print2() wird genau dieses 31te Byte für die For-Schleife benutzt, damit diese "wei�",
wieviele Zeichen gesendet werden müssen.
Wenn Du die Funktion änderst, funktioniert Sie überhauptnichtmehr, da es dann zu Zugriffen
auf undefinierte Bereiche, bzw. Bereich anderere Variabeln im RAM kommt !
Wenn Du unbedingt mehr als 30 Zeichen am Stück ausgeben willst, mu�t Du statt
Strings Bytearrays und die Funktion pcflcd.printlength() verwenden.
Aber einen Geschwindigkeitsvorteil wird es Dir nicht bringen. Eher das Gegenteil.
Denn Du verplemperst sicher mehr Zeit mit dem Zusammensetzen der Strings, als
es an Gewinn bringt.
Denn, wenn Du statt 4x einen String nur zwei zum LCD-sendest, sparst Du sage und schreibe
ganze 2 Byte Traffic am Bus. Dem entgegen stehen 320 übertragene Datenbytes am Bus.
Kurz: Mit vier Strings werden 324Byte übertragen, mit zwei Strings 322 Byte.
Das wäre nichteinmal ein Prozent Unterschied.
Für das Zusammensetzen der Stings benötigst Du jedoch sicher ein vielfaches an Zeit !

Aber zur Info:
Es ist meinerseits bereits ein ASM-Treiber zu pcflcd.c2 geplant, welcher eine groÃ?e
Beschleunigung bringen wird, egal, ob nun ein Zeichen oder ein String geschrieben wird.

MfG André H.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten: