Forum: Mikrocontroller und Digitale Elektronik .s-Files und Preprocessing


von Sebastian (Gast)


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

von GelegentlicherGasBenutzer (Gast)


Lesenswert?

Es gibt fuer den gas ".s"-Files und ".S"-Files.
Probiere mal die letzteren...

von Sebastian S. (sebis)


Lesenswert?

Typo im Beitrag. Der Dateiname ist "ws2812.S". Ich war mir der 
Case-Sensitivität nicht bewusst. Sorry

von GelegentlicherGasBenutzer (Gast)


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.

von Μαtthias W. (matthias) Benutzerseite


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

von Sebastian S. (sebis)


Angehängte Dateien:

Lesenswert?

Hi Matthias,

vielen Dank! Das war es. Ich hatte die Definition nur unter [1] 
eingefügt. Wenn ich unter [2] "-DF_CPU=10000000UL" anhänge, läufts! 
(siehe Screenshot)

Viele Grüße
Sebastian

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.