Forum: Mikrocontroller und Digitale Elektronik PIC C18 C-Compiler Problem


von MAx (Gast)


Lesenswert?

Hallo!

mein problem:

beim GCC für den AVR funktionierten folgende aufrufe für meine
USART-Senderoutine usart_puts problemlos:

...

unsigned char string={"Hallo"};

usart_puts("Hallo");
usart_puts(string);

...

hier der code der USART-Senderoutine für einen String

void usart_puts(unsigned char *pointer)
{
     while(*pointer != 0){
        usart_putc(*pointer++);
     }
}

jedoch der C18 Compiler für den PIC hat hier probleme mit dem
usart_puts("Hallo") aufruf, ich musste den prototype auf void
usart_puts(const rom unsigned char *pointer) abändern damit dies wieder
funktionierte. Also brauche ich 2 verschiedne routinen
(usart_puts(unsigned char *pointer) und usart_puts(const rom unsigned
char *pointer)) was etwas lästig ist, da ich sonst den AVR Code nicht
umschreiben müsste. kann mir jemand vielleicht einen tip gebe, wie ich
das mit nur einer routine realisieren kann?

Danke und schöne grüße,
Max

von dds5 (Gast)


Lesenswert?

Bei den PIC18 Prozessoren wird RAM (*pointer) völlig anders angesprochen
als FLASH ("String").
Da wird wohl kein Weg daran vorbeiführen, zwei unterschiedliche
Routinen zu verwenden.

Dieter

von Carsten Steiner (Gast)


Lesenswert?

Und wenn du deine konstanten Strings wie "Hallo" auch in einer
Stringvariablen ablegst?

Carsten

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.