Gibt es eine Möglichkeit das beide erkannt werden ? Eventuell durch ein include ? Ich habe nämlich "altmüll" code gefunden wo noch (_ATtiny85_) drin steht. Ich wollte nich alle von Hand(oder per Script) ändern. Thx, Jörg
Jörg Esser schrieb: > Ich habe nämlich "altmüll" code gefunden wo noch > (_ATtiny85_) drin steht. AVR-GCC hat dies noch nie generiert, aber vielleicht soll der Code ja auch für andere Compiler benutzbar sein? Ich glaube, IAR generiert entsprechende #define-Werte ohne "AVR_" drin.
1 | #ifdef __AVR_ATtiny85__
|
2 | #ifndef _ATtiny85_
|
3 | #define _ATtiny85_
|
4 | #endif
|
5 | #endif
|
Peter II schrieb: >
1 | > #ifdef __AVR_ATtiny85__ |
2 | > #ifndef _ATtiny85_ |
3 | > #define _ATtiny85_ |
4 | > #endif |
5 | > #endif |
6 | >
|
Aufpassen. Die Rauten müssen bei Präprozessorbefehlen immer das erste Zeichen in der Zeile sein.
Simon K. schrieb: > Aufpassen. Die Rauten müssen bei Präprozessorbefehlen immer das erste > Zeichen in der Zeile sein. Nein, schon lange nicht mehr. Es ist lediglich gefordert, dass davor höchstens white space steht. Aber aufpassen an anderer Stelle: Makros, die mit zwei Unterstrichen beginnen, sind reservierte Bezeichner. Wenn schon also:
1 | #if defined(__AVR_ATtiny85__)
|
2 | # define IS_ATTINY85
|
3 | #elif defined(__ATtiny85__)
|
4 | # define IS_ATTINY85
|
5 | #else
|
6 | # error "Unknown MCU type"
|
7 | #endif
|
8 | |
9 | ...
|
10 | |
11 | #ifdef IS_ATTINY85
|
12 | ...
|
13 | #endif
|
Jörg Wunsch schrieb: > Wenn schon also: Ich glaube, du hast den OP vielleicht missverstanden. Ich denke er will die "andere Richtung" haben, also das _ATtiny85_ nicht zusätzlich erkennen, sondern zusätzlich generieren, weil im Code solche Abfragen
1 | #ifdef defined(__ATtiny85__)
|
vorhanden sind, und er die nicht ändern will.
Stefan Ernst schrieb: > sondern zusätzlich generieren Genau das ist aber nicht gestattet, weil es sich bei
1 | __ATtiny85__
|
um einen reservierten Namen handelt.
Um es nochmal genauer zu erklären. Ich denke es gibt von Atmel noch mehr Codeschnipsel die alle mit so Makros wie #ifdef defined(_ATtiny85_) anfangen weil sie eventuell an IAR zugeschnitten sind? Es wäre toll so eine #include Datei zu haben die aus Makros wie obigem besteht.
1 | #if defined(__AVR_ATtiny85__)
|
2 | # define IS_ATTINY85
|
3 | #elif defined(__ATtiny85__)
|
4 | # define IS_ATTINY85
|
5 | #else
|
6 | # error "Unknown MCU type"
|
7 | #endif
|
8 | |
9 | ...
|
10 | |
11 | #ifdef IS_ATTINY85
|
12 | ...
|
13 | #endif
|
Könnte doch grundsätzlich klappen oder? Ob das was für die Profis, ist ist eine andere Frage ;) oh ich glaube da gibs was von atmel ? http://www.ece.cmu.edu/~ece549/spring08/team6/healthnet/avr/rdk230wpan-1.5/src/inc/mcu_types.h Gruss, Jörg
So nochmal genauer gekuckt und festgestellt das es in der Datei mcu_types.h genau anders herum sein müsste also so:
1 | #if defined(__AVR_ATtiny85__)
|
2 | # define __ATtiny85__ (__ATtiny85__)
|
3 | #endif
|
Gruss, Jörg
Jörg Esser schrieb: > Ich denke es gibt von Atmel noch mehr Codeschnipsel die alle mit > so Makros wie #ifdef defined(ATtiny85) anfangen weil sie eventuell > an IAR zugeschnitten sind? Ja, nicht unwahrscheinlich. Atmel war sehr lange Zeit komplett auf IAR fixiert bezüglich AVR-Beispielcode.
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.