software:avr-gcc
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
software:avr-gcc [2013/08/06 22:16] – [Konstanten im Flash ablegen] olli | software:avr-gcc [2018/02/24 07:18] (aktuell) – [Links] olli | ||
---|---|---|---|
Zeile 63: | Zeile 63: | ||
</ | </ | ||
kann man dann den Linker anweisen, unbenutzte Sections zu entfernen, so dass das entstehende Binary kleiner wird. | kann man dann den Linker anweisen, unbenutzte Sections zu entfernen, so dass das entstehende Binary kleiner wird. | ||
+ | |||
+ | <WRAP important round> | ||
+ | // | ||
+ | Damit Interrupthandler nicht entfernt werden, müssen sie mit | ||
+ | <code c> | ||
+ | __attribute__ ((used)) | ||
+ | </ | ||
+ | gekennzeichnet werden. | ||
+ | </ | ||
+ | |||
+ | ====== PIN, PORT und DDR mit einem define anpassen ====== | ||
+ | Um einen Pin am AVR zu konfigurieren und zu benutzen, benötigt man die drei Variablen PINX, PORTX, DDRX. | ||
+ | Um dies konfigurierbar zu machen, kann man drei defines verwenden: | ||
+ | <code c> | ||
+ | #define SENSOR_DDR DDRA | ||
+ | #define SENSOR_PORT PORTA | ||
+ | #define SENSOR_PIN PINA | ||
+ | </ | ||
+ | Möchte man den Port z.B. von A auf B ändern, muss man drei defines anpassen. Mit einem Makrotrick kann man das vermeiden. PINX, PORTX, und DDRX werden so definiert: | ||
+ | |||
+ | <code c> | ||
+ | #define SENSOR_DDR __CONCAT(DDR, | ||
+ | #define SENSOR_PORT __CONCAT(PORT, | ||
+ | #define SENSOR_PIN __CONCAT(PIN, | ||
+ | </ | ||
+ | |||
+ | Mit | ||
+ | <code c> | ||
+ | #define SENSOR_PORT_LETTER A | ||
+ | </ | ||
+ | lässt sich dann der Buchstabe für alle drei Variablen anpassen. Das Makro %%__CONCAT%% ist dabei wie folgt definiert: | ||
+ | <code c> | ||
+ | #define __CONCATenate(left, | ||
+ | #define __CONCAT(left, | ||
+ | </ | ||
+ | Man kann diese Makros selbst definieren oder die Definition aus dem Header stdint.h benutzen, da man diesen sowieso fast immer inkludiert. | ||
===== Links ===== | ===== Links ===== | ||
- | * [[http:// | + | * [[http:// |
+ | * [[https://godbolt.org/|Compiler-Explorer]] | ||
+ | |||
software/avr-gcc.1375820209.txt.gz · Zuletzt geändert: 2013/08/06 22:16 von olli