Forum: Mikrocontroller und Digitale Elektronik include pfade für Libraries in Code Red setzen


von Andreas W. (andy_w)


Lesenswert?

Hallo,
ein ähnliches Thema gab es schon, aber auch den Hinweis, ein neues 
anzulegen, weil es schon älter als 6 Monate ist.

Ich habe gerade die Code Red IDE neu eingerichtet und konnte inzwischen 
auch die Testbeispiele für den LPCXpresso 1769 zusammen mit dem Base 
Board compilieren und ausprobieren.

Nun wollte ich natürlich auch etwas eigenes ausprobieren und habe ein 
neues Projekt in der gleichen Wordbench angelegt. Aber er findet dort 
die include-Dateien nicht, die in einem Beispielprojekt, das ich als 
Vorbild nehme, durchaus gefunden werden. In den Projektproperties habe 
ich in den Library Paths und auch die Libraries unter MCU-Linker -> 
Libraries genauso gesetzt wie im Beispielprogramm. Aber trotzdem werden 
die includes nicht gefunden. Die include-Zeilen in der Source sind 1:1 
kopiert, daran kann es eigentlich auch nicht liegen.

Die Doku von der Code Red IDE hilft da leider gar nicht weiter, ich 
kenne das Konzept davon auch nicht, habe bisher nur Konsolenprogramme 
mit Visual C gemacht, da kann man einfach unter Projekte -> "add" die 
passenden Files zum Projekt hinzufügen und dann werden die auch 
gefunden...

Ich habe versucht, die Projektproperties genau so zu setzen wie auch im 
Beispielprogramm, das ist bei den vielen Menüpunkten nicht ganz einfach 
zu garantieren, daß nicht doch irgendwo noch kleine Unterschiede sind.

Gibt es irgendwo eine Art Tutorial, das einem gerade so etwas zeigt, wie 
man ein eigenes Projekt für den LPC1769 anlegt und dann auch dessen 
Libraries dazu nutzen kann?

Gruß

von Gerhard G. (g_g)


Lesenswert?

Hallo,


meine Version;

Version: LPCXpresso v4.2.3 [Build 292] [30/05/2012]

Ich habe ein neues Projekt nach deinem Schema angelegt und getestet. 
Alles ok. Die Grundfunktionen sind alle da. Auch die CMSISv2p00_LPC17xx. 
Wenn du zum Beispiel GPIO, SPI,usw. benötigst, dann bist du gezwungen, 
das händisch einzufügen. z.B. #include "ssp.h"

Doku: LPCXpresso Getting started with NXP LPCXpresso

Headerdateien, das findest du hier: 
http://ics.nxp.com/support/lpcxpresso/

von Andreas W. (andy_w)


Lesenswert?

Hallo,
wo die Headerdateien sind, die ich brauche, wußte ich schon, aber es 
gibt nicht nur Einträge für den Linker, sondern auch für C/C++. und dort 
war noch kein Eintrag. Irgendwie habe ich die Libs dort eintragen können 
und dann wurde auch endlich übersetzt. Und das, obwohl im Beispielpojekt 
jede Library doppelt drin war, einmal in {} mit Pfad ausgehend von dem 
Workspace und dann noch einmal ohne {} und nur der Ordnername der Libs. 
Ich habe nur die Einträge mit {} beim Hinzufügen bekommen, die ohne 
müßte ich händisch eintippen, keine Ahnung, wozu das gut ist und wie man 
sonst an den Eintrag kommt.

Neues Problem: das Programm läuft viel langsamer als das 
Beispielprogramm, es ist oled_periph, das auch das OLED-Display 
anspricht und dabei auch Timerinterrupts nutzt. Aber schon der Aufbau 
der konstanten Texte vor der Schleife in main ist schnarchlangsam, 
obwohl noch gar kein Delay aufgerufen wird. Schließlich habe ich 
testweise die komplette Source von main.c in mein Testprojekt kopiert, 
so daß genau das gleiche Programm läuft. Das Beispielprogramm läuft 
schnell und meins langsam... Ich wüßte nicht, daß da irgendwo 
irgendwelche Takte anders eingestellt werden, zumindest nicht in der 
Source. Oder gibt es da in den Projekteinstellungen noch Möglichkeiten? 
Beide Projekte sind im Debugmodus und soweit ich sehen konnte, auch mit 
gleichen Compileroptionen.

Ich weiß noch nicht, ob nur das OLED-Display so langsam wird oder der 
Prozessor selber im Schneckentempo vor sich hindümpelt, da gibt es noch 
ein Beispielprojekt, das mehrere LEDs als Lauflicht betätigt, mal sehen, 
ob das auch langsamer läuft.

Gibt es eine Möglichkeit, ein vorhandenes Projekt 1:1 inclusive aller 
Einstellungen in ein neues in gleichen Workspace zu übernehmen und dann 
dort nur die Source zu ändern, so daß man die sonst kritischen 
Einstellungen, von denen man noch nichts weiß, schon alle richtig sind?

Gruß

von Gerhard G. (g_g)


Angehängte Dateien:

Lesenswert?

Hallo,

Bei einem neuen Projekt fehlen die spezifischen Includes-Ordner für den 
LPC1769. Du solltest dir ein gut laufendes Example-Projekt runter 
laden/testen und sichern. Dann kopierst du mit der rechten Maustaste das 
Proekt und fügst es mit Paste wieder ein. Da wirst du natürlich nach 
einen neuen Namen gefragt.

Was dir im einzelnen fehlt sind die Includes-Ordner mit den
Dateien(siehe Anhang).

und nicht vergessen:

int main (void)
{
  /* SystemClockUpdate() updates the SystemFrequency variable */
  SystemClockUpdate();
  .....

Dann stimmt der Takt. Aber nur bei einem Projekt aus einem lpc1769 
Projekt!
Kein lpc1768, der läuft etwas weniger schnell.


Gruß G.G.

von Andreas W. (andy_w)


Lesenswert?

Hallo,
das Übernehmen eines anderen Beispielprojektes hat bei mir inzwichen 
auch geklappt: den ganzen Ordner mit dem Projekt kopieren und dann die 
Kopie in den Workspace importieren.

Ob die LEDs auch langsamer laufen, konnte ich nicht feststellen, es 
wurde eine Variable nicht gefunden, obwohl die Include-Datei dabei war. 
Seltsam war, daß ich lediglich die Source in main.c gegen das 
LED-Programm getauscht hatte und im vorherigen die gleiche Variable auch 
benutzt und gefunden wurde - beim selben (nicht nur dem gleichen) 
Projekt...

Das kopierte Projekt läuft wieder schnell, auch, wenn ich die Source in 
main.c austausche. Die Funktion SystemClockUpdate() ist aber in keinem 
Beispielprogramm vorhanden und sie wird auch nicht gefunden. Sie ist 
auch offensichtlich in keinem include-File vorhanden, die Suchfunktion 
über den ganzen Workspace hat auch nur die probeweise in main 
hingeschriebene Funktion gefunden, sonst nichts.

Wo z.B. die PLLs initialisiert werden, habe ich noch nicht gefunden, 
ebenso konnte ich auch die Rätsel noch nicht klären, warum manche 
Dateien immer noch nicht ins Projekt mit eingebunden werden, obwohl ich 
die für C/C++->"include" und für den Linker eingetragen habe. Irgendwie 
ist die ganze Settinggeschichte sehr undurchsichtig...

Solange es mit einem kopierten Beispielprogramm funktioniert, ist es ja 
gut, ich befürchte nur, daß ich irgendwann an einen Punkt komme, wo ich 
die Eigenschaften von mehreren Beispielprogrammen zusammen brauche und 
die Beispielprogramme jeweils nur eine Teilmenge initialisieren.

Gruß

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.