C18 -> XC8 Migration

OP #4934612
Lesenswert?

Hallo Zusammen,

langsam aber sicher würde ich meine C18 Programme auf den XC8 Comiler 
migrieren. Bevor ich nun recht viel Zeit investiere habe ich ein paar 
kleine Fragen.

1. Gibt es im XC8 keine Funktionen wie im C18?
Im Netz habe ich hier viele unterschiedliche Meinungen gefunden. Das 
beschriebene Dokument Libary ist im doc-Verzeichnis meiner Installation 
nicht vorhanden.

2. Funktionen aus C18 in XC8 nutzen
Kann ich funktionen die ich unter C18 erstellt habe om xc8 weiter 
nutzen? Hierüber gibt das Netz ebenfalls sehr unterschiedliche Infos 
heraus. Es wäre sehr schade wenn ich diese Funktionen neu erstellen 
müsste.

Welche Optionen muss ich bei der Installtion beachten? Ich möchte mir 
nur ungern meine C18 Einrichtung zerstören?

Viele Grüße
Ingo
#4934677
Lesenswert?

1. Die peripheral lib wurde nur bis xc8 1.34 automatisch mit 
installiert. Danach ist ein separater Download und Installation 
erforderlich.
Bei vielen PICs funktioniert das dann aber trotzdem nicht mehr, weil die 
Header "aufgeräumt" würden.
Der dann vorhandene Source code kann aber auf jeden Fall verwendet 
werden.

2. Natürlich kann man eigene Funktionen weiterhin verwenden. Geringe 
Anpassungen könnten natürlich erforderlich sein, wenn diese zu C18 
spezifisch wären.

3. Bei der Installation kann nichts schief gehen, wenn du die 
angebotenen Optionen durchliest und nicht alles einfach bestätigt.
OP #4934908
Lesenswert?

Danke. Das hat funktioniert.

Bin schon am Testen. Weißt Du auch warum der printf Befehl im C18 
Compiler wunderbar funktioniert hat und im XC8 nicht.
1
        puts1USART("Hello World! \n\r");
2
        printf("Hello World! \n\r");


Mit puts1USART funktioniert es. mit printf leider nicht. Init kann ich 
mal ausschließen.

Ich habe mal im Netz gesucht da gehen die Meldungen bis ins Jahr 2012 
zurück. Ziemlich frustrierend am Anfang.

Ingo
OP #4935068
Lesenswert?

Hallo Klaus,

vielen Dank für die Antwort. Das ist wohl richtig das ist sicherlich in 
keinem Dokument festgelegt. Der Vorgänger C18 sowie eine Vielzahl 
anderer C-Compiler wie Keil usw. hat dies ohne Beanstandung so gemacht.

Ich habe es jetzt so umgesetzt.
1
sprintf(str_Temp, "%.1c", unc_Taste);
2
puts1USART(str_Temp);
3
puts1USART("\r\n");
4
        
5
sprintf(str_Temp, "%.3u", LATD);
6
puts1USART(str_Temp);
7
puts1USART("\r\n");

Viele Grüße
Ingo
Gast #4935190
Lesenswert?

Ingo S. schrieb:
> Der Vorgänger C18 sowie eine Vielzahl
> anderer C-Compiler wie Keil usw. hat dies ohne Beanstandung so gemacht.

Das kann natürlich nicht wirklich funktionieren. Woher soll der Compiler 
wissen, an welchem UART dein Terminal hängt und wie das zu konfigurieren 
ist.

Hier steht, wie man eine eigene Ausgabefunktion für stdout definieren 
kann. Dann kann man printf direkt benutzen

http://microchipdeveloper.com/faq:29

MfG Klaus
OP #4936482
Lesenswert?

Hi Volker,

da gebe ich Dir recht. Ich brauche ihn auc nur sehr selten Hin und 
wieder war der eben sehr praktisch.

Mein Fähigkeiten bei Strings sind etwas eingetrübt. Ich würde ganz gerne 
einen Sring aus verschiednen Variabelen zusammen bauen.

1
dt.Tag
2
dt.Monat
3
dt. Jahr
4
dt.Stunden
5
dt.Minuten
6
dt.Sekunden
7

8
str_DateTime = dt.Tag & "." & dt.Monat & ".20" & dt.Jahr & " " & dt.Stunden & ":" & dt.Minuten & "." & dt.Sekunden
9

10
//Hier ein Beispiel: 
11
//15.03.2017 10:02:17

Grüße
Ingo
#4936563
Lesenswert?

Ingo S. schrieb:
> Weil ich einen fremdprogramn genau diesen String benötige.
>
> Der print geht nur noch bedingt und mit sprintf kommen komische Zeichen.
> Parameter stimmmen einzeln kommen sie korrekt an.
>
> Was ist für einen solchen String der beste Weg.
>
> Ingo

Das Fremdprogramm läuft doch nicht auf deinem Kontroller.
Warum erst umständlich zusammenbauen. Kann man doch einfach nacheinander 
abschicken, oder?

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