.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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.