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