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
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.
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
Ingo S. schrieb: > printf("Hello World! \n\r"); printf() schreibt auf stdout, so ist es in C geregelt. Wo ist festgelegt, daß 1USART stdout ist? MfG Klaus
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
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
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
Hallo Ingo, Ingo S. schrieb: > Ich würde ganz gerne > einen Sring aus verschiednen Variabelen zusammen bauen. das geht wohl eher nicht mit "&" oder "+", sondern mit "strcat()".
Ingo S. schrieb: > Ich würde ganz gerne > einen Sring aus verschiednen Variabelen zusammen bauen. Wozu überhaupt zusammen basteln? Zu nach irgendwohin schicken?
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
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?
Das geht. Allerdings gegenüber früher viel Quelltext. Wollte es eigentlich nur effektiver gestalten.
Kann mir nicht vorstellen das irgendwas mit Stringverabeitung (printf, strcat ...) effektiv genannt werden darf ;-) Schreib lieber eine eigene Funktion, die die Teilstrings wegschickt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.