GLCD Variablenausgabe

Gast #1580039
Lesenswert?

Moin zusammen,

Pardon, aber ich habe gerade eine Knoten im Hirn.
Folgendes Problem:
PIC 18F / C18 /GLCD mit UC1601
In einer Ausgabefunktion für mein GLCD wird bisher immer auf
Texte im ROM(FLASH) zugegriffen:
void lcd_text(unsigned char left, unsigned char top, unsigned char font, 
rom unsigned char *str)
z.B.:
lcd_text(6,29,FONT_NINE_DOT,"128x64");
Beí einer Variablen habe ich nun ein Problem.
Es gibt ja viele schöne Stringkonvertierungsfunktionen,
die mir aber offensichtlich nicht recht helfen und
ich habe bei der Pointerarithmetik scheinbar
ein grosses Verständnisproblem.
Das beim PIC der Unterschied zu machen ist zwischen
RAM- und ROM-Pointern, ist mir aber bekannt.

Könnte bitte jemand, der netten C-Gurus einem Verzweifelten
auf die Sprünge helfen ?

Besten Dank schon einmal

Didi
#1580048
Lesenswert?

C-Amnesie schrieb:

> void lcd_text(unsigned char left, unsigned char top, unsigned char font,
> rom unsigned char *str)
> z.B.:
> lcd_text(6,29,FONT_NINE_DOT,"128x64");
> Beí einer Variablen habe ich nun ein Problem.
> Es gibt ja viele schöne Stringkonvertierungsfunktionen,
> die mir aber offensichtlich nicht recht helfen und
> ich habe bei der Pointerarithmetik scheinbar
> ein grosses Verständnisproblem.
> Das beim PIC der Unterschied zu machen ist zwischen
> RAM- und ROM-Pointern, ist mir aber bekannt.

Das erste was du machen musst:
Sieh in deiner Funktionssammlung nach, ob es eine zweite 
String-Ausgabefunktion gibt, die keinen rom Pointer als 4.tes Argument 
hat.
Wenn nicht, dann musst du dir eben eine machen. Die Implementierung 
deiner jetzigen lcd_text wird dir dabei helfen und kann als Grundlage 
dienen.


erst dann bist du in der Lage, mit diversen Stringkonvertierfunktionen 
dir einen String zusammenzubauen, der eben nicht im rom residiert, und 
mit dieser neuen Funktion ausgegeben werden kann.
Gast #1580187
Lesenswert?

Besten Dank !
Ich hatte schon herumprobiert, wollte gerne aber
auch etwas verstehen:
Funktion auf RAM-pointer geändert
void lcd_text(unsigned char left, unsigned char top, unsigned char font,
unsigned char *str)
Meine Variable ist an erster Stelle im Array buf[]
-> lcd_text(6,29,FONT_NINE_DOT,(unsigned char *) buf);
und NICHT lcd_text(6,29,FONT_NINE_DOT,(unsigned char *) buf[0]);
 Das war ein Teil des Nachholbedarfs in Sachen Pointer.

Läuft also jetzt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren