.s-Files und Preprocessing

Gast #6805043
Lesenswert?

Hallo zusammen,

als stiller Mitleser habe ich hier schon sehr oft sehr hilfreiche Infos 
gefunden. Erstmal Danke dafür.

Ich bastele seit langem mal wieder an einem kleinen AVR Projekt und 
stolpere gerade über einen Fehler den ich nicht durchschaue.

Es geht um die Ansteuerung einer WS2812-Kette für die ich Falks Assembly 
aus seinem Night Rider Lauflicht-Projekt verwenden möchte. Ich verwende 
das Microchip Studio 7.

In den Compiler-Optionen (Symbols) definiere ich F_CPU=10000000UL

Folgendes Makro ist in Falks Assembly (ws2812.s):
1
#if (F_CPU < 6300000) || (F_CPU > 20000000)
2
  #error F_CPU out of range! Must be 6300000-20000000!
3
#endif

Beim kompilieren wird der entsprechende Fehler angezeigt.

Als Workaround funktioniert es wenn ich in der Assembly F_CPU definiere:
1
#define F_CPU 10000000UL
...unschön, aber in dem Mini-Projekt vertretbar...

Ich würde aber gerne verstehen, warum die Definition von F_CPU in der 
Assembly nicht bekannt zu sein scheint wenn sie global als Symbol 
definiert wird. Grundsätzlich funktioniert dies an anderen Stellen aber 
(mit utils/delay.h getestet).

Ich hoffe ich finde bei Euch Erleuchtung. ;-)

VG
Sebastian
Gast #6805114
Lesenswert?

> Ich war mir der Case-Sensitivität nicht bewusst.

Tja, dann darfst du jetzt selber mal nach den Optionen suchen,
die verhindern, dass die beim praeprozessieren erzeugten Dateien
geloescht werden.
In denen wirst du die Loesung deines Raetsels finden.
Oder auch nicht.
Persönliche Seite #6805257
Lesenswert?

Sebastian schrieb:
> In den Compiler-Optionen (Symbols) definiere ich F_CPU=10000000UL

Deine .S Datei wird aber garnicht vom Compiler (cc) angefasst sondern 
eher vom Präprozessor direkt an dem Assembler (as) übergeben. Du 
könntest also mal nach Assembleroptionen oder ähnlichem Suchen und dort 
das Symbol definieren. Oder das in einer globalen Headerdatei machen und 
die sowohl in den betroffenen .c als auch .S Dateien inkludieren.

Matthias

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